使用什么机制来计算进程的CPU使用率,特别是`sys`(在内核中花费的时间)

时间:2016-05-30 13:55:44

标签: process linux-kernel cpu-usage

用于计算cpu时间的机制是什么,包括在内核中使用的机制(sys的输出中top)?

我正在考虑这里的限制,因为我记得读过有关过程能够避免显示他们的cpu使用情况,如果他们在完成时间片之前产生的话。

上下文

具体来说,我正在研究KVM虚拟化中的一些现有代码。

if (guest_tsc < tsc_deadline)
    __delay(tsc_deadline - guest_tsc);

在禁用中断的情况下调用代码。我想知道Linux是否能正确解释中断禁用的长时间等待。

如果确实如此,它会帮助我减少对某些边缘情况配置的担忧,这些配置可能导致长时间但有限的忙碌等待。系统管理员至少可以注意到它是否足以降低吞吐量(尽管必然是延迟),并确定负责的特定流程(在这种情况下,QEMU,流程ID将允许识别特定的虚拟机)。

1 个答案:

答案 0 :(得分:0)

在Linux 4.6中,我认为处理时间仍然是通过定时器中断中的采样来计算的。

/*
 * Called from the timer interrupt handler to charge one tick to current
 * process.  user_tick is 1 if the tick is user time, 0 for system.
 */
void update_process_times(int user_tick)

因此,一个过程确实有可能对这种近似进行游戏。

在回答我的特定查询时,看起来在禁用中断时花费的CPU时间将计入特定进程:(。