[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