先日のSeagate Exos X12に関する記事では、2台のPCを使用してGigabit LAN(1000Mbps)経由でファイル共有を行い、その際のコピー速度などについて書きました。
その後、Windowsでのファイル共有速度をアップさせるSMBマルチチャンネルを試してみたので、今回はその方法などについて書いてみたいと思います。
目次
SMBマルチチャンネルの仕組みと条件
SMBマルチチャンネルとは複数のNICを束ねる機能
出典:www.amazon.co.jp
Windows OSで使われているファイル共有のネットワークプロトコル、SMB(Server Message Block)。この通信を複数のNIC(Network Interface Card)を束ね、同時に(分散して)行うことでファイルの読み書きをスピードアップさせる機能が、SMBマルチチャンネルです。使用できるNICは最大4つとなっています。
SMBマルチチャンネルを行うための条件
出典:www.amazon.co.jp
SMBマルチチャンネルを行うためには、以下のような条件を満たす必要があります。
受信作業を、複数のCPUコアで分散することで、処理を高速化する技術です。
準備をしよう
今回は、普段ファイル・メディアサーバーとして使用しているスモールファクター ベアボーンPCのShuttle DS437Tと、クライアントとしてメインで使用している自作PCの2台でSMBマルチチャンネルを行います。それぞれの主なスペックは次のようなものです。
GIGABYTE GZ-X1BPD-100 出典:www.amazon.co.jp
OSのバージョンはWindows 10 Home 64bit
出典:www.amazon.co.jp
上記の2台のPCは、OSがどちらもWindows 10 Home 64bit。なので、前述の条件のうち「① サーバーとクライアントのどちらも、OSがWindows 8 / Windows Server 2012以降である」は既に満たしています。
USB LANアダプターを2つ用意して接続
BUFFALO LUA4-U3-AGTE-NBKを購入
BUFFALO LUA4-U3-AGTE-NBKを購入しました。説明は不要かと思いますが、PCのUSB 3.0ポートに接続することで、Gigabit(1000Mbps)の有線LAN通信が可能となるアダプターです。
手元のBUFFALO LUA4-U3-AGTも使用
BUFFALO 有線LANアダプター LUA4-U3-AGT Giga USB3.0対応 【Nintendo Switch動作確認済み機器】
6,240円(税込)
出典:www.amazon.co.jp
さらに、手元にあったBUFFALO LUA4-U3-AGTも使用します。上記のBUFFALO LUA4-U3-AGTE-NBKの前モデルで、2015年6月購入です。ただし、チップはどちらもASIX AX88179なので、基本性能は変わりません。
LANケーブルで直結
これらのLANアダプターを、前述の2台のPCに取り付けて、カテゴリ6のLANケーブルで直結しました(Gigabitでの通信は、カテゴリ5e以上なら可です)。
直結なので、IPアドレスはDHCPではなく、手動で設定しています。
サンワサプライ カテゴリ6UTP LANケーブル 3m レッド LA-Y6-03R
475円(税込)
出典:www.amazon.co.jp
これで、前述の条件のうち「② サーバーとクライアントのどちらも、複数のNICを搭載している」を満たしました。
LANのレイアウトを簡単に示すと、以下のようになります。
各デバイスの写真の出典:www.amazon.co.jp
出典:www.amazon.co.jp
2つのUSB LANアダプターは、それぞれをスイッチングハブに接続しても、もちろん可です。
ただ、現在使用しているスイッチングハブのポートに余りがなかったこと、LANケーブルはなるべく少なくしたいこと、そしてSMBマルチチャンネルで接続するのが2台のPCのみということで、今回は直結にしたというわけです。
全てのNICでRSSを無効にする
これは、サーバーのDS437Tの画面で説明します。
NICのRSS対応状況を確認
まずは、NICのRSSの対応状況を知る必要があります。NICによって、RSSに対応しているもの、対応していないものがあるからです。
Windows PowerShell(管理者)から、次のコマンドを実行します。
[code lang=”text”]Get-SmbClientNetworkInterface[/code]
すると、次のような画面になります。
「RSS Capable」のところは、「Realtek PCIe GBE」の方が「True」、「ASIX AX88179 USB3.0」の方が「False」になっています。このように揃っていない状態では、SMBマルチチャンネルはできません。
RSSを無効にする
コマンドプロンプト(管理者)から次のコマンドを実行します。
[code lang=”text”]netsh int tcp set global rss=disabled[/code]
「OK」と表示されれば、RSSが無効になります
確認したい場合は、次のコマンドを実行します。
[code lang=”text”]netsh int tcp show global[/code]
「Receive-Side Scaling 状態」が「disabled」であれば、RSSが無効になっています。
再度、NICの「RSS Capable」を確認
先程と同様、Windows PowerShell(管理者)から、次のコマンドを実行します。
[code lang=”text”]Get-SmbClientNetworkInterface[/code]
今度は、「RSS Capable」がどちらも「False」になっています。この状態になればOKです。
クライアントの自作PCでも同様に設定しようとしたところ、2つのNIC(オンボードの「Intel I219-V」、USB LANアダプター「ASIX AX88179 USB3.0」)のどちらも、「RSS Capable」は「False」でした。
USB LANアダプター「ASIX AX88179 USB3.0」は、サーバーのDS437Tで使用しているUSB LANアダプターと同じチップなので分かっていましたが、オンボードの「Intel I219-V」もデフォルトで「False」だったので、手間が省けましたね。
これで、最後の条件「③ 使用する全てのNICで、RSSの有効 / 無効を揃える」を満たしました。
転送速度を測定
比較のため、まずはGigabit LAN(1000Mbps)で測定し、その後にSMBマルチチャンネルで測定しました。
測定方法は、サーバーのDS437Tに接続したUSB HDDを、クライアントの自作PCからネットワークディスクとしてマウントしたうえでの、以下のテストになります。
自作PCのM.2 SSD(SAMSUNG 970 PRO 512GB)の転送速度は、CrystalDiskMark 6.0.2(1GiB 5回)のシーケンシャルリードが3448.9MB/s、同ライトが2351.24MB/sという爆速なので、ボトルネックになることはありません。
Gigabit LANでの測定
CrystalDiskMark 6.0.2のベンチマーク
予想どおりGigabit LANがボトルネックとなり、シーケンシャルリードが113.5MB/s、同ライトが120.8MB/sという、ほぼGigabit LANの上限速度(125MB/s)となる結果でした。
10GBダミーファイルの書き込み
書き込みは1分30.00秒で終了し、速度は約113MB/sとなりました。やはり、Gigabit LANがボトルネックになっていますね。
SMBマルチチャンネルでの測定
CrystalDiskMark 6.0.2のベンチマーク
シーケンシャルリードが213.8MB/s、同ライトが178.4MB/sでした。Gigabit LANの上限速度(125MB/s)を超えましたよ!
前述のGigabit LAN経由(シーケンシャルリード113.5MB/s、同ライト120.8MB/s)と比較すると、約1.4~1.8倍のスピードです。
10GBダミーファイルの書き込み
書き込みは61.83秒で終了し、速度は約165MB/sとなりました。Gigabit LAN経由(約113MB/s)と比較して、約1.5倍のスピードです。
なお、ファイルコピーのウィンドウの後ろにあるのは、タスクマネージャーのウィンドウ。2つのNICで、しっかりと通信を分散処理しているのが分かります。
おわりに
筆者が始めてLANを構築した頃はイーサネット(10Mbps)が標準で、その後すぐにファストイーサネット(100Mbps)に切り替わっていきました。その頃は、ファイルサイズがさほど大きくなかったため、「100Mbpsになって、LANのコピー速度がかなり上がった!」という印象でしたね。
その後、Gigabit(1000Mbps)を導入し、今回のSMBマルチチャンネル化によってコピー速度は更にアップしたのですが、同時にファイルのサイズがどんどん大きくなっているので(特に動画や写真など)、そのうち「これじゃあ遅いよ!」と感じるようになるかも…。なので、今後も速度アップの方法を、いろいろ検討していきたいと思います。