Назад | Перейти на главную страницу

причина высоких прерываний и переключений контекста

У меня есть четырехъядерный процессор, и я заметил на 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

Это будет многопоточное приложение, в котором много блокировок. Каждый раз, когда он блокируется, ЦП будет упреждать свой такт и позволяет другому потоку работать. Вы можете писать приложения M / T, которые проводят все свое время, переключаясь между потоками, ни одно из которых в конечном итоге не выполняет какой-либо полезной работы, и поскольку они вызывают все эти переключатели контекста, ЦП тратит больше времени на переключение потоков, чем сами потоки получают Работай.

Посмотрите, есть ли во время этих скачков скачки загрузки ЦП приложением.

Это может быть числовой артефакт, созданный системой мониторинга, вызванный очень коротким временным интервалом. Может быть, вы здесь видите просто эффект сэмплирования.

Может быть, таймер ядра linux (CONFIG_HZ) настроен на регулярное срабатывание при 250 Гц? Проверьте файл конфигурации ядра. Есть и другие частоты на выбор.