用户CPU时间偏差。它是由什么引起的?

时间:2017-07-31 22:07:06

标签: performance time process cpu

我想知道为什么Unix中的time命令总是输出不同的用户CPU时间。据说现在是时候CPU花费执行所需进程的用户代码了,所以它排除了内核管理的任务:

  • 任何I / O或其他硬件等待和中断,以及缓存管理
  • 其他流程'干预(取消控制)
  • 用户代码不知道的所有内容

但对于一个带有1000000个元素的冒泡排序的简单C程序,它总是显示用户CPU时间范围从0.3到1.0秒。

我在关于内核和操作系统的经典书籍中找不到关于它的信息。有人,请赐教。

1 个答案:

答案 0 :(得分:2)

if(empty($_POST['submit']) === false) { $email = htmlentities(strip_tags($_POST['email'])); $logname = 'email.txt'; $logcontents = file_get_contents($logname); if(strpos($logcontents,$email)) { die('You are already subscribed.'); } else { $filecontents = $email.', '; $fileopen = fopen($logname,'a+'); $filewrite = fwrite($fileopen,$filecontents); $fileclose = fclose($fileopen); if(!$fileopen or !$filewrite or !$fileclose or '') { die('Error occured'); } else { echo 'Your email has been added.'; } } } else { showForm(); }

不是真的。用户时间表示用户模式使用的CPU周期。 有2种执行模式,用户模式(具有有限权限)和内核模式(几乎具有所有权限)。在用户模式中,通常执行不涉及更高级别特权的操作。无论何时进行内核调用/系统调用,用户模式都切换到内核模式。

此处提供了有关CPU模式的更多信息,

  1. http://www.linfo.org/kernel_mode.html
  2. http://minnie.tuhs.org/CompArch/Lectures/week05.html
  3. 因此,即使对于简单的冒泡排序程序,您也会使用相当多的CPU周期。以每个程序的实际秒数测量用户时间可能很困难,也不太有用,因为获得准确的数字将没有多大意义。这将取决于底层硬件,内核版本,共享资源等其他进程的变化很大。即使在连续运行中也会有所不同 - 在这种情况下可以考虑范围。

    在一般情况下,用户CPU时间将高于系统CPU时间,但可以反转。