KsI-wiki online documents

Raznos-eth-irq-po-cpu

Материал из Ksimute

Перейти к: навигация, поиск

Если на сервере многоядерном указать конкретное ядро для обработки прерываний интерфейса, производительность существенно возрастает. В некоторых случаях после привязки интерфейса к одному ядру, нагрузка на ядра упала на 20-30 %.

Как делается привязка:


 r1-rostelecom ~ # cat /proc/cpuinfo  | grep processor
 processor       : 0
 processor       : 1
 processor       : 2
 processor       : 3
r1-rostelecom ~ # cat /proc/interrupts
          CPU0       CPU1       CPU2       CPU3
 0:        104          0          0          0   IO-APIC-edge      timer
 1:          0          0          1          1   IO-APIC-edge      i8042
 8:          2          0          0          0   IO-APIC-edge      rtc
 9:          0          0          0          0   IO-APIC-fasteoi   acpi
12:          1          2          1          0   IO-APIC-edge      i8042
16:    1406418        440          0          0   IO-APIC-fasteoi   eth1, ehci_hcd:usb1
17:  191133909  185155154  183762412  172394337   IO-APIC-fasteoi   eth0
18:    6936344    7024130    7689809    7144232   IO-APIC-fasteoi   ahci, uhci_hcd:usb4
19: 4013342575 3939460732 3890908950 3810335948   IO-APIC-fasteoi   eth2, uhci_hcd:usb3, uhci_hcd:usb7
20: 3944870283 3999257495 3938074513 3954127928   IO-APIC-fasteoi   eth3
21:          0          0          0          0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb5
22:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb6

NMI: 0 0 0 0 LOC: 249772459 249772413 249772213 249772430 ERR: 0 MIS: 0

Разносим eth0 и eth3 eth0 на 17 IRQ привяжем к CPU2 eth3 на 20 IRQ привяжем к CPU3


теперь надо указать какой прерывание будет обрабатываться каким процессором. номера процессоров конвертируются в двоичную маску, т.е.


CPU0 - 1 CPU1 - 2 CPU2 - 4 CPU3 - 8

2^n где n - номер процессора.

echo 4 > /proc/irq/17/smp_affinity echo 8 > /proc/irq/16/smp_affinity

Все.