Jump to content

Recommended Posts

Posted

Имеется такой конфиг сервера:

2xXeon E5450 и две сетевые карты:

# lspci | grep -i eth
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
05:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)

У этих карточек всего одна очередь.

 

В /proc/interrups такая картина:

# cat /proc/interrupts | grep -i eth
 68:  480285318  480619071  480774892  481265904  482006358  481431514  480912831  480838626   PCI-MSI-edge      eth0
 69:  428111727  427778819  427615122  427126705  426379290  426959434  427481810  427555201   PCI-MSI-edge      eth1

 

# cat /proc/irq/68/smp_affinity_list 
0-7
# cat /proc/irq/69/smp_affinity_list 
0-7

 

Правильно ли я понимаю, что в этом случае возможен реордеринг пакетов, т.к. пакеты засовываются сетевой картой в одну очередь, а прерывания обрабатываются различными ядрами по очереди(или случайно)?

 

И не ошибаюсь ли в том, что для того, чтобы избавиться от реордеринга, нужно прибить ethX к конкретному ядру (и включить rps(который балансирует per-hash-flow), если одного ядра не хватает)?

Posted

Одну сетёвку на одно ядро, другую на другое, должно хватить даже так.

 

откуда такая уверенность? по-моему случай как раз из тех, когда RPS - "то, что доктор прописал". только мапить надо не по принципу "всё на всё", а пробовать и смотреть как распределяется нагрузка.

Posted (edited)

Пример: E3-1220 + две встроенных сетевки intel, трафик до 800М в пиках, сетевушки прибиты к ядрам, включен rps. Утилизация проца программными прерываниями до 50%. Ставим еще одну карточку Intel 576, ограничиваем на ней количество очередей до 1 объединенной rxtx и строим bonding, перекрепляем сетевушки к ядрам с учетом новых реалий и отказываемся от rps. В итоге даже наливая 1.1Г получаем утилизацию до 40%. Вывод: rps не панацея, правда rps в моем случае был включен скорее автоматически, нежели по нужде.

 

P.S. А что касается очередей - попробуйте поиграться включением msi.

 

 

Edited by passer
Posted

Меня больше интересует вопрос про реордеринг. Если очередь одна и она через smp_affinity(а не через rps) прибита к нескольким процессорам, то получаем потенциальное перемешиваение пакетов. Или я ошибаюсь?

Posted

А смысл? Ладно бы не хватало пары ядер для дела. Так нет же, хватает, как правило. Другое дело, что хочется экспериментов, тогда - да, дело познавательное.

Posted

Пока хватает, но и трафика пока там мало, когда в этом месте будет что-то современное, неизвестно.

Сервер и карточки дохлые как видно из топика(жалкие однопортовые broadcom и очень древние Xeon). Сейчас smp_affinity раскидывает весь трафик по всем CPU, при том не per-flow судя по тому как хорошо балансируются прерырвания. Я подозреваю, что в этом случае возможна перестановка пакетов(из-за чего могут жаловаться на скорость на tcp-потоках), поэтому хочу отказаться от smp_affinity для раскидывания по CPU и вместо него сделать RPS. Интересуюсь мнением и опытом людей, потому что раньше почти не работал с таким барахлом.

Posted

Я на Xeon E54xx обычно более 600-700M не наливаю. Особенно, если мамка типа S5000VSA или аналог. Вылазили грабли всякие, причем даже при смене сетевушек на приличные Intel 82576. А может у меня руки не туда закруглились...

 

 

 

 

 

 

 

 

Posted

smp_affinity никакого отношения к RPS не имеет, более того, никакого изменения порядка произойти в принципе не может т.к. одновременно ничего не обрабатывается - только строго по очереди и каждый раз на новом ядре с уже холодными кешами и штрафами на поддержку их когерентрости.

Posted

smp_affinity никакого отношения к RPS не имеет

это понятно. зря я наверное в одном топике их упомянул

 

более того, никакого изменения порядка произойти в принципе не может т.к. одновременно ничего не обрабатывается - только строго по очереди и каждый раз на новом ядре с уже холодными кешами и штрафами на поддержку их когерентрости

Это Вы про RPS или про размазывание прерываний по всем CPU через smp_affinity?

 

Кстати, нашёл топик 2002-го года на эту тему http://www.gossamer-threads.com/lists/linux/kernel/292775

Posted

Это Вы про RPS или про размазывание прерываний по всем CPU через smp_affinity?

это о smp_affinity. Даже со включенным RPS надо прибивать прерывание только к одному ядру. Топик относится к 2.4 и драйверам без NAPI - такое поискать еще надо :)

Posted

Интересно, как пакеты перемешивались на 2.4-ом ядре? Не выполнялись же прерывания одновременно на нескольких CPU. Какой механизм синхронизации в 2.6(и 3.x), гарантирующий отсутсвие перестановок?

Posted

Наверное не по теме.

1)Но двухпроцессорные конфигурации не очень для роутера

2)Е54хх не очень по производительности

3)Броадком хуже реалтека (сетевухи виснут при нагрузке 700Мбит/с)

 

Стоит поменять материнку хоть на сандибридж i3-i7, хоть со встроенным реалтеком - и будет результат. На электричестве сэкономите...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...