我有大量基于 Selenium 的 perl 测试脚本。完成测试后,它会打印如下日志。这说明了什么?如何计算以下时间以及基于什么
Files=1, Tests=17, 209 wallclock secs ( 0.13 usr + 0.01 sys = 0.14 CPU)
我有大量基于 Selenium 的 perl 测试脚本。完成测试后,它会打印如下日志。这说明了什么?如何计算以下时间以及基于什么
Files=1, Tests=17, 209 wallclock secs ( 0.13 usr + 0.01 sys = 0.14 CPU)
209 wallclock secs ( 0.13 usr + 0.01 sys = 0.14 CPU)
运行时间为 209 秒。这些秒是根据墙上(或手腕上)的时钟经过的时间。
大部分时间都花在等待某事上。等待?好吧,CPU 花了很多时间等待,所以当时间流逝时,CPU 并没有在正在计时的程序上工作。我们知道这一点是因为报告的实际 CPU 时间仅为 0.14 秒,因此这意味着几乎所有的 209 秒都在等待。
在usermode中花费的时间和在syscalls中花费的时间之间还有进一步的区别。简而言之,前者指的是 CPU 在您的程序上花费的时间,而后者指的是 CPU 处理系统调用所花费的时间,即代表您的程序对操作系统进行的调用。
多核附录:正如@ArtM 指出的,或者更确切地说让我发现,给定的时间usr
是sys
程序运行的所有内核的累积时间,这意味着可能存在总 CPU 时间甚至任何一个ofusr
并且sys
可能高于挂钟时间,这可能看起来很奇怪,但当您考虑多核上的并行性时,这是有道理的。
如果您想了解有关此问题usr/sys
或用户模式与内核模式问题的更多信息,请查看此更全面的答案。