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

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

我执行time许多命令(即nslookupSSH,并收集完成隐含服务所需的总时间(即域名系统)。因此,我收集usersys时间,因为real当我的进程阻塞时,我不需要......我猜,时间会计算时间。

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

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

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

答案1

真实的是进程终止所花费的总时间(即启动时间和停止时间之间的差值):

$ time sleep 3

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

在这份清单中,用户系统分别指用户态和内核态所花费的时间。这些不包括不活动时所花费的时间睡眠状态。当一个进程故意请求它时,或者当它等待 IO(网络/磁盘访问/用户交互)可用时,或者当系统负载非常高时缺乏可用的 CPU 时,等待其他进程终止,进程就会进入睡眠状态, ETC。

通常,如果您time致电wget真实的将对应于下载所需的时间,用户应该可以忽略不计(除非wget被要求执行密集的数据处理),系统应该很小(可能需要花费一些时间来处理缓冲区,将数据从内核空间来回移动到用户空间。)

相关内容