Причина высоких прерываний и переключений контекста
У меня есть четырехъядерное ядро, и я заметил на munin (мониторинг прерываний и переключений контекста), что мои прерывания и переключатели контекста выросли до 25k в секунду, в то время как среднее значение было 250 в течение некоторого времени.
Понятия не имею, что произошло, а также понятия не имею, что это значит, за исключением того факта, что, согласно моим инструментам мониторинга, это аномалия.
Это произошло в одном из моих виртуальных контейнеров openVZ.
Примечание. В то же время нагрузка выросла до 2,5, а загрузка ЦП была в одной точке: 110% системы, 15% пользователей и 100% IOwait.
Я прикрепил вывод для /proc/interrupts на хост-машине.
CPU0 CPU1 CPU2 CPU3
0: 48039108 56660082 56431151 51696624 IO-APIC-edge timer
1: 0 3 0 0 IO-APIC-edge i8042
4: 4 4 1 3 IO-APIC-edge serial
8: 1 0 0 0 IO-APIC-edge rtc
9: 0 0 0 0 IO-APIC-level acpi
12: 4 0 0 0 IO-APIC-edge i8042
50: 15 16 16 16 IO-APIC-level ata_piix
66: 11113 0 0 56276172 PCI-MSI eth0
169: 12839820 4849263 1080 1167 IO-APIC-level ioc0
225: 6 7 5 5 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4
233: 0 0 0 0 IO-APIC-level uhci_hcd:usb3
NMI: 17173 16340 16694 17306
LOC: 214221117 214220936 214196385 214196306
ERR: 0
MIS: 0
3 ответа
Это будет многопоточное приложение, выполняющее много блокировок. Каждый раз, когда он блокируется, центральный процессор вытесняет свой квант и позволяет другому потоку идти. Вы можете писать M/T-приложения, которые тратят все свое время между потоками, ни одно из которых не выполняет никакой полезной работы, и поскольку они вызывают все эти переключения контекста, ЦП тратит больше времени на переключение потоков, чем сами потоки получают Работай.
Посмотрите, есть ли какие-либо всплески загрузки процессора приложением во время этих всплесков.
Это может быть числовой артефакт, созданный системой мониторинга, вызванный очень коротким интервалом времени. Может быть, это просто эффект выборки, который вы видите здесь.
Может быть, таймер ядра Linux (CONFIG_HZ
) настроен на регулярный запуск, на частоте 250 Гц? Проверьте файл конфигурации ядра. Есть и другие частоты на выбор.