Program som blir långsammare ju längre de körs?

Permalänk
Avstängd

Program som blir långsammare ju längre de körs?

Jag försöker förstå mig på utan att riktigt hoppas på någon lösning om ett program som körs i Windows 10 (har även provats i Windows 7, Vista och XP). Programmet är Sound Forge som tidigare ägdes av Sony Vegas innan det förvärvades/såldes till Magix.

Programmet har ett fascinerande problem när dess funktion Tools -> Batch Converter körs vilket har varit kvar sedan minst version 6.0 och finns fortfarande kvar idag i den senaste versionen (16 eller vad det är).

Vad som händer är följande tills att programmet blir så långsamt och hänger sig/kraschar:
1. Jag lägger till 4000 wav filer som fem effekter skall appliceras för alla separata wav-filer.

2. Jag väljer och justerar de effekter som skall appliceras på alla dessa tillagda wav-filer.

3. Jag väljer att nuvarande wav-filer skall skrivas över i samma mapp.

4. Jag startar Batch convertern.

5. Den tuffar på och efter cirka 1300 filer så börjar datorn bli oerhört långsam med datormusen i eftersläpning på datorskärmen. Trots detta visar aktivitetshanteraren endast mellan 12-20 % CPU användning (Ryzen 5900x) och grafikkortet 10-20% användning (RTX3090).

Alltså, programmet blir långsammare och gör hela datorn långsammare trots att minnes- och CPU-användningen förblir lika mycket. Vad är det då som verkar "flödas över"? Jag ser oxå att efter cirka 1000 filer så börjar programmet bli slöare med varje bearbetad ljudfil. Allt görs på en M.2- NvME-hårddisk

När jag kollar i felmeddelande vissa gånger det kraschat så rapporterar programmet att felet skall ha orsakats i Kernel.dll-fil i själva Windows och inte i programmet i sig.

En intressant detalj är att långsammare datorer (långsammare CPU) hänger sig vid tidigare antal filer trots att samma batch körs (samma och lika många wav-filer). Detta får mig att fundera på om det är någon slags "overflow"-bug som orsakas trots att man inte ser någon signifikant ökning i minnes- eller CPU-användning?

Jag är bara nyfiken på hur ett program helt plötsligt kan göra en dator segare utan att CPU-användningen når 100% för att sedan krascha. Vad är det för mystisk programmering med hur programmet kommunicerar med Windows som får det att bli så här?

Visa signatur

"Företagsboendeförmedlare" | Min Überkill Dator: Processor: Intel Pentium P5 66 Mhz OC | Moderkort: ASRock P4I65G | Minnen: 2st Samsung 128MB PC133 | Grafikkort: Canopus GeForce 256 DDR | Lagring: IBM 350 4,4 MB | Operativsystem: DOS/360 | Chassi: Mercury Full-Tower ATX Chassis |

Permalänk
Avstängd

Bara för att klargöra, vad är toppvärdet för minnesanvändning?

Permalänk
Avstängd
Skrivet av Meathim:

Bara för att klargöra, vad är toppvärdet för minnesanvändning?

Det hamnar lätt under 1 GB. Mellan 500-700 MB. Jag har 32 GB-ram minne (ingen cache-fil). Minnesanvändningen ändras inte heller medan programmets slöhet ökar dock i takt med att fler filer har bearbetats. Därför jag ser det lite som ett mysterium eftersom ingenting tycks ökas förutom den uppenbara slöheten i burken.

Och detta har verifierats på andra datorer med andra processorer där det verkar vara bara mellan 300-400 filer innan programmet hänger sig. Alltså, objektivt långsammare datorer så hänger sig programmet tidigare trots att det inte går att se någon förändring i minnes- eller CPU-användningen som leder upp till detta.

Visa signatur

"Företagsboendeförmedlare" | Min Überkill Dator: Processor: Intel Pentium P5 66 Mhz OC | Moderkort: ASRock P4I65G | Minnen: 2st Samsung 128MB PC133 | Grafikkort: Canopus GeForce 256 DDR | Lagring: IBM 350 4,4 MB | Operativsystem: DOS/360 | Chassi: Mercury Full-Tower ATX Chassis |

