当我做$(time sleep 1)
,我得到:为什么sys time 0在这里?
real 0m1.001s
user 0m0.000s
sys 0m0.000s
我不知道为什么sys
时间为0,所以nanosleep
从用户空间叫什么名字?
此外,实时是否等于上下文切换时间+真实睡眠时间(1s)?
当我做$(time sleep 1)
,我得到:为什么sys time 0在这里?
real 0m1.001s
user 0m0.000s
sys 0m0.000s
我不知道为什么sys
时间为0,所以nanosleep
从用户空间叫什么名字?
此外,实时是否等于上下文切换时间+真实睡眠时间(1s)?
来看,我们可以看到,
真正:时间长的节目走上终止,计算公式为:
(time at end of program - time at star of program)
用户:在一个结构TMS的tms_utime和tms_cutime值的总和作为由次返回(2)
SYS:在一个结构TMS的tms_stime和tms_cstime值如由次返回的总和(2)
所以,你得到的结果是有效的,意味着你的程序持续了1秒,在那1秒内它使用0秒作为用户时间,0秒作为系统时间。这正是我们应该从该计划期望的。
当一个程序正在休眠时,它只是意味着内核不会安排它进行处理,它甚至不会运行no-ops,它只是不会运行,因此不会消耗系统时间。
因为进程在休眠时没有执行内核空间代码。内核正在执行其他进程或空闲进程,两者都不受睡眠进程的影响。在man page for time
这些是四舍五入的,运行几百次,你会看到稍微不同的时间。 (花在睡眠上的时间没有被计算在内,除非它是一个非真实睡眠的忙碌循环,否则不是CPU时间。) – Mat 2012-08-05 09:35:28