为什么“实际”时间要比“用户”和“ sys”时间的总和高得多?


19

我执行了time许多命令(即nslookup),SSH然后收集了暗示服务完成(即DNS)所需的总时间。因此,我收集usersys时间,因为real时间是我的进程阻塞的时间,而我不需要...我想。

但是我的一些测试结果如下:

real 3m22.033s
user 0m0.009s
sys 0m0.014s

我在有限资源的Linux机器上执行这些测试,但是real时间仍然很长。这是否仅表示该框正忙于运行不同的进程?将usersys时间相加以了解服务花费了多少,仍然正确吗?

Answers:


22

实数是过程终止所花费的总时间(即开始时间和停止时间之间的差):

$ time sleep 3

real    0m3.002s
user    0m0.000s
sys     0m0.000s

在此清单中,用户sys分别指在用户模式和内核模式下花费的时间。这些不包括闲置时处于睡眠状态所花费的时间。当系统有很高的负载时,由于故意缺少请求,或等待IO(网络/磁盘访问/用户交互)可用或等待其他进程终止时,该进程会进入睡眠状态等

通常情况下,如果调用timewget真正将对应的下载时间,时间的用户应该可以忽略不计(除非wget被要求进行密集型数据处理),SYS要小(有的时候可能会花处理的缓冲区,移动数据备份从内核空间到用户空间。)


抱歉,我添加wget了这个问题,但实际上我没有time,但是感谢您的解释。real诸如等待网络IO之类的阻塞时间之类的说法,使我也考虑包括该时间,因为我实际上是在测试网络。谢谢。
穆罕默德·盖尔巴纳

您是否可以确认以下内容,以测试网络的性能以及被查询机器(是DNS服务器还是ping的机器)的响应能力,仅测量real时间就足够了吗?
穆罕默德·盖尔巴纳

@MuhammadGelbana:这个实时只是秒表,仅此而已。如果让ping22分钟运行3分钟,它将返回3分钟22。在这种情况下,它是无用的(实际上,在大多数情况下,它作为基准没有用,结果取决于外部因素)。
斯特凡希门尼斯

谢谢。但是您知道为什么它没有超时吗?我读到默认超时为nslookup5秒!
穆罕默德·盖尔巴纳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.