Permalänk
Skrivet av AplAy:

Jag försöker förstå mig på utan att riktigt hoppas på någon lösning om ett program som körs i Windows 10 (har även provats i Windows 7, Vista och XP). Programmet är Sound Forge som tidigare ägdes av Sony Vegas innan det förvärvades/såldes till Magix.

Programmet har ett fascinerande problem när dess funktion Tools -> Batch Converter körs vilket har varit kvar sedan minst version 6.0 och finns fortfarande kvar idag i den senaste versionen (16 eller vad det är).

Vad som händer är följande tills att programmet blir så långsamt och hänger sig/kraschar:
1. Jag lägger till 4000 wav filer som fem effekter skall appliceras för alla separata wav-filer.

2. Jag väljer och justerar de effekter som skall appliceras på alla dessa tillagda wav-filer.

3. Jag väljer att nuvarande wav-filer skall skrivas över i samma mapp.

4. Jag startar Batch convertern.

5. Den tuffar på och efter cirka 1300 filer så börjar datorn bli oerhört långsam med datormusen i eftersläpning på datorskärmen. Trots detta visar aktivitetshanteraren endast mellan 12-20 % CPU användning (Ryzen 5900x) och grafikkortet 10-20% användning (RTX3090).

Alltså, programmet blir långsammare och gör hela datorn långsammare trots att minnes- och CPU-användningen förblir lika mycket. Vad är det då som verkar "flödas över"? Jag ser oxå att efter cirka 1000 filer så börjar programmet bli slöare med varje bearbetad ljudfil. Allt görs på en M.2- NvME-hårddisk

När jag kollar i felmeddelande vissa gånger det kraschat så rapporterar programmet att felet skall ha orsakats i Kernel.dll-fil i själva Windows och inte i programmet i sig.

En intressant detalj är att långsammare datorer (långsammare CPU) hänger sig vid tidigare antal filer trots att samma batch körs (samma och lika många wav-filer). Detta får mig att fundera på om det är någon slags "overflow"-bug som orsakas trots att man inte ser någon signifikant ökning i minnes- eller CPU-användning?

Jag är bara nyfiken på hur ett program helt plötsligt kan göra en dator segare utan att CPU-användningen når 100% för att sedan krascha. Vad är det för mystisk programmering med hur programmet kommunicerar med Windows som får det att bli så här?

Spekulerar lite här.
Men några exempel på vad som skulle kunna påverka.

Det är en 32-bitars applikation. Maxar minnet och blir då långsamt.
Antal windows handles. När/om man slår i taket kan man få ett antal konstiga fel.
Dåligt implementerad intern algoritm som tar längre tid för varje sak man processar.

Permalänk
Avstängd
Skrivet av zoomster2:

Spekulerar lite här.
Men några exempel på vad som skulle kunna påverka.

Det är en 32-bitars applikation. Maxar minnet och blir då långsamt.
Antal windows handles. När/om man slår i taket kan man få ett antal konstiga fel.
Dåligt implementerad intern algoritm som tar längre tid för varje sak man processar.

Aha, ja något sådant kan det vara. Jag skall köra ett test igen med liknande parametrar (samma ljudfiler, fem applicerade effekter) och ta skärmdump på Aktivitetshanteraren när olika antal filer bearbetats för att se om något tycks ha förändrats mellan 0 filer -> 500 filer, 750 filer, 1000 filer och när det kraschar runt 1300.

Programmet lyckades som sagt var kötta igenom de 4000 filerna när jag bara hade 1 eller 2 ljudeffekter applicerade. När jag googlade kring problemet så spekulerade någon om att "effekter som scannar i ljudfiler tycks kunna öka risken för krascher" (t.ex. parametriska EQ-effekter som måste söka sig till olika frekvenser i varje ljudfil som den bearbetar).

