ThreeDHead Опубликовано 5 мая, 2010 · Жалоба 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-го процессора. Создается впечатление что больше чем по первым четырем ядрам раскидать не могу эти очереди. Может там какие нюансы есть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 5 мая, 2010 · Жалоба Кажется, про это писали здесь: http://forum.nag.ru/forum/index.php?showto...mp;#entry460834 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ThreeDHead Опубликовано 6 мая, 2010 · Жалоба Кажется, про это писали здесь:http://forum.nag.ru/forum/index.php?showto...mp;#entry460834 Тред совсем не о том. Проблема в том что делаю, например направляю прерывание на 5-й по счету процессор: echo 16> /proc/irq/1271/smp_affinity, после этого делаю cat /proc/irq/1271/smp_affinity получаю 16, а счетчики начинают бегать на 1-м ядре! Думаю что может проблема с драйвером сетевой, он достаточно старой версии. Еще вопрос в тему - откомпилировал свежий драйвер, хочу его подоткнуть, но хочу сперва знать с какими значениями загружается старый - как это узнать? ethtool подробностей не выдает. lsmod молчит, загружен говорит и всё, а с какими параметрами он мог быть загружен в версии driver: igb, version: 1.0.8-k2, firmware-version: 1.2-3 ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 6 мая, 2010 · Жалоба ThreeDHead CPU маска шестнадцатеричная, а не десятичная. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ThreeDHead Опубликовано 6 мая, 2010 (изменено) · Жалоба ThreeDHead CPU маска шестнадцатеричная, а не десятичная. Да нормально всё: 16 DEC = 10 HEX = 10000 BIN = 5 ядро, а крутится на первом, типа перекрутился... Изменено 6 мая, 2010 пользователем ThreeDHead Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ThreeDHead Опубликовано 6 мая, 2010 (изменено) · Жалоба ThreeDHead CPU маска шестнадцатеричная, а не десятичная. Во блин! Спасибо! Прям шестнадцатиричное и надо запихивать, как будто десятичное. Короче эхать надо прям 10h, типа echo 10 > /proc/irq/1271/smp_affinity Изменено 6 мая, 2010 пользователем ThreeDHead Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ThreeDHead Опубликовано 6 мая, 2010 · Жалоба Ну вот точно, если не изменяя ничего попросить вывести значение, он же выводит "ffffffff". Всега считал её десятичной и в примерах везде десятичная. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ThreeDHead Опубликовано 6 мая, 2010 · Жалоба Короче вот скриптик со ссылки Ilya Evseev, помодифицировал его чуть, работает нормально: #!/bin/sh # # irq2smp -- distribute hardware interrupts from Ethernet devices by CPU cores. # # Should be called from /etc/rc.local. # ncpus=`grep -ciw ^processor /proc/cpuinfo` test "$ncpus" -gt 1 || exit 1 n=0 for irq in `cat /proc/interrupts | grep eth | awk '{print $1}' | sed s/\://g` do f="/proc/irq/$irq/smp_affinity" test -r "$f" || continue cpu=$[$ncpus - ($n % $ncpus) - 1] if [ $cpu -ge 0 ] then mask=`printf %x $[2 ** $cpu]` echo "Assign SMP affinity: eth$n, irq $irq, cpu $cpu, mask 0x$mask" echo "$mask" > "$f" let n+=1 fi done Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 6 мая, 2010 · Жалоба Даже специальная прога есть для этих целей: http://laas.mine.nu/jens/eth-affinity-1.2.3.tar.gz Сам правда не пробовал. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ThreeDHead Опубликовано 6 мая, 2010 · Жалоба Даже специальная прога есть для этих целей: http://laas.mine.nu/jens/eth-affinity-1.2.3.tar.gz Делает то-же самое, только написана на Си? Много бытсрее работает наверное :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...