FreeBSD 8.1/pf performance

Dan Lukes dan at obluda.cz
Fri Nov 5 12:45:15 CET 2010


Jan Dušátko wrote:
> na tomto interface je poveseny stavovy packet filter, kde dovnitr je zakaz s
> vyjimkou portu 22 a 80. Ven je povoleno vse.

> V uvedene konfiguraci dokaze system obhodpodarit cca 2000-3000 klientu (cca
> 10000-15000 packet/sec)

> Pokud spustim jeste fronty a nahodne rozdelovani  (duvodem je vysoke
> vytezovani linky nekterymi klienty), vykonnost system poklesne a dokaze
> obhospodarit cca 1000-1500 klientu (cca 3000-5000 packet/sec)

> Vtip nastane, pokud vypnu pf. V takovem okamziku se bavim o obsluze cca 20
> 000 klientu nez narazim na strop aplikace a zadne problem s timeouty.

Zatim mas problem porad jeste strasne siroky. Do hry nam vstupuje 
"lagg", "stavovost", "modulate state", "altq" a nakonec cely "pf" framework.

Pokud nenajdes nekoho, kdo na stejny problem uz narazil a tudiz ma 
analyzu provedenou a budes si ji muset delat sam, obavam se,z ew jedina 
cesta bude pres izolaci problemu. To znamena zjistit jaky vliv ma na 
chovani "stavovost", jestli se problem nahodou zazracne nevyresi 
nahradou pf za ipfw, ...

Horsi je, ze nelze vyloucit, ze vysledny efekt spoluvytvari vic vlivu.

To, ze vypnuti "pf" prinese vyrazne zrychleni ale neni nijak prekvapive. 
Ja sice PF nepouzivam, ale pokdu si to vybavuju dobre, tak interne je to 
implementovano tak, ze pravidla, ktera ty pises, jsou v jadre ulozena ve 
forme pseudokodu a u kazdeho pakety internpret bezici nad timto 
pseudokodem rozhoduje "co dal". Pocet procesorovych instrukci, ktere 
pruchod paketu vyzaduje, se tim zvysuje opravdu zasadne.

Mozna by mohl byt pekny a velmi uzitecny projekt vytvorit kompilator 
pravidel do nativniho kodu procesoru - aby se obesla nutnost opakovane 
interpretace mezikodu. A kdyby ten kompilator vytvarel kod 
optimalizovany ...

Ale nepocitam s tim, ze byses do reseni problemu pustil tudy ;-) 
Nakonec, nevime ani jak velky podil na problemu ma prave interpretace 
pravidel.

Na takto vyznamne uzivane masine ti to ladeni rozhodne nezavidim, ale 
nevidim jinou cestu jak se dobrat vysledku nez pokusovani s ruznymi 
nastavenimi. Musel bysis vedle postavit testovaci stroj a dokazat proti 
nemu vytvaret odpovidajici zatizeni - a to nevim, jestli mas takovou 
moznost.

> Dalsi zalezitosti je parovani sitovek pod vysokou zatezi. Z praxe vim, ze
> parovani interface casto znamena vykon dolu, nekdy az na tretinu puvodniho

No, to je ztrata, ktera je tolerovatelna jen pokud ten vykon nepotrebujes.

V opacnem pripade je treba zvazit, zda jsou prostredky zvoleny dobre. 
Zalezi proti vypadkum kterych komponent se presne jistis , ale mam za 
dost dobre mozne, ze jak 'lagg' je mozna pro dany ucel zbytecne slozity 
nastroj - a overhead souvisi prave s temi funkcemi, ktere mozna nakonec 
vubec nepotrebujes ...

Pokud neni cilem zvyseni pruchodnosti (agregace) ale failover, pak bych 
spis nez po lagg koukal pro bridge+stp. Tam bych cekal overhead mensi, 
protoze v kazdy okamzik efektivne funguje jen jedna z obou karet coz 
logiku zpracovani zjednodusuje a cekal bych overhead spis o dost mensi 
nez 66% ...


				Dan


More information about the Users-l mailing list