Program för att se vad som flaskar

Permalänk
Inaktiv

Program för att se vad som flaskar

Hej alltför ofta sitter jag med något program som går ubersegt, ibland ser man väldigt tydligt i windows resource manager vad som flaskar, dessutom kan man kolla på ens grafikkortsprogram och se hur hårt denna jobbar.

Men väldigt ofta ser jag att processorn kanske ligger på 30% belastning, enstaka kärna sticker upp till 40%, ram så har man bara använt 1/3 del, hårddisken utnyttjas knappt, likaså grafikkortet. Ändå tar det kanske 1h att göra en export från ett program och man funderar på vad flaskhalsen är?
-Jag har stött på detta på ett 30tal datorer från med Win 3.1-> windows server 2016 och använt olika programvaror, så nej det är ej datorn som det är fel på.

Nå frågan är vet någon något bra program för att analysera vad det är som flaskhalsen i sin dator när man kör viss belastning på den?

Permalänk
Medlem

Om varken ram, hdd, cpu eller grafikkort presterar 100% av sin potentiella prestanda har du ingen flaskhals?

Visa signatur

Chassi: Fractal Meshify, Skärm: LG C2 oled, GPU: AMD 6950XT, CPU: Ryzen 5800X3D, M2: 1TB , SSD: 480GB, M2 1TB, PSU: Dark Power Pro 1500W, Mobo: ASUS TUF GAMING X570-PLUS, RAM: 32GB Ripjaws @ 3600MT, Mus: Logitech G502X Matta: Steelseries QcK Heavy, Tbord: Logitech MX Mech Mini, Hörlurar: BD DT1990 Pro, DT770 PRO, Superlux HD-668B, Sennheiser HD599 OS: Win11. AI: Tascam US-20x20, Monitorer: Yamaha HS7 x2.
Citera när ni svarar! :)

Permalänk
Inaktiv
Skrivet av Wh1spY:

Om varken ram, hdd, cpu eller grafikkort presterar 100% av sin potentiella prestanda har du ingen flaskhals?

Och då är följdfrågan, om det nu en export tar 1h att göra. Vilken hårdvara ska jag då uppgradera för att göra exporten snabbare?
Eller spelar det ingen roll vad för hårdvara jag skaffar?
Nu är min fråga generell, då jag hur ofta som helst i väldigt många program känner att det går väldigt segt, men jag ser ingen komponent som bottnar. Och känna att det går segt är ingen inbindning utan operationer kan ta flera minuter att göra.
Alltså man klickar på en knapp och får vänta någon minut på att det som utförs ska utföras.

Permalänk
Medlem

Vad är det för program då? Ibland ligger felet i programmet i sig som helt enkelt inte kan jobba snabbare av X eller Y anledning.

Visa signatur

Maximus X Hero - 8700k @5.1GHz - H115i - 32GB LPX@3466MHz - MSI 980Ti Gaming - EVGA SuperNova 750 G2 - Asus vg248qe - FD R5

Permalänk
Inaktiv
Skrivet av Elghinnarisa:

Vad är det för program då? Ibland ligger felet i programmet i sig som helt enkelt inte kan jobba snabbare av X eller Y anledning.

Det är blandat alltifrån kommersiella till egenskapade. Bland egenskapade så är det t.ex när ett tusentals databasfiler ska uppdateras med information. Det blir en hel del sql-anslutningar till dessa.

Min misstanke med dessa programmen är att de använder sig av väldigt massa komponenter, där det skapas anslutningar åt det ena och det andra hållet. Jag är dock tveksam på att det är inbyggda delayer som gör att det går segt, men att det är minibegräsningar som kanske ej visas i taskmanagern för att de är så korta.

För att ta ett exempel att läsa in en megastor IFC fil i Autodesk Revit tog på jobbdatorn ca 12h eller något. (jag var ej där)
På min privata dator fixade jag samma fil på runt 4h.

