壁時計の時間を分析する方法は?

壁時計の時間を分析する方法は?

私のプログラムでは、リアルタイムの持続時間は時々CPU時間の最大3倍です。これは、多くのメモリ割り当てとNFSネイティブ読み取り/書き込み操作を実行するシングルスレッドアプリケーションです。そのため、mem-swap や NFS の読み書きが遅くなると思われます。たとえば、次の出力は次のようになります。/usr/bin/time a.out

2165.32user 64.93system 6036.33elapsed

リアルタイム分析ツールはありますか?私はCPU時間分析のためにいくつかのツールを知って使用してみましたが、NFS / mem-swapやその他の壁時計の速度低下を指摘し、役に立つツールがあるかどうかはわかりません。

私のプログラムはC ++で書かれています。

編集する/usr/bin/time最後にまとめました。私が探していたのではありませんでした。私はアプリケーションの特定のブロック中にリアルタイムの消費を関連付ける方法を探しています。 Collect/gprof などのプロファイラは、次の内容を通知できます。

  • 待機によってほとんどのコンテキスト遷移が発生する領域。
  • NFS アクセスが発生する特定の機能です。

私のシステムは専用なので、これらの設定ファイルに影響を与える可能性がある他のプロセスについて心配することはありません。

ベストアンサー1

わかりませんが、..straceが必要なようです...

例:

ここでは、プロセスIDが1055のプロセスがあるとし、次の操作を実行します。

 neo $ sudo strace -w -c -p1055

strace: Process 1055 attached
^Cstrace: Process 1055 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 77.38    5.738820         534     10730           read
  5.35    0.396752         114      3480           clone
  4.17    0.309514          10     30741           rt_sigprocmask
  2.31    0.171203          13     12761           close
  1.56    0.115981          16      6960      3480 wait4
  1.47    0.108800          10     10441           rt_sigaction
  1.43    0.106307           8     11890           fcntl
  0.98    0.072344          19      3770           openat
  0.86    0.063769          18      3480           write
  0.85    0.062820          18      3480           pipe
  0.84    0.062443          15      4060           dup2
  0.67    0.049338           9      5220           lseek
  0.57    0.042007          11      3770      3770 ioctl
  0.49    0.036669          10      3480           rt_sigreturn
  0.47    0.035150          10      3480           fchmod
  0.29    0.021420          12      1740           unlink
  0.25    0.018666          10      1740           getpid
  0.06    0.004745          16       290           stat

詳しくはこちらをご覧ください。

man strace

そしてここ:

https://strace.io/

おすすめ記事