FreeBSD hw.em.max_interrupt_rate патч

Как выяснилось, разработчики сетевых карт em и igb программируют чипы генерировать не более чем 8000 прерываний в секунду, по нынешним меркам это очень мало для процессоров текущего поколения, для igb начиная с версии 8.2-STABLE присутствует loader tunnable hw.igb.max_interrupt_rate с дефолтом 8000, который можно изменить через loader.conf, на горячую не изменяется, чтож, за владельцев сетевок igb я безмежно рад, но вот что же делать мне? У меня-то пока что стоят сетевки em, ответ не заставил себя долго ждать, и решение нашлось очень быстро — это пачт для драйверов em. Кстати я его на всякий случай слил себе на сайт
http://komivlad.net/blog/files/em_sysctl.diff.gz 
Обо всем по порядку.
Начнем с того что скачаем патчик себе на машинку:

# wget http://komivlad.net/blog/files/em_sysctl.diff.gz

распаковываем эту бяку:

# gunzip  em_sysctl.diff.gz


Делаем копию папки с исходниками драйверов em

 mkdir /root/e1000
# cd /usr/src/sys/dev/
# cp -r e1000/ /root/e1000/

Копируем файл с патчем в директорию /usr/src

# cp em_sysctl.diff /usr/src/

топаем в папку с патчем

# cd /usr/src/

и соответственно патчим)))
# patch < em_sysctl.diff
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- sys/dev/e1000/if_em.h.orig 2010-12-30 11:18:14.000000000 +0600
|+++ sys/dev/e1000/if_em.h 2010-12-30 11:27:17.000000000 +0600
--------------------------
Patching file sys/dev/e1000/if_em.h using Plan A...
Hunk #1 succeeded at 436.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- sys/dev/e1000/if_em.c.orig 2010-12-30 11:18:14.000000000 +0600
|+++ sys/dev/e1000/if_em.c 2010-12-30 11:27:17.000000000 +0600
--------------------------
Patching file sys/dev/e1000/if_em.c using Plan A...
Hunk #1 succeeded at 365.
Hunk #2 succeeded at 456.
Hunk #3 succeeded at 1284.
Hunk #4 succeeded at 2352 (offset 13 lines).
Hunk #5 succeeded at 4076 (offset -3 lines).
Hunk #6 succeeded at 4115 (offset 13 lines).
done
[/code]
если вы получили то что на коде сверху, значит все ок, и можно продолжать, собственно продолжаем пересборкой ядра, думаю расписывать нет смысла:

Бутаем железяку и спустя пару мгновений, радуемся новым возможностям наших em драйверов)

и добавляем 

значение подбирается опытным путем.
От себя замечу, что до применения патча, число прерываний генерируемых сетевкой не превышало 7,5к, логично, ведь ограничение в 8К, на данный момент после пропатчивания, вылетает 16-19к ) Посмотрим что будет в час пик.

Поделись с друзьями:

Опубликовано 05.10.2011 в 08:36 · Автор komivlad · Ссылка
Рубрики: FreeBSD, Сеть · Теги: , , , , ,

Написать комментарий