当我使用Linux的time
实用程序测量Go程序的运行时间时,我得到以下输出:
real 1m9.177s
user 7m1.788s
sys 0m39.016s
当我在Go的pprof CPU分析器中查看相同的程序执行输出时,我得到以下输出:
Entering interactive mode (type "help" for commands)
(pprof) top
143.32s of 176s total (81.43%)
pprof从这个176s数字到哪里?既不是时钟时间也不是CPU时间。我正在运行此程序,GOMAXPROCS
设置为8,我觉得这与它有关。 pprof如何衡量运行时间,为什么它与linux time
不同?
答案 0 :(得分:0)
这看起来像是一些bug。可能是一些已知的bug。为了输出176s,pprof所做的是将已知采样周期乘以样本数。它应该是相当准确的w.r.t.进程(系统+用户)花费的总CPU时间。
您的程序是否有可能通过子进程生成一些工作?这可能是解释差异的一种方式。