先日、SoftEtherVPNでVPN環境を作成した記事を書きました。
このときLinux上にSoftEtherVPNサーバーを構築しましたが、どうもWindowsファイル共有(samba)が遅い。Androidスマホのアプリ(X-plore)でsambaで共有しているフォルダを開くのに時間がかかるし、VLCで動画ファイルを再生すると数秒に一回止まって見れたものじゃないです。
WANを経由して遅くなるならまだ分かりますが、LAN内で試しても猛烈に遅い。
下の記事で書いたようにSoftEtherVPNの機能で性能測定したときは1000BASE-Tであれば余裕で500Mbps以上出ていたのに。。
ということで何とかならないかと調べてみました。
- まずはネットの情報を検索
- vpnserverプロセスの優先度をリアルタイムにしてみる
- より高スペックなマシンにSoftEtherVPNサーバーを構築してみる
- 同じくらいのスペックのWindows 10マシンにSoftEtherVPNサーバーを構築してみる
- 結論
まずはネットの情報を検索
ネットで調べたところsambaはネットワークの遅延(レイテンシ)が大きいとめちゃくちゃ遅くなるため、WANを経由すると使えないという記述を見ました。WANならTCPではなくUDPを使えばよいとかも。
確かにそうだろうなとは思います。しかしLANでも遅いという情報はありません。
vpnserverプロセスの優先度をリアルタイムにしてみる
これは色々やってみるしかないなということで、SoftEtherVPNのプロセスをリアルタイム優先度にしてみました。
LinuxのコマンドでリアルタイムにすることはできないっぽいのでC言語で優先度を変更するプログラムを作って暫定的に変えました。
結果。。意味なしでした(^_^;)
より高スペックなマシンにSoftEtherVPNサーバーを構築してみる
現在SoftEtherVPNサーバーが動いているLinuxマシンのCPUはCore2 Duo E8500です。これで十分だと思っていましたが、もしかしたら性能が足りないのかもと思い、今うちにある最高スペックのCore i7-2600Kマシン(OSはWindows 10)にSoftEtherVPNサーバーを構築したところ。。
効果ありました!
初めにLANで試しましたが、WANでも問題なしです。やっぱCPU性能なのかな~でもCore i7-2600Kのマシンは常時起動させたくないしどうしよう。。
同じくらいのスペックのWindows 10マシンにSoftEtherVPNサーバーを構築してみる
ふとタスクマネージャーでvpnserverプロセスのCPU使用率をみたところ、VPNを経由して通信しているときでもすごく低いことに気づきました。10%もいきません。そういえばLinuxでプロセスの優先度を変えたときにvpnserverのCPU使用率を見ましたが、やはり10%もいってませんでした。
これは本当にCPUスペックのせいなんだろうかと考え、別のWindows 10マシン(CPUはCore2 Duo E8600)で試したところ。。
めっちゃ速い。Core i7-2600Kと変わらない快適さです。
当初のLinuxマシンのCPUはCore2 Duo E8500。大して変わらないのになぜ。。
WindowsとSoftEtherVPNは相性が良いのだろうか。。
LANカードなど他の条件が違うので一概には言えないとは思いますが、少なくともうちの3台のWindows 10マシン(もう一台はCore i5-3210MのノートPC)であれば、LANでもWANでも問題なくsambaが使えました。
結論
我が家のSoftEtherVPNサーバーはCore2 Duo E8600のWindows 10マシンに任せることにしました。
経験則なので根拠はありませんが、もしLinux上にSoftEtherVPNサーバーを構築していてsambaが使い物にならん!という方がいたらOSをWindowsに変更してみると幸せになれるかもしれません。