Страница 1 из 1
Polling FreeBSD 9.1
Добавлено: 2013-05-26 13:40:48
artem20041991
На сервере с FreeBSD 9.1 amd64 и гигабитной сетью на драйвере re0 решил настроить многими хваленный Polling, в результате чего у сети упала пропускная способность и на 1мс увеличился пинг ко всем компьютерам в сети...
Re: Polling FreeBSD 9.1
Добавлено: 2013-05-27 8:25:25
BlitzKrieg
А у вас были веские основания для его использования или вы решили просто попробовать?
Re: Polling FreeBSD 9.1
Добавлено: 2013-05-27 10:16:38
artem20041991
При создании CS1.6 серверов его очень рекомендуют, к томуже он должен улутшать пинг и снизить нагрузку на проц.
Re: Polling FreeBSD 9.1
Добавлено: 2013-05-27 13:02:17
BlitzKrieg
Кто вам это сказал?
Re: Polling FreeBSD 9.1
Добавлено: 2013-05-27 13:14:53
BlitzKrieg
Верните как было и постарайтесь побороть привчку применять рекомендации без понимания.
Странная ситуация вырисовывается, непонятная мне.
Вам рекомендуют сделать это. Вы делаете, а результат прямо противоположный. Нет чтобы вернуть все взад усомнившись в рекомендациях или как более сложный вариант, разобраться что же все-таки проиходит. Но вместо этого вы спрашиваете у посторонних людей почему не работают рекомендации еще кого-то. Почему вы у рекомендующих это не спросите?
Re: Polling FreeBSD 9.1
Добавлено: 2013-05-27 13:57:34
skeletor
Вам правильно говорят - он не нужен. Вот, выдержка Константина Белоусова из рассылки
Текущая архитектура FreeBSD обрабатывает прерывания от устройств, и, в частности, сетевых карт, в специально запущенных для этого нитках.
Нить блокирована, единственное действие кода обработки прерывания - разблокировка нити. Вот кусочек вывода ps auxww на машине, с которой я
это пишу:
root 218 0.0 0.0 0 8 ?? WL 9:46PM 0:00.79 [irq20: rl0 fwohci0]
root 220 0.0 0.0 0 8 ?? WL 9:46PM 0:05.69 [irq22: skc0 ath0]
Почти все современные сетевые адаптеры для 1000baseTx имеет feature называемую «interrupt coalescing», задерживающую вызов прерывания до заполнения Rx кольца адаптера.
Третье обстоятельство – это так называемый direct dispatch. Если вы помните, докладчик упоминал об отдельном процессе netisr, предназначенном для обработки Rx фреймов. Причина существования netisr
– тот факт, что прерывание от Rx может прийти в момент, когда процессор уже выполняет сетевой код, и полная обработка пакета из interrupt handler привела бы к рекурсивному входу в сетевой стек. Альтернативой
было бы поднять приоритет процессора до splnet (в терминах OpenBSD), но это бы означало, что прерывания блокированы на длительное время.
Но, поскольку FreeBSD выполняет настоящий обработчик прерывания в отдельной нитке, то netisr не нужен. Все обработка входящего пакета можеть произойти без дорогостоящего переключения контекста. Это и есть direct dispatch. Direct dispatch включен по умолчанию на FreeBSD >= 7:
net.isr.direct: 1
Нетрудно видеть, что комбинация всех трех упомянутых архитектурных элементов эквивалентна pollingу и даже эффективнее его.
Конечно, есть сетевые карты, для которых polling выигрывает, но тенденция состоит в том, что direct dispatch не хуже и более естественен.
Re: Polling FreeBSD 9.1
Добавлено: 2013-05-27 14:54:59
artem20041991
Спасибо, Вы меня успокоили...
Все дело в моей жадности ко всем возможным улутшениям системы надо испробовать все чтоб добиться идеала...