Linux:他の実行中のプロセスがプロセスの速度を遅くするかどうかを確認する方法

Linux:他の実行中のプロセスがプロセスの速度を遅くするかどうかを確認する方法

RHEL 6.3システムでプロセスが実行されています。とにかく、これは他のシステムで実行されているのと同じプロセスよりも処理に時間がかかります。プロセスが遅く実行される理由、またはプロセスを遅くする並列に実行される他のプロセスがあるかどうかはどうすればわかりますか?

答え1

topまたはを使用して何が起こっているのかをデバッグしてみることもできますhtop

top&htop特定のプロセスによって消費されるリソースの量を表示します。プロセスを次のように実行します。/usr/bin/time myproc実際に開始するのにどれくらいの時間がかかっているかを確認します。このコマンドは両方のシステムで同じユーザー時間ですが、異なる実行時間を表示する必要があります。

プロセスが各システムで同じ量の「有効な」時間を費やしていることを確認した後、または「他の」プロセスがシステムの速度を低下させ、プロセスがmachineA.machineA Bでより長い時間を費やしていることを確認できtopますhtop

はい

次のスクリプトがあるとしますdoit.bash

#!/bin/bash

a=0
while [ 1 ]; do
  let a=a+1
  (( $a==100000 )) && exit
done

その後、削除されたシステムで実行しました。

$ /usr/bin/time ./doit.bash 
1.25user 0.10system 0:01.38elapsed 98%CPU (0avgtext+0avgdata 1272maxresident)k
0inputs+0outputs (0major+366minor)pagefaults 0swaps

その後、このコマンドを実行してボックスのいくつかの負荷をシミュレートしました。

$ dd if=/dev/zero of=/dev/null

繰り返し実行doit.bash

$ /usr/bin/time ./doit.bash 
2.32user 0.20system 0:02.98elapsed 84%CPU (0avgtext+0avgdata 1268maxresident)k
0inputs+0outputs (0major+365minor)pagefaults 0swaps

doit.bashフルユーザー時間と実行時間の両方で実行時間が長くなることを確認できます。

  • run1 - (ユーザー): 1.25秒 - (経過): 1.38秒
  • run2 - (ユーザー): 2.32秒 - (経過): 2.98秒

メモ:完了したら、Ctrl+がCコマンドを実行していることを確認してください。dd

答え2

プロセスがCPUバインディングかIOバインディングかを知っていますか? CPUだけが必要なら、topそれはあなたの友人です。 IOが制限されている場合vmstat -Sm 5iotop -od5およびを確認してくださいiostat -m 5。問題が遅く、パフォーマンスが低下するデバイスが原因で発生するのか、パフォーマンスが低下するシステムで他のプログラムが実行されているのかを確認してください。

バインドされているものがCPUかIOかわからない場合は、まず上部のSystem IO Wait値()をtop調べてください。wa1 つ以上の CPU が IO を待っている場合、IO 待機値が増加します。アイドル状態が多く、IO待機値が低い場合、プロセスはある種の同期イベント(おそらくローカルまたはネットワークを介した一種のロック)を待っています。

関連情報