Linux

如何配置掛鐘時間?

  • January 25, 2022

在我的程序中,實時持續時間有時是 CPU 時間的 3 倍。這是一個執行大量記憶體分配和 NFS 基礎讀/寫的單執行緒應用程序。所以我懷疑是記憶體交換或 NFS 讀寫會減慢速度。例如,以下是輸出/usr/bin/time a.out

2165.32user 64.93system 6036.33elapsed

是否有任何實時分析工具?我知道並使用了多種工具進行 cpu 時間分析,但不確定是否有任何東西可以幫助並指出 NFS / mem-swap 或任何其他掛鐘減速。

我的程序是用 C++ 編寫的

編輯/usr/bin/time最後給我一個總結——我不是在找那個。我正在尋找一種方法來關聯我的應用程序的特定程序塊期間的實時消耗。像 collect/gprof 這樣的分析器可以告訴我類似的事情

  • 由於等待而發生大多數上下文切換的區域。
  • 發生 NFS 訪問的特定功能。

由於我的系統是專用的,我不擔心可能影響這些配置文件的其他程序。

不確定..但看起來你可能需要 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/

引用自:https://unix.stackexchange.com/questions/608463