What specifically are wall-clock-time, user-cpu-time, and system-cpu-time in UNIX?
我可以根据名称进行猜测,但是在Unix中墙时钟时间、用户CPU时间和系统CPU时间具体是什么?
用户CPU时间是指执行用户代码而内核CPU时间是指由于需要特权操作(如IO到磁盘)而在内核中花费的时间吗?
这个度量单位是什么时间单位?
挂钟时间真的是进程在CPU上花费的秒数吗,或者这个名字只是误导了我们?
墙壁时钟时间是指墙壁上的时钟(或手上的秒表)在流程开始和"现在"之间经过的时间。
用户CPU时间和系统CPU时间与您所说的差不多——在用户代码中花费的时间量和在内核代码中花费的时间量。
单位是秒(以及亚秒,可能是微秒或纳秒)。
墙壁时钟时间不是进程在CPU上花费的秒数;它是经过的时间,包括等待其在CPU上打开的时间(而其他进程开始运行)。
挂钟时间:根据计算机内部时钟所经过的时间,应该与外部世界的时间相匹配。这与CPU的使用无关,仅供参考。
用户CPU时间和系统时间:正是你所想的。系统调用(包括诸如
如果挂钟时间小于CPU时间,那么您将并行执行一个程序。如果挂钟时间>CPU时间,您将等待磁盘、网络或其他设备。
所有这些都是以秒为单位,按照国际单位制进行测量的。
挂钟时间就是它所说的时间,它是由你墙上的钟(或手表)测量的经过的时间。
用户CPU时间是在"用户土地"上花费的时间,即在非内核进程上花费的时间。
系统CPU时间是在内核中花费的时间,通常是为系统调用提供服务的时间。
1 | time [WHAT-EVER-COMMAND] |
1 2 3 4 5 6 7 8 9 | real 7m2.444s user 76m14.607s sys 2m29.432s $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 24 |
真时钟还是挂钟
实际7M2.444S
在一个有24核处理器的系统上,这个命令/过程需要7分钟以上才能完成。利用所有给定核心的最大可能并行性。
用户
用户76M14.607S
命令/进程占用了这么多的CPU时间。换句话说,在单核CPU的机器上,real和user几乎相等,因此完成相同的命令需要大约76分钟。
系统
sys 2M27.432
这是内核执行所有基本/系统级操作以运行此命令所花费的时间,包括上下文切换、资源分配等。
Note: The example assumes that your command utilizes parallelism/threads.
Detailed man page: https://linux.die.net/man/1/time