令人困惑的时间输出

时间:2009-12-04 19:20:24

标签: mysql ruby unix time

此命令从MySQL获取一些数据,然后对其进行操作。为什么'真实'时间比'用户'时间高得多?

>time ./command.rb

real    45m45.457s
user    3m36.478s
sys     0m28.226s

为了澄清 - 我理解real,user和sys输出之间的区别。但是,我很困惑为什么会有这么大的差异。我运行它的机器几乎没有使用CPU,我的命令中没有任何线程。它所做的就是获取数据。一个复杂的MySQL声明可能是造成这种差距的原因吗?

4 个答案:

答案 0 :(得分:2)

系统花费大部分时间等待磁盘旋转并前往寻找。

“用户”时间是CPU为您处理数字所花费的时间。

答案 1 :(得分:2)

user和sys报告cpu忙的时间。当阻塞任何网络或磁盘I / O时,CPU不会忙。尝试例如“时间睡眠1”或“时间dd如果= / dev / 0 = / dev / null bs = 1024 count = 1000000”以查看差异。第一个只是块,第二个将包含大量的CPU使用。

答案 2 :(得分:1)

“实际”时间是经过的实际挂钟时间的数量,其中“user”和“sys”次是在每个处理类中用于作业的CPU时间量。如果“真实”的时间要高得多,你的工作可能会花费大量时间等待资源或睡觉。

答案 3 :(得分:1)

只是一个猜测,但如果您通过ssh连接查看结果,则可能您的大部分时间都在等待处理器加密要发送到远程控制台的数据。