>
>>>при высокой нагрузке 1 ядро почти 90.0% interrupt (in top)
>>
>>Мало сведений. :( dmesg можете скинуть? Можно на мыло.
>
>выслал, хотя там ничего интересного нет. Получил. Если не секрет, чем вызвано использование собственной конфигурации ядра?
Попутное замечание: там IPMI не детектированный, и ещё какая-то фигня — если не сложно, отошлите dmesg от GENERIC и/или GENERIC.MP ядра на dmesg@openbsd.org, сейчас разрабы как раз эти архивы в очередной раз раскапывают, судя по коммитам.
>> Пока могу сказать, что на 4.7 смысла переезжать из-за драйвера нету, прирост скорости если и будет, то незначительный.
>>Подозреваю, что на самом деле нагрузка идёт в основном из-за pf - пробовали отключать?
>
>Да выключили.
>Нагрузку TOP показывает в "interrupt" а это прерывания.
>Еслиб грузил pf, то показывалаб "system"
Нет, "system" - это время, проведённое программами в системных вызовах (в т.ч. read()/write()/send()/recv() и т.д.). А pf числится как часть обработки пакета во время прерывания. Если не верите, посмотрите, например, sys/netinet/ip_output.c:
if (sproto != 0) {
s = splnet();
/*
* Packet filter
*/
#if NPF > 0
if (pf_test(PF_OUT, &encif[0].sc_if, &m, NULL) != PF_PASS) {
Device polling для bnx(4) не используется, однако оно там особо и не нужно — железка, насколько я понимаю код bnx_rx_intr(), умеет генерить прерывания по необходимости, а не на каждый пакет — смысл в polling'е в этом случае крайне неочевиден, скорее он тут будет чреват packet drop'ами.
Ещё, к слову, на производительность может влиять отключенная по умолчанию поддержка TCP/UDP checksum offloading — этот шаг был вызван обнаруженными багами в аппаратной реализации, детали не помню, надо в архивах смотреть. По идее, разница в производительности с этой опцией и без неё 5-15% — не бог весть что в данном случае, но тоже фактор. Включить на свой страх и риск можете опцией в ядре BNX_CSUM.
>>Да, и какова эта самая нагрузка?
>
>~ 200 Mbit/s
Здесь больше важны пакеты, т.к. прерывания ходят по факту отправке/получения их целиком. В лучшем случае получается порядка 150 000 пакетов (если размер фрейма 1500). Посчитайте через сравнение вызовов netstat -i, сколько пакетов реально обрабатывается.