如何剖析构建过程

如何剖析构建过程

我在远程 Linux 机器上构建代码,这需要很长时间。由于所有文件系统都在 NFS 上,我怀疑 NFS 是瓶颈。我可以将构建过程 (make all) 归结为系统读/写调用吗?或者简单地说,我需要什么工具来找到瓶颈。strace 会有帮助吗?

答案1

在这种情况下,strace 很可能不会帮助你,因为它不会提供有意义的时间信息。你可以使用命令获取摘要

strace -t make all

输出显示 I/O(读写调用)使用了多少时间,但很难区分正常使用和过度等待。

如果可以,最简单的检查 NFS 是否是瓶颈的方法是计算 NFS 上的编译时间,然后在本地磁盘上计算,这样应该会更快。如果这不可能,一个有用且简单的指标是等待时间,例如顶部。 从男士上衣

    wa  --  iowait
      Amount of time the CPU has been waiting for I/O to complete.

例如

CPU:0.0%us、0.3%sy、0.0%ni、10.7%id、80.0%wa、0.0%hi、0.0%si、10.0%st

显示处理器主要将时间用于等待 I/O 完成。在这种情况下,罪魁祸首是另一台大量使用磁盘的虚拟机,但情况与等待 NFS 几乎相同。

这需要监控顶部编译过程中的输出(至少有时),例如sar(手册页)自动收集系统统计数据。

希望这有帮助。

相关内容