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


18

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

回答:


20

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

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」の部分を完全に取り出すことで更新する頻度を変更します。


5
そこに何らかの睡眠があることを確認してください。そうしないと、シェルプロセスが常に上位10に入る可能性が高くなります。:)
jedberg

思うsort -nr(私のUbuntu / Debianのツゲ上に少なくとも)数値的にソートするために、より良いだろう
sehe

2
ところで、このプロセスは、高負荷のピーク時にも有用であり続けるために、優先度を高くする必要があります(結局のところ、このプロセスはその目的です)。
スペースダイバー14年

12

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


6

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


5

他の答えは、現在何が起こっているかをどのように見ることができるかを示しているだけであり、システムがリブートされた場合は役に立ちません。

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

ここに私が見つけたHOWTOがありますが、正直に言うと、プロセスアカウンティングを使用してから10年が経ちました。

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


2

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

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列も追加されました。


1

Gentooには「トップ」コマンドがありませんか?

machine:~/# top

どのプログラムが最も負荷が高いかについての実行中の統計情報を提供する必要があります。


ええ、知っていますが、後で履歴を見ることができるようにログに記録したいと思います。CPUが急増すると、マシンが応答しなくなるため、ログインして実行topして犯人を確認することはできません。後で確認して、どのプロセスがそれを行ったかを確認したい。
ヘルダーSリベイロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.