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

Проблема с прерываниями в Linux

Есть ли простой способ определить, являются ли прерывания проблемой производительности? У меня есть следующее из cat / proc / interrupts, но на самом деле нет истории этого сервера, поэтому я не знаю, может ли это вызывать какие-либо проблемы. Я нашел определение каждого столбца в http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-interrupts.html но, похоже, не нашел никаких рекомендаций относительно того, приемлемы ли результаты.

       CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
 0: 1408788887          0          0          0          0          0          0          0    IO-APIC-edge  timer
 1:          3          0          0          0          0          0          0          0    IO-APIC-edge  i8042
 8:          1          0          0          0          0          0          0          0    IO-APIC-edge  rtc
 9:          0          0          0          0          0          0          0          0   IO-APIC-level  acpi
12:          4          0          0          0          0          0          0          0    IO-APIC-edge  i8042
14:        476   92736034  560949599   89233642          0          0          0          0    IO-APIC-edge  ide0
66:         81          0          0          0          0          0          0          0   IO-APIC-level  ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4
74:        153   62468419  147960075   25257462          0          0          0          0   IO-APIC-level  uhci_hcd:usb3, uhci_hcd:usb5
82: 1054378386          0          0          0          0          0          0          0         PCI-MSI  eth0
169:       8343 1516025027  954152248    6501060          0  757271678 1872714173    2565826   IO-APIC-level  megasas
NMI:   28336831   18526902   35866900   13915052   25165724   26928152   21827791   19303613
LOC: 1408788527 1408756844 1408788059 1408788084 1408788124 1408787843 1408787972 1408787711
ERR:          0
MIS:          0

Проблема с прерываниями - одна из причин высокой загрузки ЦП системы. Если в выводе mpstat не отображаются высокие значения% irq, все в порядке.

Если вас беспокоит, что прерывания распределяются между процессорами неравномерно, вам необходимо включить демон irqbalance или настроить его вручную с помощью / proc / irq / * / smp_affinity.

Еще: http://honglus.blogspot.com/2010/01/troubleshooting-high-system-cpu-usage.html http://honglus.blogspot.com/2011/03/tune-interrupt-and-process-cpu-affinity.html

Максимальное количество прерываний, которые у вас еще есть в среднем:

1872714173 interrupts / 83014987.85 seconds = 23 intr/s

что совсем не страшно. Как бы то ни было, эти статистические данные вполне приемлемы. Пиковое значение 7500 инт / с также приемлемо в загруженной системе.

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

Если у вас есть sar отчеты, найдите другую метрику, которая достигает пика во время низкой производительности (очередь выполнения? пейджинг? дисковый ввод-вывод?), и заново начните анализ с этого момента.

Вы должны включить irqbalance демон, помогающий распределять прерывания таймера по доступным процессорам на сервере. Бегать /sbin/service irqbalance start и проверим систему чуть позже.