Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

Prestanda maximering av dator, vilka verktyg kan man använda?

När inte top eller vmstat längre räcker, vilket verktyg använder man då för att ta reda på var flaskhalsar i beräkningen finns och hur man kan åtgärda dem?

Bakgrund:

Vi har en teknisk applikation som när den startar tar det mesta, flera GB, av internminnet och 100% av en CPU. Sedan kör den den i flera timmar, upp till en dag, med en och samma processs på uppgiften. Det som är mest i bruk är alltså; CPU, internbus och internminne. Nätverk och disktrafik är i sammanhanget marginellt.

Mål:

Hur tar man reda på vilken flaskhals man har, vilken del i kedjan lönar det sig mest att uppgradera? Är det någon specifik del som begränsar mer än något annat? Lönar det sig att dränka moderkort, processor och internminne i kylmedia och sedan skruva upp frekvensen?

Fort skall den gå, men det får inte bli fel och inte krascha samt inte kosta fantasisummor. Kraschar den efter en halvdags jobb så blir man mäkta irriterad... {#emotions_dlg.yell}

Operativsystem är Red Hat Enterprise Linux, och nej, den går inte att byta ut. Den måste vi köra av supportmässiga skäl.

---

Linux växer snabbast!

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

Kristians bild

Om programmet är trådat eller kör i flera processer borde ni vinna mycket med en processor med fler kärnor. Slår ramanvändningen i taket?

Även om disknyttjandet är litet så kan det sinka prestandan rejält om man accumulerar den spenderade tiden. Prova att läsa/skriva data från en separat disk eller än bättre från/till en ram-disk och mät effekten.

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

---------------------------------------

 

hoths bild

Programmet är inte trådat och kan inte dra nytta av flera processer. Det är heller inte möjligt att få det att nyttja fler processorer, vi har frågat. Det beror på problemets natur att det inte är möjligt.

Skall kolla övriga tips.

----
Linux växer snabbast!

----
Linux växer snabbast!

Kristians bild

Beräknar ni Fibonacci-tal Wink ? Många problem går att hacka upp i likhet med Lisps  map-and-reduce (http://www.joelonsoftware.com/items/2006/08/01.html), dvs man har ett stort jobb som betas av oberoende av flera arbetstrådar och när alla är klara kan man binda samman delresultaten. Så länge man slipper kommunikation mellan arbetstrådarna är det väldigt effektivt eftersom man slipper låsa resurser (vilket annars kan ge sämre prestanda, deadlocks och annan huvudvärk).

Vissa effektiva algoritmer kan inte utföras parallellt men då finns det ibland mindre effektiva där det möjligt. Om sex år har våra datorer tusen kärnor - i det läget bör man kanske titta sig efter den parallella varianten Smile

En annan stor vinst med trådning är att man kan dela upp programmet i beräkningsdelar och I/O-delar. I ert fall är det uppenbarligen inte möjligt, så som jag tidigare skrev - testa med en RAM-disk och se ifall det gör någon skillnad.

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

---------------------------------------

 

hoths bild

Nej, vi räknar inte Fibonacci-tal. Wink

Det är en eventbaserad process med hemskt många noder. Efter varje händelse så måste allt räknas om. Därav en process, allt minne och all CPU i en process. Det är ett köpt program, de som utvecklar det är fantastiskt kompetenta. Vi kan inte ändra det. Vi har varken den kompetensen eller tiden. Vi har fullt upp med att använda det!

----
Linux växer snabbast!

----
Linux växer snabbast!

laves bild

Vad säger leverantören? De om någon borde väl veta vad man skall göra för att snabba upp programmet, särskilt som de är fantastiskt kompetenta.

hoths bild

Mer minne, snabbare CPU, snabbare allt... Wink

Det finns ju en ekonomisk gräns som gör att man vill skruva där det är mest effektivt. Därför är det ju bra att veta var man har sin flaskhals innan man lägger pengar på att förbättra något som inte ger något resultat i slutändan men som kanske var väldigt dyrt.

----
Linux växer snabbast!

----
Linux växer snabbast!

Kristians bild

Jag tror att leverantören kommer tvingas tänka om ganska snart

http://www.lysator.liu.se/upplysning/film/20081007/podcast_upplysning_20...

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

---------------------------------------

 

pluckers bild

Om du inte redan har använt det, så kanske du kan få lite mer information med sar (ingår i sysstat). Men jag tror inte det kommer visa mer än vad du redan vet. Om applikationen har allt internminne den efterfrågar (dvs. inte använder swap) och använder 100% CPU, så låter det väl som att "flaskhalsen" är CPU:n Wink

Om programmet är dynamiskt länkat, så finns det kanske möjlighet att använda sig av optimerade bibliotek med hjälp av LD_PRELOAD; t.ex. Intel har en egen kompilator som bl.a. inkluderar ett optimerat libm-bibliotek. Detta är dock inte gratis. Tror Intel även har ett optimerat malloc-bibliotek som möjligtvis kan ge bättre prestanda på minnesallokeringar.

/Micke

Kristians bild

Många program behöver allokera och avallokera en mängd objekt av samma storlek, då är det mycket effektivare att hålla en "freelist" i programmet än att be systemet om minne (malloc/free) http://wiki.linuxportalen.se/index.php/C_skola#Freelists

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

---------------------------------------