プロセススケジューリング情報の抽出

プロセススケジューリング情報の抽出

各プロセッサコアで最も使用されているプロセスを抽出し、その情報(PIDなど)をファイルに出力したいと思います。 top または ps コマンドを使用してこれをどのように実行しますか?

ありがとうございます。

答え1

どうですか?

ps -k -pcpu -O pcpu,psr 

k フラグは CPU の割合を表すソートキーです。 Capital Oは出力を変更して、CPU使用率とプロセスが実行されている現在のプロセッサ/ CPUを追加します。以下の結果が出力されます。

  PID %CPU PSR S TTY          TIME COMMAND
15049  5.8   2 S tty2     00:00:28 chrome
14808  4.3   1 S tty2     00:00:21 chrome
14448  3.9   5 S tty2     00:00:21 gnome-shell
15234  1.8   5 S tty2     00:00:08 chrome
14896  1.5   2 S tty2     00:00:07 chrome
14322  1.2   0 S tty2     00:00:06 Xorg

CPU パーセントは、時間列を実際の時間で割った値です。忙しいプロセスがあり、アイドル状態になると、奇妙な結果が出る可能性があります(ただし、全体の平均は期待に応じてまだ高いか低いか)。

「過去数秒間私のCPUを忙しくした理由」に答えるために、topはより良いツールです。

また、プロセスが CPU から前後にバウンスされるため、CPU が過熱する理由を把握するのが困難な場合があります。一般的に、これは負荷を分散させたいです。

答え2

PSOUTFILE=/tmp/ps-out.txt
ps -ef| sort -r  -k7 | head -2 >> ${PSOUTFILE}

上記の段落は、最上位プロセスの情報とヘッダー行を取得し、各列が参照する内容を解釈し、それを指定されたファイルに書き込みます。列ヘッダー行を印刷したくない場合は、次のように変更できます。

PSOUTFILE=/tmp/ps-out.txt
ps -ef| sort -r  -k7 | head -2 | tail -1 >> ${PSOUTFILE}

これが望まない場合は、さらに質問する必要があります。このファイルで見たいものを説明する詳細を含めるように元の投稿を編集してください。

関連情報