web-dev-qa-db-ja.com

プロセスごとのCPU使用率をログに記録するにはどうすればよいですか?

Linodeに奇妙な動作をするボックスがあります。 CPUとディスクI/Oが時々100%になり、サーバーが応答しなくなり、起動する必要があります。何が起こっているのかを詳しく調査したいのですが、そのすべてのCPUとI/Oの責任者を見つける方法がわかりません。 Gentoo 2.6.18を実行しています。

18

あなたはこのようなことを試みることができます:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

これにより、CPU使用率の観点から上位10プロセスが表示されます。 「head -10」の10を別の数に変更することで表示されるプロセスの数を変更できます。また、「sleep 3」の3を変更するか「sleep 3」の部分を完全に削除することで、プロセスの更新頻度を変更できます。

20
shawn

チェックアウトすると、必要なほぼすべてのバイナリログが書き込まれます。次に、guiなどのトップを使用して、その日のタイムスライスを確認できます(デフォルトでは5分ごとにデータを取得します)。 http://www.atcomputing.nl/Tools/atop/

12
ScottZ

munin は、ボックスのアクティビティに関する情報を取得するのに役立つ監視ツールの1つだと思います。また、このような使用のために sar 、iostat、ps、topなどのコマンドラインツールがいくつかあります。

6
Ali Mezgani

他の回答では、現在何が起こっているのかを確認する方法が示されているだけで、システムが再起動された場合は役に立ちません。

この情報を後世のために記録したい場合(または請求、またはその他の使用目的もある場合)、必要なのはプロセスアカウンティングです。

これが私が見つけたHOWTOですが、私は正直に言うと-プロセス会計を使用してから10年になります。

http://tldp.org/HOWTO/Process-Accounting/

5
Rob F

ほぼリアルタイムの監視のためのShawnのソリューションへのよりユーザーフレンドリーなアプローチ:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

これにより、1秒ごとに更新される上位20プロセスの静的ビューが提供されます。 psコマンドの「c」オプションは、argsコマンド全体ではなく、プロセスの実行可能ファイル名を出力します。代わりにコマンド情報全体が必要な場合は、このオプションを省略できます。 %memory usage列も追加されました。

2
manolis

Gentooにはwelとしての「top」コマンドはありませんか?

machine:~/# top

どのプログラムが最大の負荷を引き起こしているかの実行統計が表示されます。

1
Emthigious