2014-09-19 15 views
1

我在CentOS 6.5上運行cat /proc/interrupts,內核爲2.6.32-431.el6.x86_64。結果是爲什麼/ proc/interrupts中顯示的IO-APIC邊沿計時器的計數不會經常改變?

  CPU0  CPU1  CPU2  CPU3  
    0:  31039   0   0   0 IO-APIC-edge  timer 
// content omitted 
LOC: 211509915 178638855 154577696 153050202 Local timer interrupts 
// content omitted 

然後我運行cat /proc/interrupts幾次。但IO-APIC邊沿計時器中斷的計數31039不會改變。我的第一個問題是IO-APIC邊沿計時器是否代表每秒中斷HZ時間的全局計時器。如果是,爲什麼它的計數不會每秒改變HZ次數?我運行grep CONFIG_HZ /boot/*config*,它顯示CONFIG_HZ=1000

我的第二個問題是爲什麼只有CPU0收到定時器中斷?

回答

-1

在具有本地APIC的SMP機器上,全局定時器僅在啓動時使用。本地APIC建立後,本地定時器將中斷呼叫update_process_times和更新jiffies。全局計時器未使用。所有的CPU都執行update_process_times。但只有一個CPU更新jiffies。

回答我的第一個問題:IO-APIC-邊緣計時器表示全局計時器。但它只在啓動時使用。由於它在啓動後沒有被使用,它的計數不會每秒改變HZ次數。

回答我的第二個問題:只有一個CPU處理中斷,其它CPU會忽略它:

if cpuid == cpu_for_global_timer 
    handle it 
else 
    ignore it 

有關詳細信息,請參閱http://yaojingguo.github.io/Linux-Kernel-Time.html

0

timer舊的ISA定時器中斷;它僅在引導時使用,直到內核檢測並初始化本地APIC定時器。

每個CPU(內核)都使用HZ定時器進行調度。 但是,使用CONFIG_NO_HZ_IDLE甚至CONFIG_NO_HZ時,該計時器在不需要時被禁用。 在這種情況下,只有一個CPU需要定時器來進行計時。

相關問題