
大容量の.gzファイルを解凍しようとしています。このコマンドを分析して、コマンドの実行中にCPU使用率を取得する方法があるかどうかを知りたいです。
私はこのようなものを探しています。
gunzip file.gz | profileTheCommand
答え1
出力を分析ツールにパイプすると、ランタイム情報があまり出力されないため、gunzip
結果はそれほど遠くありません。gunzip
ただし、標準のLinux分析ツール(例perf
:以下のチュートリアルを確認してください。https://perf.wiki.kernel.org/index.php/Tutorial
たとえば、解凍された約 100 MB ファイルのプロファイル統計は次のようになります。
$ perf stat -B tar xJf ghc-8.0.2-x86_64-deb8-linux.tar.xz
Performance counter stats for 'tar xJf ghc-8.0.2-x86_64-deb8-linux.tar.xz':
14959.293532 task-clock (msec) # 0.737 CPUs utilized
340822 context-switches # 0.023 M/sec
0 cpu-migrations # 0.000 K/sec
2401 page-faults # 0.161 K/sec
<not supported> cycles
<not supported> instructions
<not supported> branches
<not supported> branch-misses
20.299894777 seconds time elapsed
カーネルのバージョンによって出力が若干異なる場合があります。また、perf
特定のCPUで発生するすべてのイベントを知るためにコンパイルすることは不可能かもしれません。<not supported>
上記のメッセージはまさにそれです。
答え2
ボトルネックは、おそらくCPUではなく読み書きするためです。とにかく、時間(1)はそれ自体で言わなければなりません。