В чем причина больших прерываний LOC?

Я вижу огромные пики прерываний LOC - около 4 миллионов в секунду, что именно такое прерывание LOC, что может вызвать эти пики и что я могу с этим сделать?

Вот график Мунина, иллюстрирующий эти спайки:

Вот график CPU за тот же период, показывающий, как он полностью захватывает. Мне нравится, как раскраска заставляет сервер работать в эти периоды...

Это двойной четырехъядерный сервер Xeon под управлением Ubuntu 8.04. Версия ядра сообщена uname есть 2.6.24-24-сервер.

Вот содержимое / proc / interrupts

           CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 6930 6762 6633 6841 6760 6863 6692 6809 Таймер IO-APIC-границы 1:          0          0          0          0          0          1          1          0   IO-APIC-edge      i8042
  8:          3          2          4          3          7          5          6          3   IO-APIC-edge      rtc
  9:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   acpi
 12:          1          0          0          1          0          0          1          1   IO-APIC-edge      i8042
 14:         22         20         22         24         27         24         25         15   IO- Либата APIC-edge 15: 0 0 0 0 0 0 0 0 Либата IO-APIC-edge 16:   50766012   50843554   50824664   50759980   50720894   50854422   50808772   50787944   IO-APIC-fasteoi   ioc0
 17:    2551207    2584434    2572429    256470255 258 257 068 068 035 fash NMI:          0          0          0          0          0          0          0          0 Немаскируемые прерывания LOC:  260770889  233105051  191904989  121472332  107472778  118895615  157741363  115713984 Локальный таймер прерываний RES:  767265318 1003071645  432052982  199027537  114757970  128254 227 227 221 625 625 067 025 067 rrupts
CAL:      32376      26205      32414      26355      32453      26425      32399      26335 вызов функции прерывает ТЛТ: 5325301 5240763 5025455 4999356 4944090 5044423 5050813 5004620 TLB shootdowns ТРМ: 0 0 0 0 0 0 0 0 Термическое событие прерывания СПУ: 0 0 0 0 0 0 0 0 Паразитные прерывает ERR:          0
MIS:          0 

Рекомендации

Оригинальные изображения

1 ответ

Решение

Это процесс управления многопоточными потоками. См. " Сходство SMP и правильная обработка прерываний в Linux", где вы найдете ответы о том, как уменьшить его, но в основном способ, которым система обрабатывает маскирование прерываний, вызван необходимостью загрузки ЦП большего количества потоков или памяти и только CPU0 может принимать прерывания.

Чем выше значение, тем лучше происходит многопоточность системы, и это хорошо.

Другие вопросы по тегам