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к ) Посмотрим что будет в час пик.
Поделись с друзьями:
Рубрики: FreeBSD, Сеть · Теги: diff, em, FreeBSD, hw.em.max_interrupt_rate, patch, ядро