CPUとメモリの使用量を動的にキャプチャする
-
03-07-2019 - |
質問
APIのパフォーマンスを測定するC ++アプリケーションを実行するシェルスクリプトを実行しています。 APIのレイテンシ(特定のパラメーターセットの値を返すのにかかる時間)をキャプチャできますが、CPUとメモリ使用量も5〜10秒間隔でキャプチャしたいと思います。
同じスクリプト内でシステムのパフォーマンスにあまり影響を与えずにこれを行う方法はありますか?実行しているスクリプトの外部で(独立して)実行できる多くの例を見つけました。同じスクリプト内でできることではありません。
解決
「 time 」コマンドを使用することをお勧めしますまた、 ' vmstat 'コマンド。 1つ目は実行可能実行のCPU使用率を、2つ目はシステムのCPU /メモリ/ IOの定期的(1秒に1回)のダンプを提供します。
例:
time dd if=/dev/zero bs=1K of=/dev/null count=1024000
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s
0.218u 0.519s 0:00.73 98.6% 0+0k 0+0io 0pf+0w <== that's time result
他のヒント
Linuxボックス全体のCPUとメモリの使用率を動的にキャプチャする場合は、次のコマンドも役立ちます。
CPU
vmstat -n 15 10| awk '{now=strftime("%Y-%m-%d %T "); print now free -m -s 10 10 | awk '{now=strftime("%Y-%m-%d %T "); print now <*>}'> DataDumpMemoryfile.csv &
}'> CPUDataDump.csv &
vmstat
はCPUカウンターの収集に使用されます
-n
、この場合は15です。つまり、15秒ごとに統計が収集されます。
then 10
は間隔の数です。この例では10回の反復があります
awk '{now = strftime(&quot;%Y-%m-%d%T&quot;); print now $ 0} '
これにより、各反復のタイムスタンプがダンプされます
最後に、継続のための&amp;
のダンプファイル
メモリ
<*> free
はmem statsコレクション用です
-m
これはmem単位用です(バイトには -b
、キロバイトには -k
、- g
ギガバイトの場合)
then 10
は間隔の数です(この例では10回の反復があります)
awk '{now = strftime(&quot;%Y-%m-%d%T&quot;); print now $ 0} '
これにより、各反復のタイムスタンプがダンプされます
最後に、継続のためのダンプ&amp;