web-dev-qa-db-ja.com

なぜこんなに低いSMB転送スループットが見られるのですか?

わかりました、タイトルが意味するより少し物語に少し多くがあります。

背景と環境:いくつかのTBを古いUbuntuサーバーから新しいWindows2012サーバーにSMB経由でコピーしています(技術的には、これは汎用ハードウェアですが、これらはこのあたりのサーバーです)。ギガビットLANであり、古いUbuntuボックスには結合されたインターフェイスがあります。Ubuntuサーバーには2枚のRosewill PCI-e 1xイーサネットカードがあり、Windowsサーバーには1枚の適度に優れたPCIIntelイーサネットカードがあると思います。

移行先コンピューター(Windowsサーバー)は、4x2TBドライブを超えるパリティを持つストレージプールを実行しています。 Microsoftの新しいReFSを実行しています。ソースコンピューター(Ubuntuサーバー)はソフトウェアRAIDミラーを実行しています。古き良きEXT4を実行しています。

2つのサーバーは、単一のギガビットスイッチを介して実行されています。私は、ソース(Ubuntu)コンピューターの結合を改善せずに切断することを試みました。

問題:他のコンピューターからWindowsサーバーに適度な速度で転送するのに問題はありません。他のコンピューターは50-80MB/sを問題なく保持できますが、そのUbuntuサーバーからの転送は20MB/s以下で最大になります。 20MB /秒で4+ TBには長い時間がかかり(2。3日程度)、ボトルネックがどこにあるかを把握するために何ができるのか疑問に思っています。

症状:両方のコンピューターのCPUは非常に最小限であり、確かに法外にビジーではありません。両方のコンピューターのハードドライブはアクティブですが、いっぱいにはなりません。少なくともUbuntuサーバーではCPU IOwaitはほぼ0%です。

私は35秒間Wiresharkトレースを実行し(おそらくすべてのACKが新しいパケット用であることを確認するのに十分な長さ)、予期していなかったことがかなりあることに気づきました。 (1)WindowsからUbuntuへのACK(および一部のSMBパケット)のチェックサムはありませんでした。ただし、Wiresharkは、これは「IPチェックサムオフロード」が原因である可能性があると主張しています。わかりました。そこにはかなり素敵なカードがあります。ネットワークカードがチェックサム計算を実行できる可能性があると思います。問題ありません。次に進みます...(2)「TCPACKが表示されないセグメントです。」これに問題があります。ACK数は私が知ることができる範囲内であり、これらのメッセージの巨大なブロックがしばしばあります。おそらくWiresharkは遅すぎますか?

概要:転送速度が低下し(ギガビットイーサネットで20MB /秒)、理由がわかりません。 Wiresharkは、WindowsがUbuntuから送信されたことのないものをACKしていると主張しています。

推測:私の最初の推測では、安価なRosewillカードが圧倒されています。私の2番目の推測は、一方または他方のソフトウェアRAIDのようなものが、やるべきことが殺到しているということです。

10
Andy

パフォーマンスのギャップは、Samba(これがまだデフォルトであるかどうかはわかりません。長い間使用されていました)がデフォルトの読み取りおよび書き込みソケットバッファーサイズ1024バイトで構成されている場合の一般的な経験と一致します。

私はこれをLinuxやMacのマシンで頻繁に見ていました。うまくいけば、それはまだそうではありません。

Sambaの構成ファイルにはソケットオプション引数があり、ここで読み取りおよび書き込みソケットバッファーサイズを設定できます。両方を8192バイト(8 KiB)に設定することをお勧めします。 4KBまたは8KBはよく似ていますが、ギガビットリンクではテストしていません。

また、単一のTCP接続がボンディングされたリンクの恩恵を受けることを期待しないでください。トラフィックはほとんどの場合リンクの1つを通過します。そうしないと、多くのアウトオブ-になります。処理するパケットを注文します。したがって、複数のクライアントにサービスを提供する場合にのみ負荷分散のメリットを期待します。それでも、さまざまなボンディングモードを調べて、少なくとも「モード4」(IEEE 802.3ad)ボンディングには基本的に、送信するスレーブインターフェイスを決定する2つの送信ハッシュモード。レイヤー2ハッシュ(デフォルト)とレイヤー3ハッシュがあります。ゲートウェイ経由でデータの大部分を送信する場合、レイヤー2ハッシュはうまく分散されません。 、ゲートウェイのMACアドレスは同じになるため、代わりにレイヤー3の使用を検討してください。

1
Cameron Kerr

私はかつて1台のUbuntuコンピューターに2枚のイーサネットカードを持っていましたが、何らかの理由で正しく機能しませんでした-どちらも同じパケットを求めて争っていたので、他のネットワークカードをつかんだかどうかによっては、返事が返ってくることがありました。パック。それは奇妙でした。どういうわけか設定を間違えていたに違いありませんが、うまくいったと思いました。もちろん、カードには一意のIPアドレスがありました。

とにかく、それを除外するために、ネットワークに接続されたマシンで1枚のイーサネットカードだけで試してみるのは簡単です。

0
Will