UNIX中的wall-clock-time,user-cpu-time和system-cpu-time具体是什么?

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时间和系统时间:正是你所想的。系统调用(包括诸如readwrite等I/O调用)是通过跳入内核代码并执行来执行的。

如果挂钟时间小于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