如果进程被硬件中断(第一级中断处理程序)中断,那么CPU调度程序是否意识到这一点(例如,调度程序是否将硬件中断的执行时间与被中断的进程分开计数)?
更多细节:我试图解决一个问题,那就是htop的CPU使用率对于指定的数据包encryption任务而言太低了(在400Mbps的速度下,数据包encryption速度小于10%;原始encryption速度只有1.6Gbps,因此数据包encryption应该没有比原始encryption速度更快的速度)。
说明:我的假设是数据包封装发生在硬件中断,因此给我一个htop中CPU使用率低的错觉。 通常FLIHs被实现,以便他们尽快完成他们的任务,并将他们的工作推迟到SLIH(我猜是代表ksoftirqd / X执行的二级中断处理程序)。 但是,如果FLIH很长一段时间中断一个过程,会发生什么? 这是否会引入某种操作系统抖动?
我在x86-64平台上使用Ubuntu 10.04.1。
其他debugging信息:
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快照时,stream量是500Mbps和500Mbps。
在中断处理程序中花费的时间被计算在内。
htop在“si”(软中断)和“hi”(硬中断)中显示。 ni很好,wa is io-wait。
编辑:从man proc:
第六栏是硬件irq时间
第七列是softirq
八是被盗时间
nienth是客人的时间。
后两者只对虚拟化系统有意义。
你有一个使用CONFIG_IRQ_TIME_ACCOUNTING(处理器类型和功能/精细粒度任务级别IRQ时间记帐)选项设置的内核吗?