En algoritm som tar längre tid för varje sak som bearbetas låter som en dåligt implementerad "rekursiv kodrutin" eller vad man ska säga?

Visa signatur

"Företagsboendeförmedlare" | Min Überkill Dator: Processor: Intel Pentium P5 66 Mhz OC | Moderkort: ASRock P4I65G | Minnen: 2st Samsung 128MB PC133 | Grafikkort: Canopus GeForce 256 DDR | Lagring: IBM 350 4,4 MB | Operativsystem: DOS/360 | Chassi: Mercury Full-Tower ATX Chassis |

Permalänk
Vila i frid

"Inbyggda" minnesläckor är rätt vanliga när .NET används. När swapspace tar slut kraschar det - oberoende av hur mycket minne som är installerat. Att slöa cpuer torskar tidigare kan bero på att "dispose" tar längre tid på sig att utföras - när det rör sig om flertrådade program - men exakt orsak vet bara den som kan analysera minnesläckorna i detalj.

Ah, 32-bitars. .NET hanterar normalt ca 1.7 GB minne. Kan patchas att hantera ca 3.7 GB.
https://ntcore.com/?page_id=371

<edit>
Vill du inte använda okända tredjepartprogram finns det i VS Community Version, kör: editbin.exe /largeaddressaware mitt-32bit-program.exe
https://docs.microsoft.com/en-us/cpp/build/reference/editbin-...
</edit>

Permalänk
Avstängd
Skrivet av AplAy:

Det hamnar lätt under 1 GB. Mellan 500-700 MB. Jag har 32 GB-ram minne (ingen cache-fil). Minnesanvändningen ändras inte heller medan programmets slöhet ökar dock i takt med att fler filer har bearbetats. Därför jag ser det lite som ett mysterium eftersom ingenting tycks ökas förutom den uppenbara slöheten i burken.

Och detta har verifierats på andra datorer med andra processorer där det verkar vara bara mellan 300-400 filer innan programmet hänger sig. Alltså, objektivt långsammare datorer så hänger sig programmet tidigare trots att det inte går att se någon förändring i minnes- eller CPU-användningen som leder upp till detta.

Är <1GB RAM toppvärdet (under Information -> Toppvärde arbetsminne) eller det du ser under prestanda? Och jag antar att du menar att du inte har en växlingsfil? Är det samma problem om du slår på den? Jag gissar att du redan testat det, men det kan vara bra att veta...

Permalänk

Om du är riktigt nyfiken, så prova några verktyg från https://docs.microsoft.com/en-us/sysinternals/ så att du kan se mer i detalj vad som händer.

Permalänk
Avstängd
Skrivet av zoomster2:

Om du är riktigt nyfiken, så prova några verktyg från https://docs.microsoft.com/en-us/sysinternals/ så att du kan se mer i detalj vad som händer.

Vilka av verktygen rekommenderar Du då?

Visa signatur

"Företagsboendeförmedlare" | Min Überkill Dator: Processor: Intel Pentium P5 66 Mhz OC | Moderkort: ASRock P4I65G | Minnen: 2st Samsung 128MB PC133 | Grafikkort: Canopus GeForce 256 DDR | Lagring: IBM 350 4,4 MB | Operativsystem: DOS/360 | Chassi: Mercury Full-Tower ATX Chassis |

Permalänk
Medlem
Skrivet av AplAy:

Vilka av verktygen rekommenderar Du då?

Process explorer tror jag.

Visa signatur

5700x3D | RTX 3080 | 2 TB M.2 | 32 GB RAM

Permalänk
Avstängd
Skrivet av zoomster2:

Om du är riktigt nyfiken, så prova några verktyg från https://docs.microsoft.com/en-us/sysinternals/ så att du kan se mer i detalj vad som händer.

Tänkte procmon och procexp, men jag vet inte riktigt vad det går att lära sig från dem (annat än vad programmet gör förstås). RAMmap och VMmap kanske skulle vara intressanta också.

Permalänk
Medlem

