8 GB ram i 32bitarsprogram? Bra eller anus?

Permalänk

8 GB ram i 32bitarsprogram? Bra eller anus?

Hej ärade datorentusiaster.

SweClockers nya artikelserie har naturligtvis gjort att det börjat kittla lite extra i mina datorbyggarfingrar och beslutet att shoppa loss på delar till ett prestandamonster är redan taget men det är fortfarande en sak som förbryllar mig något.

Min fråga gäller nämligen hur det fungerar med program som trots att de rullar på ett 64-bitars operativsystem fortfarande går i 32 bitar. Kastar jag pengarna i sjön om jag sätter in 8GB ram i lådan när jag vill ha dem i stort sett enbart till AfterEffects (som enligt Adobe själva bara är 32-bitars).

Att man måste ha 64bitars Vista för att utnyttja mer än 3 Gb i ram är jag med på, men gäller detsamma för programmen?

Tacksam för svar.
Filip

Permalänk

Ja, 32-bitarsprogram kan inte allokera mer än 4Gb minne (tror jag), det som däremot hjälper är att AfterEffects får den totala mängden allokerbart minne och då finns det ändå över till OS etc.

Visa signatur

/Mvh Stefan

Permalänk

Ska man ha kontinuerligt allokerat minne så kommer man nog inte över 4GB. Men om allokeringen sker över flera variabler så borde man kunna allokera mer. Min gissning är att varje enskild variabel maximalt kan allokera 4GB minne. Två variabler däremot skulle kunna komma upp i 8GB totalt allokerat minne.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Korkskruv
Ska man ha kontinuerligt allokerat minne så kommer man nog inte över 4GB. Men om allokeringen sker över flera variabler så borde man kunna allokera mer. Min gissning är att varje enskild variabel maximalt kan allokera 4GB minne. Två variabler däremot skulle kunna komma upp i 8GB totalt allokerat minne.

Detta låter otroligt, eftersom en pekare endast är 32bitar lång så kommer du bara kunna peka på 2^32 bytes vilket betyder att det är max 4GB för det programmet.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Tjofras
Detta låter otroligt, eftersom en pekare endast är 32bitar lång så kommer du bara kunna peka på 2^32 bytes vilket betyder att det är max 4GB för det programmet.

Egentligen så kan ett program endast allokera 2^31 bytes, dvs. 2 GB, iallafall i Windows då endast halva addressrymden är reserverad till usermode applikationer. Kör man med 3GB switchen så blir det ju 3 GB istället.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MagnusL
Egentligen så kan ett program endast allokera 2^31 bytes, dvs. 2 GB, iallafall i Windows då endast halva addressrymden är reserverad till usermode applikationer. Kör man med 3GB switchen så blir det ju 3 GB istället.

Även i 64 bits windows?

Permalänk
Citat:

Ursprungligen inskrivet av MagnusL
Egentligen så kan ett program endast allokera 2^31 bytes, dvs. 2 GB, iallafall i Windows då endast halva addressrymden är reserverad till usermode applikationer. Kör man med 3GB switchen så blir det ju 3 GB istället.

Där har vi det jag fiskade efter. Jag visste att 4Gb var för mycket, men kunde inte komma ihåg varför

Visa signatur

/Mvh Stefan

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Tjofras
Även i 64 bits windows?

i 64bitars windowsprogram så borde det väl programmet få tillgång till 2^63 bitars minnesrymd? vilket borde bli runt 8000TB om jag har fattat det rätt.

Permalänk
Medlem

> Två variabler däremot skulle kunna komma upp i 8GB totalt allokerat minne.

fel att tala om variabler här men ok... vill du ha mer är 2/3gb under 32-bit så måste flera processer samköra och samarbeta om minnerhantering. detta finns bara i specialskrivna program som för länge sedan bytt till Solaris eller annan 64-bit unix.

inte heller vista ger tillgång till allt minne, men betydligt mer än 2gb.

vissa bibliotek sätter gränserna lägre. 32-bit JDK kan bara hantera 2gb, även om linux klarar 3gb.

Permalänk
Citat:

Ursprungligen inskrivet av Korkskruv
Ska man ha kontinuerligt allokerat minne så kommer man nog inte över 4GB. Men om allokeringen sker över flera variabler så borde man kunna allokera mer. Min gissning är att varje enskild variabel maximalt kan allokera 4GB minne. Två variabler däremot skulle kunna komma upp i 8GB totalt allokerat minne.

Jag är inte helt med på noterna vad gäller fackspråket här så tillåt mig ställa dumma följdfrågor (med risk för att göra bort mig). Vad innebär det att ett program använder en/flera variabler? Är det månne olika processorkärnor som arbetar med varsin del av RAM-minnet?

Så sammanfattningsvis så kan man således säga att det inte är helt bortkastade pengar med 8Gb eftersom minst 4 av dem kan ängnas helt och hållet åt AfterEfficts?

Tack för hjälpen ni som svarat.

Permalänk
Medlem

Man kan bara allokera 2(3) GB minne per virtuellminnes enhet i windows XP. en virtuellminnesenhet ~= en process.
Sen vet jag inte hur det är med windows i sig. Om det kan allokera resterande minne.
Dvs. Kan man köra After Effects i en process som tar 3GB och sen köra PhotoShop i en process som tar 3GB och Premiere i en trdje som tar 2GB och på så sätt untyja allt minne?
Eller sätter XP stopp vid 3GB totalt minne?

Visa signatur

Flest prylar när man dör vinner

Permalänk
Citat:

Ursprungligen inskrivet av Tjofras
Detta låter otroligt, eftersom en pekare endast är 32bitar lång så kommer du bara kunna peka på 2^32 bytes vilket betyder att det är max 4GB för det programmet.

