Jak najít úzké hrdlo v hardware?

Jak najít úzké hrdlo v hardware?
« kdy: 12. 12. 2012, 11:09:00 »
Dobrý den,
mám ručně stavěný desktop (dnes snad ještě střední třída)

Deska MSI 790FX-GD70,
Procesor AMD Phenom II X4 905e,
Grafika MSI N570GTX Twin Frozr II,
RAM Kingston 2x4GB DDR3 1600MHz CL9
Systém na SSD Intel 520 60 GB
Data na 1.5 TB druhém interním disku
Win7 Ultimate 64b

SSD dramaticky zvýšilo responsivnost systému, po změření jsem zjistil, že čte cca 280 MB/s (není to teoreticky moc, ale je to 3x rychleji než můj dosavadní disk)
Prosím vás, zkušenější, o radu / nasměrování - jak nyní zjistím bottleneck mého stroje?

Když loaduje nějaká náročná hra (která je nainstalovaná na SSD) nebo když systém provádí nějakou instalaci / rutinu a ještě nezapisuje na HDD, co mu stále tak dlouho trvá - proč není vše hotové v řádu desetin sekund? Disk během procedury nečte celou dobu, procesor nikdy není vytížen na více jak 50%, v RAM je 5 GB volného místa..

Jde o nějakou limitaci desky?
Nahrnout např. 2 GB do RAM znamená ty 2 GB přečíst, to chápu.
cca 7 sekund to bude trvat při sekvenčním čtení předpřipravených dat, takže v praxi i déle.

Náročnější hry ale stále loadují třeba 40 vteřin, Javovský program (while(true)) nikdy nevytíží procesor na 100%, což se někdy hodí (když píšu časově náročné algoritmy)..

Možná to pletu páté přes deváté, ale dotaz je jednoduchý, znáte někdo nějakou metodiku na nalezení aktuálního bottlenecku? Nastínil byste někdo něco takového?

Děkuju!
« Poslední změna: 12. 12. 2012, 11:18:44 od Petr Krčmář »


Rax

Re:Jak najít úzké hrdlo v hardware?
« Odpověď #1 kdy: 12. 12. 2012, 11:32:31 »
Protože jednovláknový program nedokáže vytížit čtyři jádra a v takovém případě vidíš využití na CPU 25 % a znamená to že tvoje aplikace nebo hra maká naplno.

Re:Jak najít úzké hrdlo v hardware?
« Odpověď #2 kdy: 12. 12. 2012, 11:47:07 »
IMHO jsi chybne zvolil procesor, mel jsi vzit misto "usporneho" nejaky BE a ted jsi to mohl trochu pohonit nekam nad 4GHz a bylo by to o kousek lepsi. Jak bylo psane vyse: v techto pripadech je na vine procak. Pokud ten program pises ty sam a nemas ho napsany tak, aby umel jet ve vice vlaknech tak proste pouzije jedno jadro a to jede naplno (= 25% celkovyho vytizeni). I dnes stale jeste vetsina her je na tom podobne, kdyz umi pouzit dve jadra tak je to skoro i radost. Ono to asi neni uplne sranda to dobre napsat multithread, nehlede na to, ze jsou veci ktery proste ani nejdou (zkratka protoze neco ceka na data z neceho jineho).

Napr:
auto hra nemuze pocitat dopredu smyk proste protoze nevi co zmacknes.
while nemuze pocitat druhou iteraci dokud neni spocitana prvni protoze je mozne ze bude pracovat s daty ktere ta prvni musi vytvorit

naproti tomu
kodovani videa je mozne rozdelit tak ze spustim 4 procesy a kazdy si bude brat nejblizsi nezpracovany minutovy usek a tyhle useky se pak proste slepi. proces ktery dela 3. minutu filmu nepotrebuje cekat az skonci kodovani 1. minuty filmu protoze sva data uz ma odkud cerpat. stejna situace muze byt s komprimaci.
Děkuji za možnost editace příspěvku.

Re:Jak najít úzké hrdlo v hardware?
« Odpověď #3 kdy: 12. 12. 2012, 12:22:14 »
Díky za reakce.
Možná naivně, ale myslel jsem si, že je úkolem systému rozdělit zátěž aplikace na více jader, pokud to tak nedělá sama aplikace. Často vidím všechny grafy vytížení v nějakém stavu ve smyslu 24% 22% 25% 19%, nepamatuji si situaci, kdybych viděl např. 90% 2% 2% 2%. Taky může jít o nějak nepochopenou metodiku měření správce úloh (win).

Úsporný procesor jsem tenkrát vzal vědomě, byl to i tak pro mě ohromný skok vzhůru. Spotřeba byla poloviční a skoro to netopí. Nicméně, i kdybych to potaktoval a dostal to, hypoteticky, ke 3GHz, z dosavadních zkušeností nevěřím, že bych to jakkoli poznal, mimo toho, že bych se staral o chlazení a hluk.

Re:Jak najít úzké hrdlo v hardware?
« Odpověď #4 kdy: 12. 12. 2012, 12:40:15 »
no, system se snazi, ale nekdy je to kontraproduktivni protoze se snazi prepinat jadra tam a zpatky a ve finale to tim jen zpomali.
Děkuji za možnost editace příspěvku.


Re:Jak najít úzké hrdlo v hardware?
« Odpověď #5 kdy: 12. 12. 2012, 12:43:13 »
Možná naivně, ale myslel jsem si, že je úkolem systému rozdělit zátěž aplikace na více jader, pokud to tak nedělá sama aplikace.
Pokud aplikace běží v jednom vlákně, tak systém nemá žádnou možnost, jak by to mohl udělat. A i pokud je vláken více a není to dobře napsané (popř. to prostě líp napsat nejde) - tj. vlákna se často synchronizují, taky reálný efekt nebude moc slavný, protože prostě čas od času nějaké vlákno čeká na jiné, takže OS s tím nic nenadělá.

Trochu speciáním případem jsou programovací jazyky, kde se "paralelně" píše defaultně - např. Erlang. Tam je rozprostření na víc jader v podstatě zadarmo a navíc to škáluje docela hezky lineárně.

Re:Jak najít úzké hrdlo v hardware?
« Odpověď #6 kdy: 12. 12. 2012, 12:47:36 »
Děkuju..