På ingen av datorerna låg någon komponent hela tiden i max, men ändå gick det snabbare på min privata. Frågan är varför?
Jobbdatorn: i7 3770k 8GB ram, uberkass gpu, billig ssd
Privata: i7 7700K 64GB ram, 1060 6 GB, 960 Evo m.2

*edit*
Men som sagt jag upplever detta slöhet i väldigt många program, saker tar hur lång tid som helst att utföra, men man ser inget som bottnar.
Det generella med programmen är dock att de ofta inte är mainstrem och att de säkerligen drar ner på optimeringar för att få pengarna att räcka till att implementera funktionen. Ett program som kanske säljs i 10 000 exemplar istället för 10miljoner har ju mindre pengar för prestandaoptimeringar.

*edit2*
Ett annat kommersiellt program, så är det en massa objekt på sidor. Dessa objekt är uppbyggda av olika databasefiler av olika slag. När man ska uppdatera och bygga om säg 2000 såna sidor så kan det ta några timmar, jag vill få ner tiden, men jag ser ingen hårdvara som begränsar.
Nedanför visas hur en sida kan se ut och det är några tusen såna som ska byggas om:
http://www.osg.se/wwjl/Var/Processbild_1/driftkort.gif

Permalänk
Medlem
Skrivet av anon159643:

Och då är följdfrågan, om det nu en export tar 1h att göra. Vilken hårdvara ska jag då uppgradera för att göra exporten snabbare?
Eller spelar det ingen roll vad för hårdvara jag skaffar?

Enl mig så är det ingen del som behövs bytas ut, men det låter jäkligt skumt om både jobbdatorn och din privata kör samma fil på olika tider, utan att någon av delarna i datorerna flaskar. Aldrig hört problemet förut. Du får vänta och se om någon bättre insatt förstår sig på ditt problem.

Skrivet av anon159643:

Alltså man klickar på en knapp och får vänta någon minut på att det som utförs ska utföras.

Låter ju helt klart som om någon typ av lagringsmedia / minne inte hinner med. Men svårt att veta utan att sitta där och felsöka som sagt.

Visa signatur

Chassi: Fractal Meshify, Skärm: LG C2 oled, GPU: AMD 6950XT, CPU: Ryzen 5800X3D, M2: 1TB , SSD: 480GB, M2 1TB, PSU: Dark Power Pro 1500W, Mobo: ASUS TUF GAMING X570-PLUS, RAM: 32GB Ripjaws @ 3600MT, Mus: Logitech G502X Matta: Steelseries QcK Heavy, Tbord: Logitech MX Mech Mini, Hörlurar: BD DT1990 Pro, DT770 PRO, Superlux HD-668B, Sennheiser HD599 OS: Win11. AI: Tascam US-20x20, Monitorer: Yamaha HS7 x2.
Citera när ni svarar! :)

Permalänk
Medlem

Nu är jag inte expert inom området, men som jag förstår det så rapporterar div. resurshanterare "medel" för en specifik hårdvara, som alla består av flera komponenter.

Sysslar man med massa databasanrop osv så kanske det är IOPS som maxas, men det finns fortfarande gott om utrymme för sekventiell läsning vilket innebär att du fritt fram kan titta på youtube samtidigt (som laddar ner smådelar och spelar upp cache, låt oss säga sekventiellt). Har du HDD+SSD och kan testa på båda kanske du märker HDD använder 30%, och SSDn likaså, men då IOPS är väsentligt högre på SSDn går det brutalt mycket snabbare även fast båda rapporterar samma %.

I andra fall kanske du bara använder 30% av ditt utrymme på ditt RAM, men mängden data som skickas fram och tillbaks flaskar själva kommunikationskanalerna så det fysiskt inte kan gå snabbare.

Spelar du spel kanske du sitter på 20fps även fast din CPU rapporterar 50% användning i en CPU-tung titel, men mängden draw calls ex totalt maxar en specifik del av CPUn medan resten av den är helt onyttjad (vilket lämnar utrymme att göra andra saker som inte använder samma delar av CPUn).

