プロセスを観察し、情報をいくつかの変数に保存してから、収集した情報をファイルに保存できるアプリケーションまたはコード行を探しています。
top
のバリエーションを試してきましたが、うまくいきませんでした。私はいくつかのCentOS仮想サーバーを実行しています。VMは2GBRAM、2プロセッサです。
テキストファイルに情報を含む行を書き込んでいる間、指定された時間にわたって機能するスクリプト。最後に、データを含む一種のテーブルを作成できます。
サーバーのストレステストを行います。統計を作成するためのデータが必要です。
標準のps
で十分です。
while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done
結果:
0.0 3352
0.3 31640
0.4 36924
0.5 36052
...
最初のフィールドはCPU使用率(%)、2番目は物理メモリ使用量(キロバイト)です。
正確なタイミングを気にし、CPUをパーセンテージで表示したい場合:
watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'
次のコマンドは、特定のプロセス(pid)の40秒ごとのCPUとメモリの平均使用量を取得します。
pidstat 40 -ru -p <pid>
私の場合の出力(CPU使用率の最初の2行、メモリの次の2行):
02:15:07 PM PID %usr %system %guest %CPU CPU Command
02:15:47 PM 24563 0.65 0.07 0.00 0.73 3 Java
02:15:07 PM PID minflt/s majflt/s VSZ RSS %MEM Command
02:15:47 PM 24563 6.95 0.00 13047972 2123268 6.52 Java
特定のプロセスに必要なCPU時間を監視しようとしています。
私は提案するつもりでした CentOS用のCPU統計ツール? しかし、これは1つのプロセスだけでなく、システム全体に対してそれを取得します。
どのプロセスでも、psの出力にCPU時間が表示されます。
$ ps -ef | egrep blah
root 13988 11152 0 Dec16 ? 00:00:05 sshd: xxx [priv]
xxx 14024 13988 0 Dec16 ? 00:06:00 sshd: xxx@pts/0
xxx 14032 14024 0 Dec16 pts/0 07:00:00 -bash
root 1194 679 0 Apr24 ? 2-05:15:14 [kswapd0]
root 1195 679 0 Apr24 ? 2-06:35:49 [kswapd1]
この時点で、Pythonを使用して出力を解析し、日付計算を実行すると、成功します。