UNIX中的挂钟时间、用户cpu时间和系统cpu时间具体是什么?

UNIX中的挂钟时间、用户cpu时间和系统cpu时间具体是什么?,unix,operating-system,Unix,Operating System,我可以根据这些名称进行猜测,但UNIX中的挂钟时间、用户cpu时间和系统cpu时间是什么 用户cpu时间是执行用户代码所花费的时间量,而内核cpu时间是由于特权操作(如IO到磁盘)的需要而在内核中花费的时间量吗 这个测量单位是什么时间 挂钟时间真的是进程在CPU上花费的秒数,还是这个名字只是误导?挂钟时间:根据计算机内部时钟经过的时间,它应该与外部世界的时间相匹配。这与CPU使用率无关;这是供参考的 用户CPU时间和系统时间:正是您所想的。系统调用,包括I/O调用,如读取,写入,等等,通过跳入内

我可以根据这些名称进行猜测,但UNIX中的挂钟时间、用户cpu时间和系统cpu时间是什么

用户cpu时间是执行用户代码所花费的时间量,而内核cpu时间是由于特权操作(如IO到磁盘)的需要而在内核中花费的时间量吗

这个测量单位是什么时间


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

挂钟时间:根据计算机内部时钟经过的时间,它应该与外部世界的时间相匹配。这与CPU使用率无关;这是供参考的

用户CPU时间和系统时间:正是您所想的。系统调用,包括I/O调用,如
读取
写入
,等等,通过跳入内核代码并执行来执行

如果挂钟时间CPU时间,则表示您正在等待磁盘、网络或其他设备


所有的时间都是以秒为单位的。

墙上的时钟时间正是它所说的,墙上的时钟(或手表)所测量的时间

用户cpu时间是花在“用户土地”上的时间,即花在非内核进程上的时间


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

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

用户cpu时间和系统cpu时间与您所说的差不多——花在用户代码上的时间和花在内核代码上的时间

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

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


真时钟或挂钟

real 7m2.444s

在具有24核处理器的系统上,此cmd/进程需要7分钟以上的时间才能完成。通过利用所有给定核的最大可能并行性

用户

用户76m14.607s

cmd/进程占用了这么多cpu时间。 换言之,在单核CPU的机器上,实数和用户数几乎相等,因此完成相同的命令需要约76分钟

sys

sys 2m29.432s

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

注意:该示例假定您的命令利用并行性/线程

详细手册页:


那么这是否意味着挂钟时间总是大于cpu时间?@Pacerier:在单核机器上,是的,但多核机器和多线程程序每经过一秒可以使用超过1 cpu秒。@JonathanLeffler谢谢你的回答,我想得到经过的纳秒数,但使用公式
CPUtime=#clock_cycles/clock_rate
计算CPU时间不能与计算经过的时间相同。你知道我能不能从CPU时间中得到经过的时间吗?@Bionix1441:你不能从CPU时间中得到经过的时间,原因有很多。首先,进程可以在任意时间段内处于空闲状态,不消耗任何CPU时间(例如,守护进程等待客户端通过网络连接到它),因此在经过的时间内,它可能会在数天内无所事事。第二,如果它正在运行,它可能有多个线程,并且如果它有4个线程,并且系统上有4个或更多内核,那么它可能会在每秒经过的时间中消耗4 CPU秒的精力。这些说明没有简单(甚至复杂)的公式可以使用。@Catbuilts:您知道Unix内核与用户程序分开运行吗。当程序进行系统调用时(例如,
read()
getpid()
),内核代表程序执行代码。内核还处理先发制人的多任务,以便轮到其他程序运行,并执行一些常规的内务管理工作以保持系统平稳运行。此代码在“内核代码”(也在“内核模式”下)中执行。这与您编写的代码和您运行的用户库(包括system C库)不同。可能与您发布的时间重复,不是完成了大约一半的并行性吗?(我只是做
(user+sys)/real
来表示这一点。我在这里有点晚了,但是
real>(user+sys)/(num cpu)
,因为该程序也会花费时间空闲或与其他程序共享,而且它可能不会100%的时间(甚至在任何时候)使用所有的内核。)。但如果是一台专用机器,其开销较低,则可能非常接近。
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