web-dev-qa-db-ja.com

一定期間のCPU / RAM使用ログをCentOSにファイルするために書き込む

プロセスを観察し、情報をいくつかの変数に保存してから、収集した情報をファイルに保存できるアプリケーションまたはコード行を探しています。

topのバリエーションを試してきましたが、うまくいきませんでした。私はいくつかのCentOS仮想サーバーを実行しています。VMは2GBRAM、2プロセッサです。

テキストファイルに情報を含む行を書き込んでいる間、指定された時間にわたって機能するスクリプト。最後に、データを含む一種のテーブルを作成できます。

サーバーのストレステストを行います。統計を作成するためのデータが必要です。

8
keponk

標準の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番目は物理メモリ使用量(キロバイト)です。

11
whitequark

正確なタイミングを気にし、CPUをパーセンテージで表示したい場合:

watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'
2
Aalex Gabi

sadc / sar をお勧めします。

次のコマンドは、特定のプロセス(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
0
Celik

特定のプロセスに必要な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]
  • 00:00:00は、CPUの時間/分/秒です。たまります。
  • ユーザーがあなたでない場合、これを表示するには権限が必要です。
  • この値が1日を超えると、形式が変わります。上記は2日です。解析ルーチンはこれを処理する必要があります。

この時点で、Pythonを使用して出力を解析し、日付計算を実行すると、成功します。

0
Kevin J. Rice