我写了一个耗时的python程序。基本上,python程序大部分时间都花费在由f2py
包裹的fortran例程中,而fortran例程大部分时间都花费在lapack上。但是,当我在工作站中运行此程序时,我发现80%的CPU时间是用户时间,而20%的CPU时间是系统时间。
在另一个SO问题中,我读到了:
不同之处在于时间是花在用户空间还是内核空间上。用户CPU时间是运行程序代码(或库中的代码)的处理器所花费的时间;系统CPU时间是代表程序在操作系统内核中运行代码所花费的时间。
所以如果这是真的,我假设所有的cpu时间都应该用于用户时间。 20%的系统时间表明我需要对程序进行分析吗?
修改
更多信息:我无法重现20%的系统CPU时间。在另一次运行中,time
命令给出:
答案 0 :(得分:1)
操作系统不断切换在任何给定时刻运行的内容。你的程序会运行一段时间,但最终会有一个中断,系统会切换到别的东西,或者它可能只是决定运行其他东西一两秒,然后切换回来。很难强制操作系统不要执行此操作。这是操作系统工作的一部分;保持所有领域的活动。