Osv osv, detta är generella exempel. Jag känner inte till en specifikt program som kan testa alla delar av alla komponenter och faktorer för att avgöra flaskhals, kanske finns men är är noll insatt i såna program. Det finns dock en rad olika program som testar olika saker som du kan bencha med för att se vilket test som presterar brutalt mycket sämre när du exporterar. Mina tankar kring detta säger att ett program som samlar ihop alla dessa funktioner i ett är någorlunda kontraproduktivt att utveckla, då de antagligen skulle riktas till lekmän medan det är mer professionella utövare som vet vad de sysslar med och lättare kan förstå vart man ska börja felsöka som skulle kunna tänkas använda detta program. Lekmän skulle inte bry sig om att djupdyka så mycket annat än att notera att deras CPU används till 50%, tycka att det verkar lite udda, och sen gå vidare med sina liv.

Permalänk
Inaktiv
Skrivet av Wh1spY:

Enl mig så är det ingen del som behövs bytas ut, men det låter jäkligt skumt om både jobbdatorn och din privata kör samma fil på olika tider, utan att någon av delarna i datorerna flaskar. Aldrig hört problemet förut. Du får vänta och se om någon bättre insatt förstår sig på ditt problem.

Låter ju helt klart som om någon typ av lagringsmedia / minne inte hinner med. Men svårt att veta utan att sitta där och felsöka som sagt.

Ok, tackar för hjälpen. Jag upplever som sagt inte problemet i ett program utan flera där dessa körs på helt olika maskiner.

Skrivet av Raphaei:

Nu är jag inte expert inom området, men som jag förstår det så rapporterar div. resurshanterare "medel" för en specifik hårdvara, som alla består av flera komponenter.

Sysslar man med massa databasanrop osv så kanske det är IOPS som maxas, men det finns fortfarande gott om utrymme för sekventiell läsning vilket innebär att du fritt fram kan titta på youtube samtidigt (som laddar ner smådelar och spelar upp cache, låt oss säga sekventiellt). Har du HDD+SSD och kan testa på båda kanske du märker HDD använder 30%, och SSDn likaså, men då IOPS är väsentligt högre på SSDn går det brutalt mycket snabbare även fast båda rapporterar samma %.

I andra fall kanske du bara använder 30% av ditt utrymme på ditt RAM, men mängden data som skickas fram och tillbaks flaskar själva kommunikationskanalerna så det fysiskt inte kan gå snabbare.

Spelar du spel kanske du sitter på 20fps även fast din CPU rapporterar 50% användning i en CPU-tung titel, men mängden draw calls ex totalt maxar en specifik del av CPUn medan resten av den är helt onyttjad (vilket lämnar utrymme att göra andra saker som inte använder samma delar av CPUn).

Osv osv, detta är generella exempel. Jag känner inte till en specifikt program som kan testa alla delar av alla komponenter och faktorer för att avgöra flaskhals, kanske finns men är är noll insatt i såna program. Det finns dock en rad olika program som testar olika saker som du kan bencha med för att se vilket test som presterar brutalt mycket sämre när du exporterar. Mina tankar kring detta säger att ett program som samlar ihop alla dessa funktioner i ett är någorlunda kontraproduktivt att utveckla, då de antagligen skulle riktas till lekmän medan det är mer professionella utövare som vet vad de sysslar med och lättare kan förstå vart man ska börja felsöka som skulle kunna tänkas använda detta program. Lekmän skulle inte bry sig om att djupdyka så mycket annat än att notera att deras CPU används till 50%, tycka att det verkar lite udda, och sen gå vidare med sina liv.

Tackar för informationen ja det är nog jättesvårt att göra djupdykningar i vad som gör saker går slött i andra tillverkares programvaror. Liksom att Autodesk Revit är slö att importera IFC filer är en fråga för Autodesk att utreda, det är inget som vi vanliga folk lätt kan vara på. (Autodesk är de som gör Autocad, maya etc, de är inget litet bolag)

