Portál AbcLinuxu, 26. dubna 2024 15:22


Dotaz: Problém s vláknem jak přiřadit místo jednoho více

5.6.2012 17:19 kusadla
Problém s vláknem jak přiřadit místo jednoho více
Přečteno: 388×
Odpovědět | Admin
Zdravím, mám problém daná aplikace přetíží celé vlákno 100% poté aplikace spadne za určitou dobu,je možnost přiřadit 2 vlákna na plný výkon tj. když nebude stačit 100% (třeba3vlákno) vezme si i 4 (vlákno4)tj. že by jednoho vlákna jeli dvě pro určitou aplikaci ?


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.6.2012 17:28 Kit
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano. Na co ses vlastně ptal?
5.6.2012 17:32 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Mam chut toto oznacit jako reseni, nez tu zase bude dalsich 30 prispevku, kdy se bude nekdo snazit pochopit, oc vlastne autorovi jde, stejne jako v ostatnich diskuzich...

Kusadla, nauc se poskytovat podstatne informace, cely ten dotaz dava smysl jako madarstina Jary Cimrmana...
5.6.2012 18:05 kusadla
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
no právě,třeba aby proces jel na 2 vlákna :(
5.6.2012 19:09 Kit
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Výborně, alespoň něco. Ve vhodném místě zkus do programu vložit funkci fork(). Pomocí roury si mohou vzniklé procesy předávat data a vyvažovat zátěž. Je dobré rodiči nechat jen řídící funkci a hrubou práci přenechat potomkům.

V jakém jazyku jsi tu aplikaci napsal? Tím jsi mohl začít - vlákna se dělají v různých jazycích různě.
5.6.2012 18:03 MadCatX
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Odpovědět | | Sbalit | Link | Blokovat | Admin

[translator fromLang="kusadla" toLang="Czech"]
Zdravím. Aplikace, kterou provozuji, vytíží jedno logické CPU na 100 % a po nějaké době spadne. Je nějaká možnost, jak rozložit danou aplikaci na více logických CPU?
[/translator]
Pokud je tato interpretace správná, odpověď je ne. Aplikace musí být napsána tak, aby dovedla těžit z výhod víceprocesorových strojů. Tahle zřejmě není.
Pokud aplikace spadne, bude chyba buď přímo v té aplikaci nebo nějaké knihovně, kterou aplikace využívá. 1. Přečíst návod, 2. Analyzovat problém, 3. Hlásit vývojářům. (Samozřejmě by nebylo od věci vědět, o jakou že aplikaci kráčí. Pokud je to nějaký game server, bude rozhodně lepší řešit problém přímo na fórech jeho vývojářů. Tady moc provozovatelů CSS či WoW free serverů asi nepotkáte.)

5.6.2012 18:10 kusadla
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
ano přesně tak(na serveru jsou 4vlákna) 3 jedou na minimální výkon,4té chyba tj. chybný plugin vytíží stroj (vlákno na 100%) to opravdu nelze přiřadit 2 celé vlákna tj. nbude stačit 100% jedno tak se přidá další na pomoc ?
5.6.2012 18:14 MadCatX
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Ne. Takto to skutečně nefunguje. Pouze vhodně naprogramované aplikace to umí.
5.6.2012 18:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Na serveru nejsou žádná vlákna. Server má procesor, procesor může mít jedno nebo více jader. Každé jádro zpracovává postupně instrukce programu. Program může běžet v jednom nebo více vláknech, záleží na tom, jak je napsán. Každé vlákno běží nezávisle na ostatních, tj. může běžet několik vláken paralelně vedle sebe – buď doopravdy, nebo se rychle střídají a výsledek vypadá, jako by běžely vedle sebe. V jednom okamžiku jedno jádro procesoru zpracovává instrukce z jednoho vlákna.

Teď zkuste se správnými termíny znovu napsat, co se u vás děje a co chcete.
5.6.2012 18:23 Matlák
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Zajímavé. Proč tak krypticky? Chybný plugin do čeho? Pokud se ten chybný plugin zacyklí, tak mu ani 100 procesorů nepomůže se ze smyčky dostat, takový proces nespadne protože nemá čas ale proto že (správně) vyhodnotí že nemá cenu se dál točit na místě. (a sto procesorů točících se na místě rozhodně problému nepomůže :-))
5.6.2012 18:46 Matlák
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
BTW je to dost zábavná otázka. Zatím jsem si nedokázal logicky představit situaci, kdy by jednovláknový program "povolával na pomoc" druhé fyzické jádro (procesor) spuštěním dalšího vlákna. Opravdové servery jsou vždycky mnohovláknové a nová vlákna vznikají prakticky s každým připojeným klientem - tady jde pouze o konfiguraci (kolik procesorových jader je možné zabrat, resp.kolik vláken lze vytvořit, po jaké době se mají ukončovat ap.)

Taková konfigurace je pak ale specifická pro daný server - čili bez názvu serveru těžko někdo může pomoct.


Jsou tu tedy dvě možnosti - buď sdělíte laskavě diskutujícím o jaký konkrétní serverový program jde, který konkrétní plugin se v něm zasekává, popřípadě co jste již zkusil za kroky podniknout aby se tak nedělo, a nebo rovnou můžete přestat psát, jelikož a)nevíte vůbec co děláte (model opice z gramofonem) nebo b)nechcete abychom to věděli my (model opice s rtuťovým spínačem připojeným k půltuně plastické trhaviny).
5.6.2012 19:52 Suchý čert
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
BTW je to dost zábavná otázka. Zatím jsem si nedokázal logicky představit situaci, kdy by jednovláknový program "povolával na pomoc" druhé fyzické jádro (procesor) spuštěním dalšího vlákna. Opravdové servery jsou vždycky mnohovláknové a nová vlákna vznikají prakticky s každým připojeným klientem - tady jde pouze o konfiguraci (kolik procesorových jader je možné zabrat, resp.kolik vláken lze vytvořit, po jaké době se mají ukončovat ap.)
Tak možné to je, já jeden takový program napsal. :-) V jednom vlákně může obsluhovat více klientů současně (epoll/kqueue), ale pokud uzná za vhodné, tak si může „povolávat na pomoc“ i další vlákna.
5.6.2012 20:48 Matlák
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Neříkám že je to nemožné - spíš že to nedává moc logický smysl (v kontextu toho dotazu), prostě proces musí nějak sám provést "load-balancing" na úrovni klientů, segmentů streamu, whatever.. a ne na úrovni "jedno jádro jede naplno přivoláme další" -

Jinak samozřejmě taky používám dočasná vlákna, například k dočítání A/V obsahu na pozadí z disku, aby přitom přehrávání a vůbec GUI nejevilo nepříjemné "záseky". Tvořím je ovšem s cílem že potřebuju prostě něco číst do paměti a vím že to můžu dělat paralelně. To s "voláním o pomoc" nemá nic společného.
5.6.2012 21:27 Suchý čert
Rozbalit Rozbalit vše Re: Problém s vláknem jak přiřadit místo jednoho více
Ale v té mé aplikaci jsou ta vlákna rovnocenná a jejich počet se mění v závislosti na aktuální zátěži. I když zase ne, že by to bylo tak důležité, s pevným počtem vláken by to asi nějak fungovalo také. :-)

Kusadlův dotaz moc smysl nedává, ale jak jsem si všiml, tak to je v jeho případě skoro pravidlem.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.