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

问题描述 投票:0回答:5

我可以根据名称进行猜测,但是 Unix 中的 wall-clock-time、user-cpu-time 和 system-cpu-time 具体是什么?

用户CPU时间是执行用户代码所花费的时间,而内核CPU时间是由于需要特权操作(例如磁盘I/O)而在内核中花费的时间吗?

这个测量的时间单位是什么?

挂钟时间真的是进程在 CPU 上花费的秒数还是这个名称只是误导?

unix operating-system
5个回答
234
投票

挂钟时间是指墙上的时钟(或手中的秒表)测量的过程开始到“现在”之间经过的时间。

用户 cpu 时间和系统 cpu 时间与您所说的差不多 - 用户代码花费的时间和内核代码花费的时间。

单位是秒(和亚秒,可能是微秒或纳秒)。

挂钟时间不是进程在CPU上花费的秒数;它是经过的时间,包括等待 CPU 开启的时间(当其他进程开始运行时)。


51
投票

挂钟时间:根据计算机内部时钟流逝的时间,该时间应与外界时间匹配。这与 CPU 使用率无关;仅供参考。

用户CPU时间和系统时间:正是你所想的。系统调用,包括 I/O 调用,如

read
write
等,是通过跳转到内核代码并执行来执行的。

如果挂钟时间 < CPU time, then you're executing a program in parallel. If wall clock time > CPU 时间,则您正在等待磁盘、网络或其他设备。

根据 SI,所有数据均以秒为单位测量。


14
投票
time [WHAT-EVER-COMMAND]

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

cmd/进程已经使用了这么多的 CPU 时间。

换句话说,在单核CPU的机器上,真实的和用户的几乎相等,所以相同的命令大约需要76分钟才能完成。

系统

系统2分29.432秒

这是内核执行运行此cmd的所有基本/系统级操作所花费的时间,包括上下文切换、资源分配等

注意:该示例假设您的命令使用并行性/线程。

详细手册页:https://linux.die.net/man/1/time


7
投票

挂钟时间正如其所言,是通过墙上的时钟(或手表)测量的经过的时间

用户CPU时间是花费在“用户空间”的时间,即花费在非内核进程上的时间。

系统 CPU 时间是在内核中花费的时间,通常是用于服务系统调用的时间。


0
投票
  • 实时是从程序开始到程序结束的时间。 *实时也称为挂钟时间墙上时间

  • 用户CPU时间是程序在用户空间上使用CPU的时间量。 *用户空间是应用程序的内存空间。

  • 系统CPU时间是程序在内核空间上使用CPU的时间量。 *内核空间是操作系统核心kernel的内存空间。

例如,您可以在 Linux 或 Windows 上使用 Git 检查它们,如下所示:

$ time sleep 3

real    0m3.039s
user    0m0.046s
sys     0m0.015s
© www.soinside.com 2019 - 2024. All rights reserved.