Nu kan jag ej så lätt byta ut någon hårdvara på just min datorn(finns inte så extremt mycket snabbare att köpa), men jag stöter på problemet överallt. Där man i 95% av fallen direkt ser att en kärna ligger i 100%, eller disken maxas etc. Men de där övriga 5% är jag ute efter.

Permalänk
Medlem
Skrivet av anon159643:

Nu kan jag ej så lätt byta ut någon hårdvara på just min datorn(finns inte så extremt mycket snabbare att köpa), men jag stöter på problemet överallt. Där man i 95% av fallen direkt ser att en kärna ligger i 100%, eller disken maxas etc. Men de där övriga 5% är jag ute efter.

Där har du lösningen på ditt problem, programmen du använder är inte programmerade så att de kan använda sig utav flerkärniga processorer. Byt till ett bättre program.

Visa signatur

Chassi: Fractal Meshify, Skärm: LG C2 oled, GPU: AMD 6950XT, CPU: Ryzen 5800X3D, M2: 1TB , SSD: 480GB, M2 1TB, PSU: Dark Power Pro 1500W, Mobo: ASUS TUF GAMING X570-PLUS, RAM: 32GB Ripjaws @ 3600MT, Mus: Logitech G502X Matta: Steelseries QcK Heavy, Tbord: Logitech MX Mech Mini, Hörlurar: BD DT1990 Pro, DT770 PRO, Superlux HD-668B, Sennheiser HD599 OS: Win11. AI: Tascam US-20x20, Monitorer: Yamaha HS7 x2.
Citera när ni svarar! :)

Permalänk
Inaktiv
Skrivet av Wh1spY:

Där har du lösningen på ditt problem, programmen du använder är inte programmerade så att de kan använda sig utav flerkärniga processorer. Byt till ett bättre program.

Nu var jag otydligt i min text, men de program där jag kan se flaskhalsen i är inte mitt problem. Utan de program där jag inte ser någon kärna går högt och det annars går segt.

Sedan även om ett program är gjort för att använda 16 kärnor som programmet ovanför som går segt, så kan det ändå vara så att det är en enda kärna som sätter begränsningen för hur snabbt hela programmet känns. Och jag vill påstår att det väldigt ofta är en kärna som begränsar allt, det andra kärnorna kanske ligger i 60%.
Undantaget är vissa operationer som extremt väl skalar, det kan vara inläsning/export av filer som kan vara väldigt enkelt att sprida lasten på.

*edit*
Detta med antal kärnor är komplicerat. Ett program jag använder maxar alla 8 (kärnor +ht) vid inläsning, fler kärnor hade resulterat i att programmet hade startas snabbare, men när programmet väl är igång, så är det två kärnor som ligger långt över alla andra och det är de som begränsar hur snabbt programmet upplevs att använda.

*edit2*
Angående byta program så är det inte alltid så lätt, programmet med bilder jag pratar ovanför kostar över 1 mille i licens för en stor anläggning, lägg till 20 gånger så mycket för att fysisk göra ett systembyte.
Programmet skalar självklart på i princip hur många kluster som helst (inte kärnor utan helt skilda datorer), men det innebär inte att precis alla delar i programmet skalas bra och mycket arbete så är det en enda kärna som sätter begränsningen för hur snabbt något ska gå.

*edit3*
Nedanför en skärmdump på ett taskmanger vid uppstart av ett program, där man i första ögonblick tror att i7 7700K suger med sina 4 kärnor, men när väl datorn är igång så sjunker alla kärnor utan två och 7700K visar vad den går för.

Permalänk
Medlem

