Недавно сделал усилие и перенес сервер между локалками с FreeBSD 4.8 на 5.4 и вот что заметил. Хотя и сервак довольно хламовый (Celeron 500, 160Mb RAM, две интеловские сетевухи), но на 4.8 обеспечивал NAT между интерефесами на скорости 9Mb/s (при включенном polling и 100% загрузке CPU). От 5.4 ожидал примерно того же. Однако на 5ой БСД скорость НАТа упала более чем в двое, т.е. сейчас реально можно прокачать 3Mb/s, и это при влюченном polling режиме и полной загрузке проца.Причем polling стал работать достаточно странно. Если на 4.8 загрузка при включенном polling по прирываям даже при максимальной скорости составляла 5-10%, а при бездействии вообще 0%, то в 5.4 даже при бездействии загрузка по прирываниям около 5%, если выключить polling то при бездействии нагрузка по прирываниям становиться тоже около 0%, но и максимальная скорость падает до 2Mb/s. Мне кажеться это не правельным. Где что можно подкрутить что было "как былО"?
Ядра имеют примерно одну и ту же кофигурацию с оглядкой на отличия между 5ой и 4ой ветками. Правила IPFW вообще одинаковы (скрипты были просто скопированны). Серисы тоже одинаковы, на 5.4 даже пока не установленно многое из того, что было на 4.8. Да и вообще как-то на 5.4 все медленне работает, при компиляции даже относительно не большой проги загрузка проца под 100%.
# uname -a
FreeBSD xxx.xxx.ru 5.4-RELEASE-p9Зарание спасибо.
>Да и вообще как-то на 5.4 все медленне работает, при компиляции даже :>относительно не большой проги загрузка проца под 100%.Другой memory allocator, другой планировщик - и вот результат...:D
Не факт, конечно, надо смотреть и копать....Загрузка памяти большая?В 4-ке хорошая работа при малом кол-ве памяти, спасибо Matthew Dillon-y и остальным, в пятерке - хз.....(если кто грамотно расскажет - респектну сильно)
Что-то я вообще ни чего не понимаю... Пробовал играться с включением/выключением polling. Такое ощение, что он не работает вообще, по крайней мере толку ни какого. Да, vmstat -i при включенном пуллинге показывает, что прирывания на сетевухах не растут, но загрузка проца ни как не падает!
попробуйте "ядерный" NAT - ipnat+ipfilter или pf
>попробуйте "ядерный" NAT - ipnat+ipfilter или pfДа, уже поставил, скорость выросла, но в основном за счет снижения наргузок связанных с НАТом, загрузка по прирываниям так и осталась большой.. Гуглил по это поводу, нашел только то, что да, в ветке 5.х расходы на передачу пакетов выросли, свзянно это с подгонкой под мультипроцессорные системы... хоть обратно 4.8 ставь..
Попробуйте произвести какую-нибуть оптимизацию, тк 3MB/s - на мой взгляд маловато. Что-то конкретное посоветовать не могу (нет времени искать ), но у меня сейчас 5.3 на p2-400, 128 RAM делает NAT,Shaping (~200 очередей) ~15Mbit/sядро -
maxusers 512device pf
options ALTQ
options ALTQ_CBQ # Class Bases Queueing
options ALTQ_RED # Random Early Dropбез polling (сетевушки intel) c link0
Вот что интересно, вот вывод вмстат при включенном пуллинге и почти полном бездействии сети:# vmstat 5
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr ad0 ad2 in sy cs us sy id
1 1 0 104132 80508 165 1 2 0 129 0 0 0 59581 400 4173 2 13 85
0 1 0 104132 80508 1 0 0 0 1 0 1 0 61943 61 4268 0 9 91
0 1 0 107092 79192 68 0 0 0 6 0 2 0 61549 317 4265 6 10 84
0 1 0 107088 79200 13 0 0 0 13 0 1 0 61877 97 4264 1 8 91
0 3 0 122864 71312 579 0 2 0 135 0 23 0 60507 2211 4303 48 32 20
0 1 0 109644 76424 263 0 1 0 492 0 16 0 58683 647 4285 9 22 69
0 1 0 109664 76376 85 0 0 0 75 0 0 0 54379 245 3844 2 11 88Теперь выключаем пулиинг:
0 1 0 109664 76364 113 0 0 0 82 0 3 0 2343 171 494 3 2 95
0 1 0 109664 76364 36 0 0 0 33 0 14 0 2362 110 538 1 2 97
1 2 0 118232 70448 392 0 0 0 106 0 12 0 2358 852 545 36 8 56
0 1 0 109688 73908 945 0 2 0 910 0 12 0 2372 933 571 33 29 38
0 1 0 109688 73908 11 0 0 0 11 0 0 0 2334 109 473 0 1 98
0 1 0 109688 73904 11 0 0 0 11 0 0 0 2347 231 501 0 2 98
0 1 0 109688 73904 0 0 0 0 0 0 6 0 2334 56 475 0 1 99
0 1 0 109688 73904 0 0 0 0 3 0 7 0 2348 65 506 0 2 98
0 1 0 109688 73904 0 0 0 0 2 0 3 0 2324 52 454 0 1 99Прерывания и там и там по моему завышенны, но 60000 это уж очень через чур. Причем все врмя один процесс блокированн, как можно узнать, что это за процесс и из-за чего он блокированн?
по поводу прерываний и polling -
в 5.4 polling нужно включать отдельно на интерфейсе а-ла
ifconfig fxp0 polling (естественно, при имеющимся options DEVICE_POLLING и sysctl kern.polling.enable=1 )
>по поводу прерываний и polling -
>в 5.4 polling нужно включать отдельно на интерфейсе а-ла
>ifconfig fxp0 polling (естественно, при имеющимся options DEVICE_POLLING и sysctl kern.polling.enable=1 )
>
Проверь значение HZ это первое ...
И у полинга есть значение % от загрузки канала при котором он включается по умолчанию в 5 это 50% если у тебя линки 100М то неудивительно ...
Настраивается через sysctl ...
# ifconfig
fxp0: flags=18843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,POLLING> mtu 1500
options=48<VLAN_MTU,POLLING>
inet x.x.x.x netmask 0xffffff80 broadcast x.x.x.x
ether 00:a0:c9:df:62:7d
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
fxp1: flags=18843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,POLLING> mtu 1500
options=48<VLAN_MTU,POLLING>
inet x.x.x.x netmask 0xffffffc0 broadcast x.x.x.x
ether 00:08:c7:3a:20:1e
media: Ethernet 100baseTX <full-duplex>
status: active# sysctl kern.polling
kern.polling.idlepoll_sleeping: 1
kern.polling.stalled: 104
kern.polling.suspect: 1227875
kern.polling.phase: 0
kern.polling.enable: 1
kern.polling.handlers: 2
kern.polling.residual_burst: 0
kern.polling.pending_polls: 0
kern.polling.lost_polls: 4554234
kern.polling.short_ticks: 1878
kern.polling.reg_frac: 20
kern.polling.user_frac: 50
kern.polling.poll_in_trap: 0
kern.polling.idle_poll: 0
kern.polling.burst_max: 150
kern.polling.each_burst: 5
kern.polling.burst: 150# sysctl kern.clockrate
kern.clockrate: { hz = 1000, tick = 1000, profhz = 1024, stathz = 128 }Что тут можно подкруть?