用户CPU时间偏差。它是由什么引起的?
User CPU time deviation. What is it caused by?
我想知道为什么 Unix 中的时间命令总是输出不同的用户 CPU 时间。据说是CPU执行所需进程的用户代码的时间,所以不包括内核管理的任务:
- 任何I/O或其他硬件等待和中断,还有缓存管理
- 其他进程的干预(夺走控制权)
- 用户代码不知道的所有事情
但是对于一个对 1000000 个元素进行冒泡排序的简单 C 程序,它总是向用户显示 CPU 时间范围为 0.3 到 1.0 秒。
我在有关内核和操作系统的经典书籍中几乎找不到这方面的信息。求大神赐教
'All things that user code doesn't know about
不正确。用户时间是指用户态使用的CPU个周期。
有两种执行模式,用户模式(具有有限权限)和内核模式(具有几乎所有权限)。在用户模式下,通常执行不涉及更高级别特权的操作。每当进行内核 call/system 调用时,用户模式就会切换到内核模式。
有关 CPU 模式的更多信息可在此处获得,
因此,即使对于简单的冒泡排序程序,您也将使用相当多的 CPU 个循环。以秒为单位测量每个程序的用户时间可能很困难,而且用处不大,因为获得准确的数字没有多大意义。这将取决于底层硬件、内核版本、共享资源的其他进程等,并且有很大差异。即使在连续运行中也会有所不同——在这种情况下可以考虑范围。
在一般情况下,用户 CPU 时间会比系统 CPU 时间长,但反之亦然。
我想知道为什么 Unix 中的时间命令总是输出不同的用户 CPU 时间。据说是CPU执行所需进程的用户代码的时间,所以不包括内核管理的任务:
- 任何I/O或其他硬件等待和中断,还有缓存管理
- 其他进程的干预(夺走控制权)
- 用户代码不知道的所有事情
但是对于一个对 1000000 个元素进行冒泡排序的简单 C 程序,它总是向用户显示 CPU 时间范围为 0.3 到 1.0 秒。
我在有关内核和操作系统的经典书籍中几乎找不到这方面的信息。求大神赐教
'All things that user code doesn't know about
不正确。用户时间是指用户态使用的CPU个周期。 有两种执行模式,用户模式(具有有限权限)和内核模式(具有几乎所有权限)。在用户模式下,通常执行不涉及更高级别特权的操作。每当进行内核 call/system 调用时,用户模式就会切换到内核模式。
有关 CPU 模式的更多信息可在此处获得,
因此,即使对于简单的冒泡排序程序,您也将使用相当多的 CPU 个循环。以秒为单位测量每个程序的用户时间可能很困难,而且用处不大,因为获得准确的数字没有多大意义。这将取决于底层硬件、内核版本、共享资源的其他进程等,并且有很大差异。即使在连续运行中也会有所不同——在这种情况下可以考虑范围。
在一般情况下,用户 CPU 时间会比系统 CPU 时间长,但反之亦然。