Jag jobbar mycket med såntvhör.
Det finns så många saker som kan vara flaskhalsen att det är oerhört svårt att ge några generella rekommendationer, eller skriva ett program som testar alla komponenterna.
Disk, där behöver man både titta på iops, latency, disk queue length och throughput vid olika typer av belastning, plus bus-hastighet.
Om vi tar ditt exempel med stora filer. Det är mycket troligt en sekvensiell läsning, och då kan en SSD normalt leverera ca 450MB/sec. Filstorlek delat på diskhastighet = teoretisk max hastighet. Låt oss säga det blir 180 sekunder. Om din inläsning tar mer än 180 sek, då KAN disken vara en flaskhals och man behöver kika på diskköer, latency etc. Tar det drygt 170-210sek plus/minus, så skulle jag kika på exempelvis CPU. Där har du varit på rätt spår med cores, singel trådade appar. Ibland får man även kika på nätverket och de anrop som sker där. Går appen mot tex en SQL databas så kan man ge sig fan på att det är dör problemet är. Utvecklare verkar generellt hopplös dåliga på att skriva effektiva sql queries som funkar när miljön växer. Osv osv.
Det tar tid, kunskap och mycket erfarenhet att hitta orsakerna. Vilket är varför företag är beredda att betala ganska bra för den hjälpen och kompetensen.

Visa signatur

CASE: Corsair Obsidian 900D | CPU: Intel i7-8086k@5.4GHz | GPUs: 1x AORUS GeForce® GTX 2080 Ti Waterforce WB Xtreme Edition | 2x AORUS GeForce® GTX 1080 Ti Waterforce WB Xtreme Edition 11G | MB: Asus ROG Maximus Formula X | NVMe: 1x 1TB Samsung 960 Pro PCIe | SSD: 2x 1TB Samsung 850 EVO | RAM: G.Skill Trident Z Black/White 64GB (4x16GB) / 3200Mhz / DDR4 / CL14 | PSU: Corsair HX1200i | COOLING: EKWB EK-KIT 1xXE360 1xXE420 1xXE240 | SCREENs: 2x40" 3x27" 1x34" UW | HEADPHONES: SteelSeries Arctis Pro Wireless | MOUSE: Mad Catz R.A.T 8+ | KEYBOARD: Corsair Gaming K95 RGB PLATINUM
https://valid.x86.fr/bjhxgj

Permalänk
Inaktiv
Skrivet av spawnstah:

Jag jobbar mycket med såntvhör.
Det finns så många saker som kan vara flaskhalsen att det är oerhört svårt att ge några generella rekommendationer, eller skriva ett program som testar alla komponenterna.
Disk, där behöver man både titta på iops, latency, disk queue length och throughput vid olika typer av belastning, plus bus-hastighet.
Om vi tar ditt exempel med stora filer. Det är mycket troligt en sekvensiell läsning, och då kan en SSD normalt leverera ca 450MB/sec. Filstorlek delat på diskhastighet = teoretisk max hastighet. Låt oss säga det blir 180 sekunder. Om din inläsning tar mer än 180 sek, då KAN disken vara en flaskhals och man behöver kika på diskköer, latency etc. Tar det drygt 170-210sek plus/minus, så skulle jag kika på exempelvis CPU. Där har du varit på rätt spår med cores, singel trådade appar. Ibland får man även kika på nätverket och de anrop som sker där. Går appen mot tex en SQL databas så kan man ge sig fan på att det är dör problemet är. Utvecklare verkar generellt hopplös dåliga på att skriva effektiva sql queries som funkar när miljön växer. Osv osv.
Det tar tid, kunskap och mycket erfarenhet att hitta orsakerna. Vilket är varför företag är beredda att betala ganska bra för den hjälpen och kompetensen.

Tackar för råden, ja det finns nog inte bara något bättre program än det inbyggda i windows som jag hade hoppas på. Jag kan förstå att det finns mycket pengar att tjäna i att kunna optimera prestandan, i den bransch Automation där jag jobbar med är det mer kaos.
Tiotals olika aktörer kan vara inne på samma servrer, ingen tar någon hänsyn till att snåla på resurser för någon annan.

Jag gjorde en grymt optimerad driver för ett tag sedan, jag var så stolt, men nu ville de ha utökad funktionalitet och hade jag ej optimerat den så hårt så hade jag nu slippat göra om den från grunden.