Что такое переназначение прерываний (RES)? Чем это вызвано? Как это обрабатывается в ядре Linux?

в чем разница между "RES: Rescheduling interrupts" и "LOC: Local timer interrupts"? Что отвечает за срабатывание прерывания RES? Является ли LOC таким же, как общее прерывание таймера, которое генерируется таймером h/w в процессоре?

кроме того, Пожалуйста, дайте некоторую ясность о том, какая часть планировщика вызывается во время прерывания таймера и прерывания RES? Как это происходит в ядре Linux?

спасибо заранее.

1 ответов


перенос прерываний - это способ ядра Linux разбудить простаивающее ядро процессора, чтобы запланировать поток на нем. В системах SMP это часто делается планировщиком, чтобы распределить нагрузку по нескольким ядрам процессора.

планировщик пытается распространить активность процессора на как можно больше ядер. Общее эмпирическое правило заключается в том, что предпочтительнее иметь как можно больше процессов, работающих на всех ядрах с меньшей мощностью (более низкие тактовые частоты) вместо того, чтобы одно ядро действительно было занято на полной скорости, пока другие ядра спят.

переназначение прерываний реализуется с помощью Межпроцессорные прерывания (IPI). Для более подробной проверки это статью Перенос Прерываний на Linux.


локальный таймер прерывает поднимаются APIC для определенного CPU-core. Только то, что CPU-core получает прерывания и обрабатывает их. Для краткого описания его различных преимуществ, оформить заказ это ответ.