2011-01-20 90 views
4

如果进程被硬件中断(第一级中断处理程序)中断,那么CPU调度程序是否会意识到这一点(例如,调度程序是否计算硬件的执行时间中断与中断过程分开)?Linux调度程序是否知道硬件中断(调度程序抖动)

更多细节: 我试图解决一个问题,即在HTOP CPU利用率的方式太低指定数据包加密任务(CPU为< 10%,而在400Mbps的加密数据包;原加密速度只有1.6Gbps ,所以数据包加密不应该比原始加密速度更快)。

说明: 我的假设是数据包封装发生在硬件中断,因此给我一个htop的低CPU使用率的错觉。通常FLIHs被实现,以便他们尽快完成他们的任务,并将他们的工作推迟到SLIHs(我认为是代表ksoftirqd/X执行的第二级中断处理程序)。但是如果FLIH很长一段时间中断一个过程会发生什么?这是否会引入某种操作系统抖动?

我在x86-64平台上使用Ubuntu 10.04.1。

额外的调试信息:

while [ 1 ]; do cat /proc/stat | grep "cpu "; sleep 1; done; 
cpu 288 1 1677 356408 1145 0 20863 0 0 
cpu 288 1 1677 356772 1145 0 20899 0 0 
cpu 288 1 1677 357108 1145 0 20968 0 0 
cpu 288 1 1677 357392 1145 0 21083 0 0 
cpu 288 1 1677 357620 1145 0 21259 0 0 
cpu 288 1 1677 357972 1145 0 21310 0 0 
cpu 288 1 1677 358289 1145 0 21398 0 0 
cpu 288 1 1677 358517 1145 0 21525 0 0 
cpu 288 1 1678 358838 1145 0 21652 0 0 
cpu 289 1 1678 359141 1145 0 21704 0 0 
cpu 289 1 1678 359563 1145 0 21729 0 0 
cpu 290 1 1678 359886 1145 0 21758 0 0 
cpu 290 1 1678 360296 1145 0 21801 0 0 

第七(或第六号列)在这里我想列是硬件中断处理程序内花(HTOP使用此proc文件得到统计)的时间。我想知道这是否会最终成为Linux或驱动程序中的错误。当我拍摄这些/ proc/stat快照时,流量是500Mbps和500Mbps。

+0

这是一个编程问题?我不知道? – Gabe 2011-01-21 00:02:50

+0

N.B. `while while [1];`更容易写成while`;` – user562374 2011-01-21 09:04:05

回答

1

在中断处理程序中花费的时间被计算在内。

htop在“si”(软中断)和“hi”(硬中断)中显示它。 ni很好,wa is io-wait。

编辑: 从人PROC:

第六栏是硬件中断时间

第七列是软中断

8的物质被盗时间

nienth是客人的时间。

后两者仅对虚拟化系统有意义。

您是否已经使用CONFIG_IRQ_TIME_ACCOUNTING(处理器类型和功能/精细粒度任务级别IRQ时间记帐)选项集来构建内核?