Linux 2.6.26-2-amd64 #1 SMP Tue Mar 9 22:29:32 UTC 2010 x86_64 GNU/Linux
Сервер с 2 процессорами:
Intel(R) Xeon(R) CPU E5530 @ 2.40GHz
Двухпортовая сетевая на чипе 82575EB, 8 очередей на прием, 8 на передачу:
01:00.0 Ethernet controller: Intel Corporation Device 10c9 (rev 01)
01:00.1 Ethernet controller: Intel Corporation Device 10c9 (rev 01)
# ethtool -i eth0
driver: igb
version: 1.0.8-k2
firmware-version: 1.2-3
bus-info: 0000:01:00.0# ethtool -i eth1
driver: igb
version: 1.0.8-k2
firmware-version: 1.2-3
bus-info: 0000:01:00.1
С какими параметрами драйвер грузится, не в курсе, но выглядит это так: (лишнее повырезал)
#cat /proc/interrupts
1263: PCI-MSI-edge ahci
1264: PCI-MSI-edge eth1
1265: PCI-MSI-edge eth1-rx3
1266: PCI-MSI-edge eth1-rx2
1267: PCI-MSI-edge eth1-rx1
1268: PCI-MSI-edge eth1-rx0
1269: PCI-MSI-edge eth1-tx0
1270: PCI-MSI-edge eth0
1271: PCI-MSI-edge eth0-rx3
1272: PCI-MSI-edge eth0-rx2
1273: PCI-MSI-edge eth0-rx1
1274: PCI-MSI-edge eth0-rx0
1275: PCI-MSI-edge eth0-tx0
Задача - раскидать все очереди по ядрам процессоров c 4 по 15:
printf %d 0x8000 >/proc/irq/1270/smp_affinity # 1270: eth0
printf %d 0x4000 >/proc/irq/1271/smp_affinity # 1271: eth0-rx3
printf %d 0x2000 >/proc/irq/1272/smp_affinity # 1272: eth0-rx2
printf %d 0x1000 >/proc/irq/1273/smp_affinity # 1273: eth0-rx1
printf %d 0x0800 >/proc/irq/1274/smp_affinity # 1274: eth0-rx0
printf %d 0x0400 >/proc/irq/1275/smp_affinity # 1275: eth0-tx0
printf %d 0x0200 >/proc/irq/1264/smp_affinity # 1264: eth1
printf %d 0x0100 >/proc/irq/1265/smp_affinity # 1265: eth1-rx3
printf %d 0x0080 >/proc/irq/1266/smp_affinity # 1266: eth1-rx2
printf %d 0x0040 >/proc/irq/1267/smp_affinity # 1267: eth1-rx1
printf %d 0x0020 >/proc/irq/1268/smp_affinity # 1268: eth1-rx0
printf %d 0x0010 >/proc/irq/1269/smp_affinity # 1269: eth1-tx0
Но не выходит каменный цветочек...
Крутятся они все только на первых чётырех ядрах. Т.е. например значение битовой маски (16dec / 10h) указывает на 5-й по счету процессор, счетчики interrupts бегают на 1-м. Но тем не менее при считывании этого же значения, выходит правильное значение - маска для 5-го процессора.
Создается впечатление что больше чем по первым четырем ядрам раскидать не могу эти очереди.
Может там какие нюансы есть?