用于计算cpu时间的机制是什么,包括在内核中使用的机制(sys
的输出中top
)?
我正在考虑这里的限制,因为我记得读过有关过程能够避免显示他们的cpu使用情况,如果他们在完成时间片之前产生的话。
具体来说,我正在研究KVM虚拟化中的一些现有代码。
if (guest_tsc < tsc_deadline)
__delay(tsc_deadline - guest_tsc);
在禁用中断的情况下调用代码。我想知道Linux是否能正确解释中断禁用的长时间等待。
如果确实如此,它会帮助我减少对某些边缘情况配置的担忧,这些配置可能导致长时间但有限的忙碌等待。系统管理员至少可以注意到它是否足以降低吞吐量(尽管必然是延迟),并确定负责的特定流程(在这种情况下,QEMU,流程ID将允许识别特定的虚拟机)。
答案 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时间将不计入特定进程:(。