パソコン初心者ですので、暖かい目で見ていただけると幸いです。
プログラムがCPUをどれくらい利用しているか、またメモリをどれくらい利用しているかを計測してみたいと思い、以下のようなコマンドを実行するようにしました。
bash
1ps u -p <pid> | grep -v "PID" | awk '{print $3 \",\" $4}'
今まで、このコマンド実行で正しい結果が得られるとばかり思っていたのですが、ふと、本当に正しいのだろうか?と疑問に思うようになりました
皆様であれば、CPU利用率やメモリ利用率を知りたい時、どのようなコマンドを実行するのでしょうか?
ご教授いただければ幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
ベストアンサー
psは実行したときのプロセスの状態を見る(Linuxでは/proc/{PID}の情報を取得しているだけです)ため、使用しているメモリの容量はわかっても、ps実行時におけるCPU使用率はわかりません。わかるのは、CPU時間、つまり、プロセスの起動から今までどれぐらいCPUの資源を使ったのかがわかります。psで出てくる"%CPU"は単純な{CPU時間}/{起動時間}にすぎず、待ちが多いプロセスで、起動している時間が長いほど、それほど意味がありません。
その一瞬を考えれば、CPUはコア数分の仕事しかしていません。コア1つの場合、psを実行した瞬間では、psのことしかCPUは処理しませんから、ps以外のCPU使用率は本来は0になります。これでは意味が無いですので、CPU使用率と言った場合は、特定の期間における、CPUがそれぞれのプロセスを処理した割合を出します。
例えば、初めにpsを使用して、CPU時間("TIME"の項目です)を出力し、1分後に再度psを使用して、CPU時間を主力します。あとは
1分間のCPU時間 = (後のCPU時間 - 前のCPU時間) / 1分間
で割合が求められます。これと同じことを自動的に行っているのがtopです。
なお、CPU時間はコア一つに対する占有した時間です。ネイティブマルチスレッドなプロセスを複数コアで動作させた場合、100%を越える場合があります。
psは終了したプロセスの情報は取れません。実行から終了までのCPU時間を計測する場合は、timeを使用してください。OS全体のCPU使用率やメモリ使用率を取得したい場合は、vmstatやsarなどお使用してください。
投稿2016/05/23 22:29
総合スコア21741
0
参考情報:
- topに似たコマンドって他にどんなのがあるんだろ https://gist.github.com/iZRIdJJ53S/6916239
...
iotop:Top に似たI/Oユーティリティ
iftop:ネットワークのトラフィック量をリアルタイムに把握
atop:An advanced interactive monitor
htop:Interactive process viewer
slabtop:System and process monitoring utilities
innotop:MySQL and InnoDB モニタリング
varnishtop:High-performance HTTP accelerator
mongotop:High-performance, schema-free document-oriented
mytop: A top clone for MySQL
...
投稿2016/05/23 21:58
総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
topコマンド使うんじゃないかなぁ。
投稿2016/05/23 15:10

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2016/05/23 16:06

0
それで良いと思います。
もっとシンプルには、
Bash
1ps h -o pcpu,pmem -p プロセスID
ただ、メモリ使用率はあまり見たいとは思いません。数字が小さいので。
代わりに物理メモリサイズ(RSS)でしょうか。目的によっては論理メモリサイズ(VSZ)。
投稿2016/05/23 15:07
総合スコア86260
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。