我可以根据名称进行猜测,但是在UNIX中,挂钟时间,用户cpu时间和系统cpu时间具体是什么?
用户cpu时间是否是执行用户代码所花费的时间,而内核cpu时间是否是由于需要特权操作(例如从IO到磁盘)而在内核中花费的时间?
该度量单位是什么时间单位。
挂钟时间确实是进程在CPU上花费的秒数,还是名称只是误导?
我可以根据名称进行猜测,但是在UNIX中,挂钟时间,用户cpu时间和系统cpu时间具体是什么?
用户cpu时间是否是执行用户代码所花费的时间,而内核cpu时间是否是由于需要特权操作(例如从IO到磁盘)而在内核中花费的时间?
该度量单位是什么时间单位。
挂钟时间确实是进程在CPU上花费的秒数,还是名称只是误导?
Answers:
挂钟时间是指墙上的时钟(或手头的秒表)在流程开始到“现在”之间经过的时间。
用户cpu时间和系统cpu时间与您所说的差不多-用户代码所花费的时间以及内核代码所花费的时间。
单位是秒(和亚秒,可能是微秒或纳秒)。
挂钟时间不是进程在CPU上花费的秒数;它是经过的时间,包括等待其打开CPU的时间(其他进程开始运行)。
CPUtime = #clock_cycles / clock_rate
不能与计算经过的时间相同。您是否知道我可以从CPU时间获得经过时间?
read()
或getpid()
),内核将代表您的程序执行代码。内核还处理抢先式多任务处理,以便其他程序可以轮流运行,并进行一些常规的内务整理工作,以保持系统平稳运行。该代码以“内核代码”(也在“内核模式”下)执行。这与您编写的代码和所运行的用户库(包括系统C库)不同。
墙上时钟的时间正好是它所说的,所经过的时间由墙上(或手表)上的时钟测量
用户cpu时间是在“用户土地”上花费的时间,即在非内核进程上花费的时间
系统cpu时间是在内核中花费的时间,通常是服务系统调用所花费的时间。
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核心处理器的系统上,此cmd /进程需要7分钟以上的时间才能完成。通过在所有给定的内核中利用最可能的并行性。
用户
用户76m14.607s
cmd /进程已使用了这么多的cpu时间。换句话说,在具有单核CPU的计算机上,真实数和用户数几乎相等,因此同一命令将花费约76分钟才能完成。
系统
sys 2m29.432s
这是内核执行所有基本/系统级操作以运行此cmd所花费的时间,包括上下文切换,资源分配等。
注意:该示例假定您的命令使用并行性/线程。
详细的手册页:https : //linux.die.net/man/1/time
(user + sys) / real
来表示。