为什么“真实”时间比“用户”和“系统”时间加起来要高得多?

Muh*_*ana 21 time time-utility

我执行并执行time许多命令(即nslookup),SSH并收集完成隐含服务(即DNS)所需的总时间。所以我收集usersys时间,因为real时间计算我不需要的进程阻塞的时间......我猜。

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

real 3m22.033s
user 0m0.009s
sys 0m0.014s
Run Code Online (Sandbox Code Playgroud)

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

Sté*_*nez 25

Real是进程终止所需的总时间(即开始时间和停止时间之间的差值):

$ time sleep 3

real    0m3.002s
user    0m0.000s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

在这个清单中,usersys分别是指在用户模式和内核模式下花费的时间。这些不包括在不活动和睡眠状态下花费的时间。一个进程在故意请求它时进入睡眠状态,或者当它等待 IO(网络/磁盘访问/用户交互)可用时,或等待其他进程终止时,因为当系统处于非常高的负载下时没有可用的 CPU , 等等。

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