「RES:Rescheduling interrupts」和「LOC:Local timer interrupts」有什麼區別?什麼是負責觸發RES中斷? LOC與處理器中的定時器h/w產生的通用定時器中斷是否相同?什麼是重新調度中斷(RES)?是什麼導致了它?它在Linux內核中如何處理?
此外,請在定時器中斷和RES中斷期間調用一下調度程序的哪些部分?在Linux內核中如何發生?
在此先感謝。
「RES:Rescheduling interrupts」和「LOC:Local timer interrupts」有什麼區別?什麼是負責觸發RES中斷? LOC與處理器中的定時器h/w產生的通用定時器中斷是否相同?什麼是重新調度中斷(RES)?是什麼導致了它?它在Linux內核中如何處理?
此外,請在定時器中斷和RES中斷期間調用一下調度程序的哪些部分?在Linux內核中如何發生?
在此先感謝。
重新調度中斷是Linux內核喚醒空閒CPU內核以調度線程的方式。在SMP系統上,這通常由調度程序完成,以便將負載分散到多個CPU內核中。
調度程序嘗試將處理器活動分佈到儘可能多的內核中。一般的經驗法則是最好在低功耗(較低的時鐘頻率)下在所有內核上運行儘可能多的進程,而不是讓一個內核真正忙於全速運行而其他內核正在休眠。
重新計劃中斷被使用Inter-Processor Interrupts (IPI)實現。欲瞭解更多詳情,請點擊這裏 article on Rescheduling Interrupts on Linux。
本地計時器中斷由APIC特定CPU核心提高。只有該CPU核心接收中斷並處理它們。有關其各種優點的簡要說明,請參閱answer。
感謝您的回覆。 因此,CFS調度程序代碼中的** TIF_NEED_RESCHED ** **基本上處理了此RES中斷? 第二,哪個中斷觸發調度器?是通過APIC的定時器中斷嗎?如果是這樣,那麼定時器和中斷中斷將異步發生w.r.t.彼此? 更清晰的調度程序調用將有所幫助。再次感謝! – user31986