Zatížení CPU při velkém síťovém provozu, software irq

JmJ

  • ****
  • 315
    • Zobrazit profil
Re:Zatizeni CPU pri velkem sitovem provozu, software irq
« Odpověď #30 kdy: 27. 08. 2015, 10:14:21 »
:-) ano, to se snazim a jsem si toho vedom. Presto si zatim stale myslim, ze ten problem ma reseni. Jak jiz bylo zmineno, nevadi, kdyz se rozpadne sit. Takze jde o to, v miste mezi hw irq a soft irq vyhodnotit, ze tech hw irq (tedy nejspis "paketu") prichazi moc a proste je zahodit. Tato uprava samozrejme znamena nove jadro, ale to se uz proste neda nic delat.

Pátráte na špatném místě, jakmile vznikne 200k hardwarových přerušení za sekundu tak už máte zahrobenou mašinu z principu obsluhy přerušení a v software už je na řešení pozdě. Musíte nějak hardware domluvit aby to snížil na max 1k, třeba periodickým zakazováním a povolováním přerušení na NIC, nebo přejít na pooling.

Ok. Jestli se nepletu, tak pri obsluze hw preruseni je aktualne obsluhovane preruseni zakazano, tusim se tomu rika maskovani preruseni? V jadre je to udelano tak ze, se v obsluze preruseni jen "presunou dat" do fronty pro soft irq, a hw irq se odmaskuje, tedy povoli. Podle programu top je procesor vytizen zpracovani soft irq. Nevim, jestli se do toho pocita uz presun dat z hw irq do fronty soft irq nebo ne. Pokud by se tam nepocitalo, pak by to mohlo znamenat, ze me zahazovani muze pomoct. Kazdopadne zkusim ze srandy nechat hw irq zamaskovane par mikrosekund pri jeho kazdem zpracovani a uvidim, co to udela ;-).

Chapu, ze ten muj pristup nezni moc profi, ale s podobnyma vecma sem si hral naposled na 8bit atarku :-(


tomas123

Re:Zatížení CPU při velkém síťovém provozu, software irq
« Odpověď #31 kdy: 27. 08. 2015, 13:21:16 »
coalesce? muzu se zeptat jak to funguje? pripadne nejaky cteni doporucit

diky

k

Re:Zatížení CPU při velkém síťovém provozu, software irq
« Odpověď #32 kdy: 27. 08. 2015, 13:58:00 »
coalesce? muzu se zeptat jak to funguje? pripadne nejaky cteni doporucit

https://en.wikipedia.org/wiki/Interrupt_coalescing

Re:Zatížení CPU při velkém síťovém provozu, software irq
« Odpověď #33 kdy: 27. 08. 2015, 15:45:40 »
Ak nebudes uspesny tak existuje este jedno super jednoduche riesenie, ktore sa volakedy pouzivalo ak bol niekto moc paranoik. Staci dat na ten spravny twisted par feritovu perlu. To obmedzi priepustnost siete na nejaku minimalnu hranicu. Zrejme bude treba nastavit 10Mbps.

Jenda

Re:Zatizeni CPU pri velkem sitovem provozu, software irq
« Odpověď #34 kdy: 28. 08. 2015, 00:25:56 »
JEDINA cesta je omezit ten provoz jinde.
Vždyť se o pár příspěvků před tebou píše i o jiných cestách. Například omezení těch interruptů.

Tazatel: obávám se, že bez rekompilace kernelu (nebo alespoň modulu) to prostě nepůjde. Teoreticky bys to mohl zkusit detekovat v userspace a v případě moc velké zátěže síťovku/přerušení zakázat, ale asi to nebude moc spolehlivé.

A jelikoz 52B x 200k = 10MB/s = 100Mbit sit na 100%. Tohle bude mit problem zvladnout kazda podobna krabka.
Mně teda gigabitový proud paketů odrovná Core i3-2350M s AR8151.

a druhak to neni moc vhodne
Nestyď se, já také dělám počítačem řízené sex-toys.


j

Re:Zatizeni CPU pri velkem sitovem provozu, software irq
« Odpověď #35 kdy: 28. 08. 2015, 11:04:22 »
JEDINA cesta je omezit ten provoz jinde.
Vždyť se o pár příspěvků před tebou píše i o jiných cestách. Například omezení těch interruptů.
Jasne ... kolik asi tak kousku HW neco takovyho umi ...

Ale znam zcela 100% spolehlivou a zcela 100% realizovatelnou cestu, sak pise ze mu na funkcni siti nezalezi, tak proc ji zapojuje?

k

Re:Zatizeni CPU pri velkem sitovem provozu, software irq
« Odpověď #36 kdy: 28. 08. 2015, 11:44:35 »
Jasne ... kolik asi tak kousku HW neco takovyho umi ...

99 % HW s irq podporuje povolit/zakázat generování irq. Po větších úpravách v ovladači tak počet irq za sekundu snížit jde nepochybně. Situace není že to nemá řešení, ale že řešení bude pracné.

LaB

Re:Zatizeni CPU pri velkem sitovem provozu, software irq
« Odpověď #37 kdy: 28. 08. 2015, 12:52:25 »
OK, prepni sitovku na 10Mbit. Kazda by to mela umet.

Proč to nechce udělat?
Mně to přijde jako řešení, proč to řešení není?
Co mi uniká?

LaB

Re:Zatížení CPU při velkém síťovém provozu, software irq
« Odpověď #38 kdy: 28. 08. 2015, 13:12:12 »
Já tomu nerozumím, osobně bych shodil rychlost na 10Mbit, což je tak akorát, aby to tu krabičku nezabilo.
To by byl první krok.
Ve druhém kroku bych monitoroval počet volaných IRQ za vteřinu a pokud by jich bylo víc než X, shodil bych síťovku.
V Proc je tuším dost údajů, abych to mohl shodit i primitivním skriptem volaným co pár vteřin.

A kdybych chtěl dělat něco fakt hustodémonsky krutopřísného, tak prostě pošlu command přímo switchi, aby mi toho posílal míň.
Minimálně všechny trochu slušný Cisco a lepší HP to umí.


Trident

Re:Zatížení CPU při velkém síťovém provozu, software irq
« Odpověď #39 kdy: 28. 08. 2015, 15:08:14 »
Já tomu nerozumím, osobně bych shodil rychlost na 10Mbit, což je tak akorát, aby to tu krabičku nezabilo.
To by byl první krok.
Ve druhém kroku bych monitoroval počet volaných IRQ za vteřinu a pokud by jich bylo víc než X, shodil bych síťovku.
V Proc je tuším dost údajů, abych to mohl shodit i primitivním skriptem volaným co pár vteřin.

A kdybych chtěl dělat něco fakt hustodémonsky krutopřísného, tak prostě pošlu command přímo switchi, aby mi toho posílal míň.
Minimálně všechny trochu slušný Cisco a lepší HP to umí.
Pane cisco odborniku. Uz vite co vam provede zapnuti flow-control na ethernetu s protokoly vyssich vrstev?To je zakladni chyba kterou dela vetsina unpraktiku. Ciste nahodou takovy "malo pouzivany" TCP ktery skoro nikdo nezna a jez ma vlastni flow control ze. Nebo pokud mas i jine protokoly jez maji jeste dodelavane vlastni rizeni toku. Etherneti Flow-control muze pomoci, ale musim opravdu velmi presne dobre vedet jak je to se signalizaci na vyssi vrstvy a ktera strana bude akceptovat PAUSE framy.
Takze misto vyreseni problemu jsme tomu chudakovi pridelali dalsi problem treba se skakajicim TCPkem, ztratou mraku UDP paketu a na 20ti dalsich prispevcich budete resit tuneni a treba kterou implementaci TCP pouzit.

Cesta do pekla je dlazdena dobrymi umysly - Ethernet Flow control. Pokud nemam veci pro ethernet flow control dotunene tak nechavam vypnute. Nektere drivery to navic nemaji ani vhodne implementovano takze to je dalsi promenna.

JmJ

  • ****
  • 315
    • Zobrazit profil
Re:Zatížení CPU při velkém síťovém provozu, software irq
« Odpověď #40 kdy: 28. 08. 2015, 16:19:08 »
Tak se to nakonec podarilo (snad ;-) ).