Starta Task Manager och gå till Performance-tabben. Sedan kollar du om något av CPU, Memory eller Disk är maxat. Är det CPU eller Memory är det rätt uppenbart vad problemet är, men om det är Disk kan du klicka på Open Resource Monitor för att få litet mer info.

Om ingenting är maxat i Task Manager är det antagligen någon annan resursläcka (som att programmet öppnar filer som det inte stänger, eller minnesfragmentering).

Exakt vad problemet är lär man inte få reda på utan att ansluta en debugger till programmet och se vad som händer.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem
Skrivet av AplAy:

Det hamnar lätt under 1 GB. Mellan 500-700 MB. Jag har 32 GB-ram minne (ingen cache-fil). Minnesanvändningen ändras inte heller medan programmets slöhet ökar dock i takt med att fler filer har bearbetats. Därför jag ser det lite som ett mysterium eftersom ingenting tycks ökas förutom den uppenbara slöheten i burken.

Och detta har verifierats på andra datorer med andra processorer där det verkar vara bara mellan 300-400 filer innan programmet hänger sig. Alltså, objektivt långsammare datorer så hänger sig programmet tidigare trots att det inte går att se någon förändring i minnes- eller CPU-användningen som leder upp till detta.

Jag tror enklaste är att helt enkelt aldrig köra batchar större än ca 1000 filer sen stänga av programmet och starta det igen. Dela upp helt enkelt. Mindre besvär än att felsöka nån obskyr minnesläcka som alltid funnits i programmet

Visst lossnar prestandan om du stänger av programmet?
Eller behöver du starta om datorn?

PS: jag har förstått att det rekommenderas att windows använder en swap-disk även om du har mer än nog av RAM. Den behöver såklart inte vara stor om du har 32 gig ram, men sätt iaf 4 GB. (om du har en snabb NVME disk så sätt 8 kanske?)

Visa signatur

5700x3D | RTX 3080 | 2 TB M.2 | 32 GB RAM

Permalänk
Vila i frid

Alltså lixom, det är ett 32-bitars program och då kan det inte hantera mer än 4 GB minne - och det inkluderar pagefile. Du kan ha 64 GB internminne och 4 TB pagefile men programmet kan iaf inte använda mer än 4 GB. Enda sättet att komma runt problemet är att köpa ett 64-bitars program eller som nämnts tidigare - splitta jobben.

Permalänk
Avstängd

Jag måste bekräfta: Programmet jag kör är 64-bitars och INTE 32-bitars. Samma problem kvarstår dock.

Filerna som behandlas av Batch Convertern går uppemot 14 GB i wav-filer sammanlagt.

EDIT: Är detta "legit" version av .NET 5.0 avtäckt av Microsoft? https://devblogs.microsoft.com/dotnet/announcing-net-5-0/ (det är dock specifikt .NET och verkar inte ha med .NET Framework att göra?)

Visa signatur

"Företagsboendeförmedlare" | Min Überkill Dator: Processor: Intel Pentium P5 66 Mhz OC | Moderkort: ASRock P4I65G | Minnen: 2st Samsung 128MB PC133 | Grafikkort: Canopus GeForce 256 DDR | Lagring: IBM 350 4,4 MB | Operativsystem: DOS/360 | Chassi: Mercury Full-Tower ATX Chassis |

Permalänk
Medlem
Skrivet av AplAy:

EDIT: Är detta "legit" version av .NET 5.0 avtäckt av Microsoft? https://devblogs.microsoft.com/dotnet/announcing-net-5-0/ (det är dock specifikt .NET och verkar inte ha med .NET Framework att göra?)

.NET Framework har ersatts av .NET Core. Men programmet använder vad det är kompilerat för, så att en ny version av .NET släpps påverkar inget i ditt fall förrän utvecklaren av programmet släpper en ny version.

Permalänk
Vila i frid

För minnesläckor i gamla legacy program hjälper bara mer internminne - eller hitta ett annat bättre program. Det är minnesswap mot pagefile som gör att även musen hackar.