
Ubuntu日本語フォーラム

ログインしていません。
http://forum.ubuntulinux.jp/viewtopic.php?id=525 でお世話になりましたackです、引き続き質問させて下さい。
ubuntu 7.04デスクトップ、GbE=Realtek 8110S-32のマシン(以下 feistyPC)にsambaを導入し共有フォルダを設定しており、
別のWindowsXPPro、GbE=Intel Pro1000/MTのマシン(以下 WindowsPC)からfeistyPCの共有フォルダへデータを書き込んだり
読み込んだりの作業はだいたい30MB/sec程速度が出るようになり(システム・モニタで確認しました)問題ないのですが、その逆の
feistyPCからWindowsPCの共有フォルダにデータの読み書き
が5MB/sec程しか速度が出ません。
・「サーバへ接続」を使う
・nautilusアドレスバーにsmb://でアドレスを打つ(おそらくサーバへ接続と同じものだとは思います)
のほか、
・smbclient コマンドで接続してみる
・smbfsをSynapticでインストールし、それで接続してみる
などを試しましたが、どれも5MB/sec程しか速度が出ません。
これは何が原因なのでしょうか。・・・それとも「そんなもん」だったりするのでしょうか。
オフライン
WindowsPCから接続してきてる速度が30MB/secということは、いわゆるJumboFrameを
設定されていると思いますが(しなくても出る?)、この値はきちんと揃っているでしょうか?
現象的にFeisty側のMTUがWindows側より大きく設定されていて、再送しまくっているのでは、
と思います。
その疑いがないようであれば、ちょっと実験をしてみて頂いてもいいでしょうか。
smbclient -b 1024
smbclient -b 2048
smbclient -b 4096
smbclient -b 8192
とかすると、速度に変化はあるでしょうか?
もしくは、
mount -t cifs (Windows機のURI)
だと速度が出るでしょうか?
(CIFSでも遅いとのことなので、すでに試されていたらすいません)
参考:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a004mountcifs.html
オフライン
お世話になっております。
hito による投稿:
WindowsPCから接続してきてる速度が30MB/secということは、いわゆるJumboFrameを
設定されていると思いますが(しなくても出る?)、この値はきちんと揃っているでしょうか?
現象的にFeisty側のMTUがWindows側より大きく設定されていて、再送しまくっているのでは、
と思います。
JumboFrameは
WindowsPC:オフ(特に設定してない)
feistyPC:MTU 1452
となっております。
smbclient -b を試してみました。WindowsPCの共有に ubuntu-ja-7.04-desktop-i386.iso を置いてそれをgetしてみました。
smbclient -b 1024 ・・・ 4MB/sec程度
smbclient -b 2048 ・・・ 2~4MB/sec程度波激しい
smbclient -b 4096 ・・・ 13MB/sec程度 今のところ最高記録
smbclient -b 8192 ・・・ 1MB/sec程度
となりました。
hito による投稿:
mount -t cifs (Windows機のURI)
だと速度が出るでしょうか?
(CIFSでも遅いとのことなので、すでに試されていたらすいません)
mount -t cifs は4MB/sec程度 でした。
その後そういえば似たような名前のものが他にもあったなと、
smbmount
のコマンドで接続したところ smbclient -b 4096と同じく13MB/sec程度の速度が出ました。
13MB程出ればボチボチ感はありますが、逆方向では30MBまで出るので何とかそこまで引っ張りたいところではあります。
また操作が楽なので、「サーバへ接続」で速度が稼げるようにしたいところです。
あと、他に関係ありそうなところを考えますと、Sambaサーバをチューニングしよう、との考えで
sysctl.confに
net.core.wmem_max = 1048576
net.core.wmem_default = 65535
net.core.rmem_max = 1048576
net.core.rmem_default = 65535
net.core.optmem_max = 1048576
net.ipv4.tcp_wmem = 4096 65535 1048576
net.ipv4.tcp_rmem = 4096 65535 1048576
smb.confに
socket options = TCP_NODELAY SO_RCVBUF=65535 SO_SNDBUF=65535
を仕込んでおります。
設定値は検索で見つかったページを参考に「こんなもんか?」で入力していますのでおそらく最適な値ではないと思いますが・・・。
オフライン
すいません、現状ではsmb的な問題なのか、ネットワークレベルの問題なのかが
切り分けが難しいかもしれません。
ひとまずifconfig eth0とかを見て、Error等が妙に高くないかを確認してください。
また、smb的にチューニングしてみても良いのですが、Windows機でFTP/HTTPなどの Serverを
走らせて、その速度を測ってみるとどうなるでしょうか?
おなじく、Windows機に他の端末からsmbアクセスした場合、充分性能が出ているでしょうか?
もしこのあたりが気軽に試せるようであればお願いします。
オフライン
お返事ありがとうございます。お世話になっております。
hito による投稿:
すいません、現状ではsmb的な問題なのか、ネットワークレベルの問題なのかが
切り分けが難しいかもしれません。
なるほど今はそういう状態なんですね。
hito による投稿:
ひとまずifconfig eth0とかを見て、Error等が妙に高くないかを確認してください。
ifconfig eth0は
UP BROADCAST RUNNING MULTICAST MTU:1452 Metric:1
RX packets:12385214 errors:0 dropped:0 overruns:0 frame:0
TX packets:6878350 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
こんな表示でしたのでエラーは0のようです。
hito による投稿:
Windows機でFTP/HTTPなどの Serverを走らせて、その速度を測ってみるとどうなるでしょうか?
WinでFTPサーバはすぐ出来る状況なのでやってみました。
WindowsPCで NekosogiFtpd
http://nekosogi.sytes.net/wiki/
を使ってFTPを立て、feistyPCから端末ftpコマンドでアクセス、読み込んでみたところ14MB/sec程でした。
また何か試すことが出来ましたらご報告致します。
オフライン
すいません、まだちょっと切り分けできないのですが、
・何かしら上り・下りを非対称にするネットワーク的な要因があり、
片道は30MB/sec、反対側は14MB/sec程度しか出ない状態にある。
・上記と同じ原因かどうかは不明だが、smb的に律速要因がある。
ということが言えると思います。
どうもネットワーク的な問題の方が根が深そうなので、これを何とかすると
一緒にsmbの問題も解決するかもしれません。
自分が試すなら以下の順番で試します。
1. WindowsPCのMTUをFeistyPCと揃える。
2. 行ったチューニングを全て除去し、デフォルト状態で試す。
MTUは1で設定したまま。
3. ケーブルを替えてみる。入れ替えるでも良いですし、向きを
反対にするだけでも構いません。
4. smb.confのパラメータチューニングだけを外す。
つまり、今のsysctl.confの設定 + 1。
5. sysctl.confのパラメータを以下にする。
net.ipv4.tcp_wmem = 8192 65535 1048576
net.ipv4.tcp_rmem = 8192 65535 1048576
これ以外は今のチューニングそのままで、1.だけやる。
オフライン
お世話になっております。
hito による投稿:
どうもネットワーク的な問題の方が根が深そうなので、これを何とかすると
一緒にsmbの問題も解決するかもしれません。
なるほど了解です。
hito による投稿:
自分が試すなら以下の順番で試します。
ケーブル差し替えがちょっと手間な状況なので、3.以外を試してみました。
1. WindowsPCのMTUをFeistyPCと揃える。
・・・feisty>Windowsは変わらず、Windows>feistyが4MB/sec以下に落ち込みました。
2. 行ったチューニングを全て除去し、デフォルト状態で試す。
MTUは1で設定したまま。
・・・1.と状況は同じでした。
4. smb.confのパラメータチューニングだけを外す。
つまり、今のsysctl.confの設定 + 1。
・・・1.と同じでした。
5. sysctl.confのパラメータを以下にする。
net.ipv4.tcp_wmem = 8192 65535 1048576
net.ipv4.tcp_rmem = 8192 65535 1048576
これ以外は今のチューニングそのままで、1.だけやる。
・・・1.と同じでした。
ここまで行ったところで、そうしたら・・・と
6.行ったチューニングを全て除去し、feistyのMTUを1452に設定
したところ、元の状態になりました。
じゃあADSLやフレッツ等の最適化でやる方法みたいなのをやってみようと思い、まずfeistyのMTUを1500に戻した後、Windowsからfeistyへ向けて
ping -f -l 1452
から少しずつ上げて行ったところ、1472までフラグメントなしに送ることが出来たので、feistyのMTUを1472に設定、
この状態でWindows>feistyは過去最高速(35MB/sec~38MB/sec)を記録しましたが、feisty>Windowsは遅いままでした。
なかなか難しくなって来てしまいましたが、ともあれWindows>feistyが非常に調子よく動作してくれているので、
feisty>Windowsは追って勉強することにして、現状Windows>feistyの速さを生かして使っていこうと思います。
hitoさんご指導ありがとうございました。
--------------------------------------------------
追記です。書き終わった後、ネット接続最適化はpingの値に28を足すんだっけ、と思い出し、1472+28=1500、あれ?
とまたMTUを1500にしてみたところ遅くなってしまいました。もう良くわかりません(笑)
最後の編集者: ack (2007-06-28 11:15:18)
オフライン