どのプロセスがCPU使用率の高い原因となっているのかを確認するにはどうすればよいですか。


2

私のSolaris仮想マシンで奇妙な問題が起きています。起動後、1〜2時間起動すると、CPU使用率は5秒間で100%まで上昇し、さらに5秒間は通常まで下がり、このように繰り返されます。再起動するまで - それは私のSolaris仮想マシンを全く使えなくする。

5秒間100%のCPU使用率を繰り返している間に何が起きているのか調べたいのですが、5秒間はシステムがまったく応答しません。マウスやキーボードの割り込みも処理されないため、 top または prstat

だから私は見つけたいと思います:

  • 100%CPU使用率を引き起こしたプロセスID
  • CPU使用率100%の間にプロセスが何をしていたか

あなたの提案を提供してください、ありがとうございます!

回答:


5

あなたはバッチモードでtopを実行しようとすることができます:

top -b -n100 > top.log

-n100は100回の繰り返しを表します。

もう1つの方法は、適切な引数を付けてpsを使用することです(これらはLinuxのものです。Solarisのpsのmanページを参照する必要があるかもしれません)。便宜上、コマンドはBashスクリプトに組み込まれています。

   #!/bin/bash 
   while true ; do
      ps -eo pcpu,pmem,pid,ppid,args >> process.log
      sleep 1
   done

また、プロセスアクティビティロギングプロセスの優先度をリアルタイムに変更する必要があるかもしれません。 nice コマンド。


3

特に仮想化環境で実行している場合は、原因がプロセスであると直接想定しないでください。

これはハイパーバイザーの問題やカーネル関連の問題である可能性もあります。

私はこれらの高いCPU使用率期間の間にカーネルがしていることを把握するためにdtraceを使用するでしょう。

DTraceToolkit CPU時間 そして modcalls.d コマンドは良いスタートでしょう。

ホストOSがSolarisでもある場合は、dtraceを使用してCPUのロード元を特定することもできます。


ありがとうございました。私は、Solaris 11カーネルがvirtualboxでうまく機能していないのではないかとも思います - または、仮想ボックスが問題を引き起こしています。
Howard
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.