[Sysadmins] А что у нас с SMP на Intel S5500BC / Xeon E5607 ?
Alexei Takaseev
alexei на taf.ru
Пт Фев 10 13:12:25 MSK 2012
----- Исходное сообщение -----
> От: "Sergey" <a_s_y на sama.ru>
> Кому: "ALT Linux sysadmins' discussion" <sysadmins на lists.altlinux.org>
> Отправленные: Пятница, 10 Февраль 2012 г 17:52:51
> Тема: Re: [Sysadmins] А что у нас с SMP на Intel S5500BC / Xeon E5607 ?
>
> On Friday, February 10, 2012 15:58:30 Alexei Takaseev wrote:
>
> > > > Вернул на место Intel S3210SH / Intel Core2 Quad Q8300.
> > > > Процессы снова нормально раскидываются по ядрам.
> > >
> > > Ещё забавнее... Сборка ядра на S5500BC/E5607 распараллеливается
> > > совершенно нормально. Получается, что тип задачи ещё влияет.
> > > Грабля была с обработкой трафика.
> >
> > сетевух сколько ?
>
> Много. Две бортовых у той и у другой материнки, плюс ещё 4, одна
> из которых четырёхпортовка.
>
> > есть ли в них отдельные очереди*
>
> Для 82572EI/82571EB пишут, что
>
> Intel® I/O Acceleration Technology
> 2Tx, 2Rx queues, message signaled interrupts, receive side scaling,
> header splitting
>
> но, наверное, это не очень важно, так как 4 переставлялись, как есть,
> и сейчас
> они же и работают. Менялись только бортовые. У S5500BC это
>
> 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit
> Network Connection
> 01:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network
> Connection
>
> Что сейчас нормально работает на S3210SH/Q8300:
>
> Бортовые:
> 00:19.0 Ethernet controller: Intel Corporation 82566DM-2 Gigabit
> Network Connection (rev 02)
> 08:02.0 Ethernet controller: Intel Corporation 82541GI Gigabit
> Ethernet Controller (rev 05)
>
> Две PCI-e:
> 01:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit
> Ethernet Controller (Copper) (rev 06)
> 02:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit
> Ethernet Controller (Copper) (rev 06)
>
> четырёхпортовка PCI-e
> http://ark.intel.com/products/50496/Intel-PRO1000-PT-Quad-Port-Server-Adapter
> 05:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit
> Ethernet Controller (Copper) (rev 06)
> 05:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit
> Ethernet Controller (Copper) (rev 06)
> 06:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit
> Ethernet Controller (Copper) (rev 06)
> 06:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit
> Ethernet Controller (Copper) (rev 06)
>
> Старенькая PCI (точно не скажу, какая):
> 08:01.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet
> Pro 100 (rev 08)
Похоже, что дело таки в материнке. И самый оптимальный вариант - растащить прерывания сетевух на отдельные ядра вручную через smp_affinity.
У себя я это таким скриптом сделал:
---
#!/bin/sh
P=`find /proc/irq -name 'eth0-rx-0' -print | sed 's@/eth0-rx-0@@'`
echo "1" > ${P}/smp_affinity
P=`find /proc/irq -name 'eth0-tx-0' -print | sed 's@/eth0-tx-0@@'`
echo "2" > ${P}/smp_affinity
P=`find /proc/irq -name 'eth1-rx-0' -print | sed 's@/eth1-rx-0@@'`
echo "4" > ${P}/smp_affinity
P=`find /proc/irq -name 'eth1-tx-0' -print | sed 's@/eth1-tx-0@@'`
echo "8" > ${P}/smp_affinity
---
irqbalance для этого лучше не использовать.
наличие очередей можно определить через cat /proc/interrupts:
46: 2491993875 3178910304 0 0 PCI-MSI-edge eth0-rx-0
47: 810336516 3558468146 0 0 PCI-MSI-edge eth0-tx-0
48: 629 0 0 1712 PCI-MSI-edge eth0
49: 366255653 0 1973013332 0 PCI-MSI-edge eth1-rx-0
50: 1308353038 0 0 2840998644 PCI-MSI-edge eth1-tx-0
51: 995 0 2643 0 PCI-MSI-edge eth1
как раз иллюстрация севшей на одно ядро сети, которую потом растолкал по полкам вручную.
Подробная информация о списке рассылки Sysadmins