Ad reseni s 10 Mbity - funguje, procesor to v pohode stiha. Byl tu jisty pozadavek na to, ze by se to tak ale resit nemuselo. Samozrejme je to velice jednoduche a spolehlive reseni, takze bude take pouzito.

Ad upravy kernelu/ovladace - dev.c je spatne misto, to uz je vrstva nad ovladacem. Pomohla uprava ovladace, kde nebylo potreba delat nic moc sloziteho. Zjednodusene - staci monitorovat pakety za sekundu a kdyz je jich moc, tak na nejakou dobu zablokovat IRQ. Tedy presne to reseni, ktere zde nekdo uvadel.

Reseni trochu detailneji (mozna nepouziju uplne spravnou terminologii):
Ze sitovky prijde irq, to vyvola handler v ovladaci, ktery zamaskuje preruseni a informuje pres NAPI rozhrani vrstvu nad ovldacem o tom, ze si ma ze sitovky pollingem nacist pakety. To zavola metodu pro polling z driveru sitovky. V teto metode spocitam, kolik cca paketu prislo v poslednim merenem casovem useku. Pokud je to pod limit, pak po nacteni vsech dat ze sitovky se ihned povoli irq. Pokud je to nad limit, pak se irq nepovoli, ale jen se nastavi priznak, ze se tak ma pozdeji stat. Do driveru jsem pridal timer, ktery tika kazdych 100 ms (zkusmo zvolena hodnota) a ktery v pripade, ze je nastaven priznak povoleni irq, toto irq povoli. Povoleni irq je tak v pripade zahlceni nahodne zpozdeno o 0 - 100 ms.

Pro praci s timerem sem pouzit funkce setup_timer, mod_timer, del_timer, ktere jsem nasel jako vhodne pro pouziti v kernelu. Nema s nimi nekdo nejakou negativni zkusenost?

Nic sloziteho ani prevratneho.

V prvnim updatu sw pro tajmene zarizeni bude moznost zapnout 10 Mbit a pozdejsi vetsi update zrejme zahrne jadro s upravenym ovladacem.

Dekuji za rady a napady :-)