2011-01-20 91 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時間記帳)選項集來構建內核?