|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> Мелочи
—> polling
options DEVICE_POLLING в ядре
Автор: lissyara.
Озадачился протестить - есть ли выигрыш от polling`a - вкратце - это такое хитрое управление сетевухой и прерываниями. В обычных условиях сетевуха генерит прерывание на каждый пришедший пакет - требуя чтоб ЦП выделил ресурсы на его обработку. Как итог, при большой нагрузке, сетевуха генерит несколько тыщ прерываний в секунду - а это не есть гуд, быстродействие машины снижается. Если же включить polling, то прерывания генерятся по таймеру (1000 в секунду, обычно), загрузка проца падает и быстродействие повышается. Естественно всё это не даром - повышается латентность сети, ибо в худшем случае на обработку пакета уходит на 1 миллисекунду (при HZ=1000) больше чем без этой функции. Если некритично - то можно юзать.
Тестовая машина: 2x450MHz PIII (100x4.5, 512 кеша, Slot1), 2x128 ECC SDRAM (133MHz), 2x17Gb SCSI (Сами харды U160, но контроллер в маме тянет лишь 40Mb/s) сетевуха 3com - 100Mb/c. (фото мамы есть тут - я уже успел потыкаться в неё паяльничком :))) Для начала делаем то, чем будем тестировать - файл немерянного размера:
/usr/home/lissyara/>dd if=/dev/zero of=3gb_file bs=512 count=6291456
6291456+0 records in
6291456+0 records out
3221225472 bytes transferred in 82.756136 secs (38924310 bytes/sec)
/usr/home/lissyara/>ls -alh | grep _file
-rw-r--r-- 1 lissyara wheel 3,0G 30 мар 13:04 3gb_file
/usr/home/lissyara/>
| Во, клёво. Трёхгиговый файл. (я его из интересу заархивировал - получилось 3 мегабайта. щас вот сижу, и так и подмывает кому-нить почтой отправить, обозвав типа "Голая Анна Курникова.bmp.gz" - чувак долго будет ждать пока разархивируется :))))
Тестирование - собстно небыло задачи получить повторяемые результаты, или вообще соблюсти какие-то правила тестирования. Просто перекидывал файл на тестовую машину (именно на, в обратную строну изначально не тестировалось - тока в режиме SMP попробовал - из любопытства, но тут ждала неожиданность - на исходящий с машины траффик polling оказывал обратное влияние - при включении скорость падала, немного, но результат повторяемый... но и загрузка проца падала вдвое. Пришлось грузиться с другими ядрами и проверять).
Для включения этого режима, необходимо пересобрать ядро с опцией:
После сборки, установки и перезагрузки в sysctl появятся такие опции:
/usr/home/lissyara/>sysctl -a | grep polling
lissyara@test-bsd-6.local:/usr/obj/usr/src/sys/GENERIC-polling
kern.polling.burst: 150
kern.polling.burst_max: 150
kern.polling.each_burst: 5
kern.polling.idle_poll: 0
kern.polling.user_frac: 50
kern.polling.reg_frac: 20
kern.polling.short_ticks: 473
kern.polling.lost_polls: 908
kern.polling.pending_polls: 0
kern.polling.residual_burst: 0
kern.polling.handlers: 0
kern.polling.enable: 0
kern.polling.phase: 0
kern.polling.suspect: 604
kern.polling.stalled: 0
kern.polling.idlepoll_sleeping: 1
hw.acpi.thermal.polling_rate: 10
/usr/home/lissyara/>
| Из них интересней всего лишь одна - kern.polling.enable - она и отвечает за то, включен или выключен режим поллинга.
/usr/home/lissyara/>sysctl -d kern.polling.enable
kern.polling.enable: Switch polling for all interfaces
/usr/home/lissyara/>
| Переменные sysctl можно менять находу, изменения принимаются сразу, без перезагрузки:
/usr/home/lissyara/>sysctl kern.polling.enable=1
kern.polling.enable: 0 -> 1
/usr/home/lissyara/>
| Соответственно теперь этот режим включен. После перезагрузки переменная примет дефолтовое значение ("0"), и чтобы не вносить изменения руками, есть файл /etc/sysctl.conf, можно эту строку внести в него, и всё. Итак, можно тестировать.
На выходе получилась примерно такая табличка:
|
Тип ядра и опции
|
speed in
|
% CPU in
|
speed out
|
% CPU out
|
|
GENERIC+polling-disable
|
2.01
|
87.69
|
3.72
|
94.00
|
|
GENERIC+polling-enable
|
7.34
|
84.65
|
10.08
|
20.43
|
|
GENERIC+polling-disable+SMP
|
4.38
|
87.32
|
7.91
|
85.12
|
|
GENERIC+polling-enable+SMP
|
9.74
|
52.01
|
9.45
|
28.25
|
|
Скорость в мегабайтах в секунду, загрузка ЦП в процентах.
Ну и выводы по результатам таблицы:
В однопроцессорном режиме результат разгромный - в режиме приёма втрое, да ещё и загрузка проца снизилась (правда ненамного), в режиме передачи прибавка тоже втрое, но загрузка проца упала больше чем в 4 раза. Я думаю, что на сильно загруженных машинах оно того стоит.
В SMP режиме всё ожидаемо - загрузка меньше, скорость выше - голов всё же две. Для однопроцессорных машин можно смело рекомендовать, а для многопроцессорных надо более развёрнутое тестирование.
P.S. Гонял этот режим на первом пне (ну не совсем первом, и совсем не пне - AMD K6-II 550MHz) - выигрыш копеечный - порядка 500кб/с - проц всё равно загружен под сотню. Но - и это неплохо, нахаляву-то :))) Но - есть одно но. При простое, когда копеечный траффик, всё равно `interrupt` жрут 10% проца, и это чувствуется... Так что режим выгоден тока в случае нагрузки. Будет время - нарисую скрипт, чтоб отслеживал появление нагрузки и врубал этот режим.
P.S.2 По просьбам трудящихся: Пакеты не теряются :)))
|
размещено: 2006-04-03,
последнее обновление: 2006-04-17,
автор: lissyara
|
|
|
|
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
|
Статистика сайта
|
Сейчас на сайте находится: 46 чел.
|
За последние 30 мин было: 218 человек
|
За сегодня было 15664 показов, 1735 уникальных IP
|
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
|
Комментарии пользователей [23 шт.]