понедельник, 4 июля 2011 г.

Настройка polling во FreeBSD

Не буду распространятся сильно о том, что такое polling, просто скажу о приносимой им пользе.

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

Для работы polling требуется его поддержка ядром FreeBSD. По умолчанию она отключена, поэтому необходимо перекомпилирвать ядро со следующими параметрами:

options DEVICE_POLLING
options HZ=1000

Второй параметр, в общем-то, не обязателен.

Итак, справка для тех, кто не умеет компилировать ядро FreeBSD. Идем в директорию /usr/src/sys/i386/conf и правим там файл с именем GENERIC добавляя нужные нам параметры. Затем идем в директорию /usr/src/ и выполняем команды:

make -j4 buildkernel
make installkernel
reboot

После перезагрузки можно включить polling для определенных интерфейсов командой вида (для последних версий FreeBSD):

ifconfig re0 polling

Соответственно, стоит добавить параметр polling  в настройки сетевых интерфейсов в файле  /etc/rc.conf чтобы поллинг автоматически включался после перезагрузки.

На моем стареньком селероне это дало снижение нагрузки по обработке прерываний с примерно 40 процентов до примерно одного. Довольно ощутимо.