Du har helt rätt förstås. Det var jag som tänkte helt fel. Jag resonerade som så att var pekare pekade mot olika minnen men så är det ju inte. Klantigt av mig.

Citat:

Ursprungligen inskrivet av mahogny
> Två variabler däremot skulle kunna komma upp i 8GB totalt allokerat minne.

fel att tala om variabler här men ok... vill du ha mer är 2/3gb under 32-bit så måste flera processer samköra och samarbeta om minnerhantering. detta finns bara i specialskrivna program som för länge sedan bytt till Solaris eller annan 64-bit unix.

inte heller vista ger tillgång till allt minne, men betydligt mer än 2gb.

vissa bibliotek sätter gränserna lägre. 32-bit JDK kan bara hantera 2gb, även om linux klarar 3gb.

Det var jag som tänkte helt fel Du har helt rätt

Citat:

Ursprungligen inskrivet av SupaPowah
Jag är inte helt med på noterna vad gäller fackspråket här så tillåt mig ställa dumma följdfrågor (med risk för att göra bort mig). Vad innebär det att ett program använder en/flera variabler? Är det månne olika processorkärnor som arbetar med varsin del av RAM-minnet?

Så sammanfattningsvis så kan man således säga att det inte är helt bortkastade pengar med 8Gb eftersom minst 4 av dem kan ängnas helt och hållet åt AfterEfficts?

Tack för hjälpen ni som svarat.

Glöm det jag skrev tidigare, tänkte helt fel.

Som flera stycken nämnt ovan så kan ett program skrivet för 32 bitar endast allokera 2(3) GB minne. Om ett program startar en ny process så kan de tillsammans möjligtvis använda mer minne. Om AfterEffects använder en separat process för speciella beräkningar vet jag inte.

Har du mycket minne så kommer alla program ligga kvar i minnet. Har du för lite minne så växlas sällan använt minne ut på hårddisken och datorn kan upplevas som segare.

Din sammanfattning är korrekt bortsett från att gränsen verkar vara 2(3) GB minne per program.

Jag skulle mist rekommendera 4 GB minne för en behaglig upplevelse. Nu är dessutom minnena så pass billiga så det är nästan dumt att skaffa mindre än 8 GB.

Citat:

Ursprungligen inskrivet av stenmark
Man kan bara allokera 2(3) GB minne per virtuellminnes enhet i windows XP. en virtuellminnesenhet ~= en process.
Sen vet jag inte hur det är med windows i sig. Om det kan allokera resterande minne.
Dvs. Kan man köra After Effects i en process som tar 3GB och sen köra PhotoShop i en process som tar 3GB och Premiere i en trdje som tar 2GB och på så sätt untyja allt minne?
Eller sätter XP stopp vid 3GB totalt minne?

Med 64 bitar så borde det fungera som du skriver. I 32 bitar hade det också fungerat, men då hade den växlat ut de andra programmen till hårddisken.

Hade jag haft mer än 4 GB minne så hade jag kunnat testa och se vad som händer. Som det är nu så tar minnet slut innan jag når fram till 3 GB.

Permalänk

Tack så mycket för svaren. Har forskat vidare lite och om någon är intresserad så har just AfterEffects något som kallas "multiprocessing" vilket innebär att det startar upp många simultana processer och möjliggör tydligen då också mer RAM-användning. Nu blir det 8 Gb i nya lådan! Yeay!!

http://forums.creativecow.net/readpost/2/941291

Permalänk
Medlem

man sover faktiskt skitbra , med 8Gb i burken.

Visa signatur

CPU: Intel(R) Core(TM) i7 CPU X 980 @ 3.33GHz

Permalänk
Hedersmedlem

Ni har alla fel på en punkt. En 32-bitars process med LARGEADDRESSAWARE-flaggan, den som gör att programmet kan utnyttja 3 GiB minne i 32-bit XP och Vista om /3GB boot.ini växeln (och motsvarande i vistas nya boothanterare), kan i 64-bitars windows utnyttja hela 4 GiB minne.
Så i sak så tjänar du en del att köra 64-bitars windows även för 32-bitars program om de använder sig av det här.
När program körs utan den flaggan (ligger i .exe-filen, kan ändras med vissa verktyg) så får de 2 GiB privat virtuellt minne oavsett windows 32-bit eller 64-bit.

Citat:

Ursprungligen inskrivet av SupaPowah
Tack så mycket för svaren. Har forskat vidare lite och om någon är intresserad så har just AfterEffects något som kallas "multiprocessing" vilket innebär att det startar upp många simultana processer och möjliggör tydligen då också mer RAM-användning. Nu blir det 8 Gb i nya lådan! Yeay!!

http://forums.creativecow.net/readpost/2/941291

Jag vet inte hur exakt det implementeras men man behöver generellt inte flera processorer för det. Varje enskild process får sitt virtuella minne som jag beskrivet ovan, är programmet skrivet på så vis att det startar flera separata och de samverkar på något sätt så kan man ta sig runt den här gränsen men det blir bökigare för programmeraren.

Den där länken du gav ger mig lite funderingar. Han menar att olika processer ska få olika saker i RAM-cachen. Hade det varit samma i alla så hade man inte behövt separata processor (utan använt flera arbetstrådar inom samma process) för att utnyttja fler processorer (kärnor).

Och skulle du köra med 2 st minneshungriga 32-bitarsprogram så är det definitivt bättre med 8 GiB i maskinen och 64-bitars OS. Kom ihåg att det är per process som virtuella minnet delas upp, så dessto mer RAM dessto mindre swappande till hårddisken.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG