web-dev-qa-db-ja.com

マシンの動作が遅い理由を特定する方法は?

グラフィカルsshクライアント(securessh)を使用して(仮想マシンとしてインストールされた)Linuxサーバーにログインします。このサーバーは、 nexus がインストールされているTomcat5.5サーバーを実行します。

コマンドを入力するか、小さなファイル(約5〜6 MB)を削除またはコピーすると、シェルの応答に時間がかかります(10秒からほぼ1分)。私はtopを実行して、プロセスが大量のメモリ/ CPU時間を使用しているかどうかを確認しようとしました:

top - 13:34:41 up 86 days, 16:04,  1 user,  load average: 2.13, 0.99, 1.94
Tasks:  63 total,   1 running,  62 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.0%us,  1.5%sy,  0.0%ni, 96.2%id,  0.2%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   3896416k total,  3097824k used,   798592k free,   167180k buffers
Swap:   915664k total,       84k used,   915580k free,  2409236k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                      
20436 Tomcat55  20   0  359m 217m  13m S   18  5.7   2713:04 jsvc                                 

Tomcat55ユーザーのみが大量のリソースを使用します。上記の出力に基づくと、このユーザーはメモリの5.7%とCPUの5.7%しか使用していないようです。 topの出力を誤解していますか? CPUとメモリが十分に活用されていないのに、なぜマシンのパフォーマンスが悪いのですか?


編集:私は今上で実行して取得しようとしました:

ATOP - repository         2011/09/20  16:08:48               10 seconds elapsed
PRC | sys   0.17s | user   0.03s | #proc     64 | #zombie    0 | #exit      4 |
CPU | sys      2% | user      1% | irq       0% | idle    198% | wait      0% |
cpu | sys      1% | user      1% | irq       0% | idle     98% | cpu001 w  0% |
cpu | sys      0% | user      0% | irq       0% | idle     99% | cpu000 w  0% |
CPL | avg1   0.05 | avg5    0.92 | avg15   1.29 | csw      976 | intr      61 |
MEM | tot    3.7G | free  656.7M | cache   2.4G | buff  170.9M | slab  241.3M |
SWP | tot  894.2M | free  894.1M |              | vmcom 781.9M | vmlim   2.7G |
DSK |         sda | busy      0% | read       0 | write      9 | avio    0 ms |
NET | transport   | tcpi      18 | tcpo      26 | udpi       0 | udpo       0 |
NET | network     | ipi       22 | ipo       26 | ipfrw      0 | deliv     22 |
NET | eth1     0% | pcki      34 | pcko      26 | si    2 Kbps | so   11 Kbps |

  PID  SYSCPU  USRCPU  VGROW  RGROW  RDDSK  WRDSK  ST EXC S  CPU CMD     1/1   
 4687   0.06s   0.02s     0K     0K      -      -  NE   0 E   1% <lsb_release>
 4689   0.04s   0.01s     0K     0K      -      -  NE   0 E   1% <apt-cache>   
 4684   0.04s   0.00s   132K   132K     0K     0K  --   - R   0% atop
 4673   0.02s   0.00s     0K     0K     0K     0K  --   - S   0% sshd         
 4152   0.01s   0.00s     0K     0K     0K     0K  --   - S   0% vmware-guestd
 2302   0.00s   0.00s     0K     0K     0K     4K  --   - S   0% kjournald
 4688   0.00s   0.00s     0K     0K      -      -  NE   0 E   0% <sh> 
 4686   0.00s   0.00s     0K     0K      -      -  NE   0 E   0% <sh>    

これが正しいことを理解すれば、「ゾンビ」はありませんが、CPU時間のほとんどを占めます(199%から200%にジャンプします)。これは予想される動作ですか?

5
u123

iostatに加えて、atophttp://www.atoptool.nl/ )CPU以外のボトルネックを特定します。

4
Matteo

問題はディスクI/Oが遅い可能性があります。実行してみてください:

$ iostat -d -x 5 3

出力の説明があります here

2
maialithar

cpなどのファイルシステムコマンドは、CPU時間やメモリをまったく消費するべきではありません。これは、topが示すとおりです。代わりにiotopプログラムを試してください(インストールが必要な場合があります)。

1
Fred Foo

仮想マシンにログインしているため、速度が遅いのは物理ホスト上の他のVMが原因である可能性があります。仮想マシンの内部からは、通常、実際に使用しているCPUの量を確認することはできず、実際の物理的なIO=レートに関する統計も表示できません。「top」または「atop」を実行する必要があります。物理ホスト上。

0
P.T.

現在、ソースを見つけることができません。そのためお詫び申し上げますが、仮想ドライブが格納されている場所に関連している可能性があることを覚えています。 NFS経由で保存およびアクセスすると、膨大な量のオーバーヘッドとスラッシングが発生します。

Virtualboxには、IOキャッシュを調整する必要があるオプションがあります。これは、cpなどのデータをコピーする単純なプログラムに影響します。

0
Ken Sharp