一定期間のCPU / RAM使用状況ログをCentOSのファイルに書き込む


8

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

私はさまざまなバリエーションを試しましたtopが、運はありませんでした。私はいくつかのCentOS仮想サーバーを実行しています。VMは2GB RAM、2プロセッサーです。

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

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

回答:


11

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


それは完璧なので、最初のバッチ出力からすべてのデータをクリーンアップする長いスクリプトを既に作成していましたが、これは非常にシンプルで効果的です。
keponk

最後に、私はスクリプトを使い続けました
。ps

1
ここでの%CPUは、インターバルで使用される%ではなく、プログラムの実行時間全体の平均パーセントです。これは誤解を招くものだと思います。
ウィルシーウェル

2

正確なタイミングを気にし、CPUのパーセンテージが必要な場合:

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

1

sadc/ を提案しsarます。


システム全体だけではありませんか?
ホワイトクォーク、

@whitequark:のバージョンによって異なりsarます。一部のバージョンではsar -x PID他のバージョンを使用していますpidstat -p PID
追って通知があるまで一時停止。

これは理論的には質問に答える可能性がありますが、答えの本質的な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
saji89

0

特定のプロセスに必要なCPU時間を観察しようとしています。

CentOS用のCPU統計ツールを提案するつもりでしたか? しかし、これは1つのプロセスだけでなく、システム全体に適用されます。

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

次のコマンドは、特定のプロセス(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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.