CentOS5・sambaでファイルサーバを構築しました。
Windows側(7・XP)からデータを送ると速度が安定せず、針山のようになってしまいます。
また、転送スタートするとCentOSマシンがほぼ固まったような状態になります。
転送量が増える(針上に行く)とマウスカーソルが飛び飛びになってしまい、転送量が減ると動くようになる、の繰り返しです。
システムモニターでCPU使用率を見ても、ネットワーク履歴と同調せず、20%以下を保っています。メモリーも20%を維持しています。
CPUはP4 2.4Ghz、メモリーは1GB、Aopenのxc cubeベアボーンです。
ちなみに、このマシンにWindowsXPをインストールしていた時は普通に利用できていました。
この場合、どういった点をチェック・修正したらよいでしょうか?
また、転送スタートするとCentOSマシンがほぼ固まったような状態になります。
転送量が増える(針上に行く)とマウスカーソルが飛び飛びになってしまい、転送量が減ると動くようになる、の繰り返しです。
というのから、なんとなくNICのドライバ・I/Oまわりの問題かな?という気がします。
vmstatとかiostatでI/O待ちを確認してはいかがでしょう?
なんとなく、バグかなにかでNIC自身かドライバが変にI/Oバスを占有した挙句、リセットとかタイムアウト待ちとかでしばらく通信できなくなるっていうのの繰り返しとか、そういう系統の気がします。
ただ、他の要因もあり得ますので、samba以外(FTPとかHTTP)でどうか?その間でping応答とかはどうか?なども確認したほうが良いと思います。
これはvmstatの出力ではないでしょうか?
bo | in | cs | us | sy | id | wa | st |
3372 | 1035 | 205 | 5 | 95 | 0 | 0 | 0 |
boはディスクへのファイル書き込みでしょう。
systemが95%でCPUを目一杯食われていますね。100Mイーサネットの帯域でP4 2.4Ghzがそこまで食われるのは食いすぎのような気がします。
bo | in | cs | us | sy | id | wa | st |
0 | 12637 | 16619 | 6 | 16 | 53 | 26 | 0 |
boが0なのはデータの受信が出来てないからでしょう。
systemは下がってwait(入出力待ち)が発生してます。idle(空時間)が増えてますが入出力待ちで処理が出来ないためでしょうか。
in(割り込み)が非常に増えて、そのためかcsも非常に増えてます。その割に入出力が処理できてないようで、何が起こってるんだろう?と言う感じです。
やはりドライバの問題な気がします。
念のためディスクアクセスのないネットワークトラフィックを与えて見るとどうなるのでしょう?
例えばルート権限で
time ping -s 1208 -c 30000 -l 100 -fq IPアドレス
等とすると、10kbitのパケットを一度に100パケットづつ、30,000パケット、つまり全部で300Mbitを往復させます。
-lのあとの数字は一度に送るパケット数で、大きすぎるとバッファがあふれますし、小さすぎると転送効率が落ちます。
あと、ファイアーウォールで弾かれたり、セキュリティ対策ソフトが攻撃を検知すると思いますが、適宜対処してください。
この時相手側でネットワークトラフィックを監視して、同じような問題が発生するか確認してください。
これで問題がでなければ別の要因かもしれませんが、同じようになるならドライバの問題と考えて良いと思います。
もしドライバの問題だと、対処方法はドライバを更新するとかパッチを探し出して当てるとかもありえるかも知れませんが、
素直にどこかから別のネットワークカード(できればCentOSでの動作確認が出来ているもの)を手に入れてそれを使うのが良いかと思います。
Linux初心者なので、これを見てどうなっているのかが全然わからないのですが…
とりあえず、転送中に実行してみました。
ioのbiまではほぼ変化なしです。
boが減少すると、systemのinとcsが極端に上がります。
通常時
bo in cs us sy id wa st
3372 1035 205 5 95 0 0 0
多分、通信が正常じゃない時
bo in cs us sy id wa st
0 12637 16619 6 16 53 26 0
という感じです。
iostatは「iostat -x -n -c 1」で実行してみました。
しかし、こっちは負荷がかかってるであろうタイミングに計測も止まってしまっているので、正確な情報が取れていないかも…
重くなる前にsystemが100%近くになっているようです。