[linux - gcc - C] Zoveel mogelijk geheugen alloceren

Pagina: 1
Acties:

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

Topicstarter
De topic titel zecht precies wat ik wil - > Zoveel mogelijk geheugen alloceren

Of ik dat statisch doe, of met malloc maakt niets uit, als ik maar zoveel mogelijk krijg.

In mijn systeem zit 1 GB memory, ik heb ook nog 1 GB swap ter beschikking. Met de declararie van een statisch array of met malloc kan ik echter alleen maar tot maximaal 1 GB alloceren (ook als ik meerdere array's gebruik). schijnbaar is het zo dat je alleen maar het maximale beschikbaare fysieke geheugen kunt gebruiken.

Ik heb dus meer nodig >:) . Nu heb ik gehoort dat dit gewoon een soort beveiliging is en dat je die zou kunnen uitzettem, maar ik heb tot nu toe niet gevonden hoe dat zou kunnen...

Ik hoop dat jullie het weten.

Do diamonds shine on the dark side of the moon :?


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

zecht? ;) Je post _stikt_ van de spelfouten :P

In ieder geval is het niet zo dat je slechts het maximale beschikbare fysieke geheugen kunt gebruiken. Dan zou ik namelijk flink fucked zijn ;) Waarschijnlijk heb je ergens anders een limiet zitten, ingesteld op 1GB.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ik memory map een file (~3GB) met mmap() (of MapViewOfFile() voor win32). Als ik bij windows kijk gaat dan m'n vrije geheugen ongeveer naar nul, maar is er nog iets van ruimte voor OS dingen enzo. Misschien is dat een optie? Lekker makkelijk, laat het OS maar kijken hoeveel het kan missen. Meer krijg je toch niet lijkt me.

(overigens, als je meer dan 1GB geheugen nodig hebt om te draaien, zou ik sowieso eens naar out-of-core oplossingen gaan kijken. Misschien kan je het wel af met een paar MB en een predictive cache)

[ Voor 25% gewijzigd door Zoijar op 08-03-2004 13:57 ]


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

Topicstarter
Thanks, ik zal mmap eens proberen!

En CyBeR, I know, ik :r @ spelling :+

Do diamonds shine on the dark side of the moon :?


  • rollebol
  • Registratie: Mei 2000
  • Laatst online: 22-08-2025
Meerdere forks? Misschien zit er een per-proces limiet, maar als je een paar child processes aanmaakt kan je misschien wel meer alloceren.

Ik zeg maar wat hoor...

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

Topicstarter
rollebol schreef op 08 maart 2004 @ 14:04:
Meerdere forks? Misschien zit er een per-proces limiet, maar als je een paar child processes aanmaakt kan je misschien wel meer alloceren.

Ik zeg maar wat hoor...
Dat zou mischien wel kunnen, maar ik heb alle memory voor een process nodig ;)

Do diamonds shine on the dark side of the moon :?


  • rollebol
  • Registratie: Mei 2000
  • Laatst online: 22-08-2025
Ik begin langzaam nieuwsgierig te worden...

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

deepspace schreef op 08 maart 2004 @ 13:46:
Ik heb dus meer nodig >:) . Nu heb ik gehoort dat dit gewoon een soort beveiliging is en dat je die zou kunnen uitzettem, maar ik heb tot nu toe niet gevonden hoe dat zou kunnen...

Ik hoop dat jullie het weten.
echo 1 > /proc/sys/vm/overcommit_memory

overigens alloceert de kernel pas echt fysiek RAM als je werkelijk wat met dat geheugen doet (dus : volschrijven met een waarde).

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

Topicstarter
rollebol schreef op 08 maart 2004 @ 14:11:
Ik begin langzaam nieuwsgierig te worden...
Dan heb ik de (gedeeltelijke) oplossing. mmap werkt idd :D. Helaas kun je maar tot 2 G gaan omdat je anders krijgt: "File size limit exceeded" ;). Blijkbaar kun je ook niet meer dan je fysieke + swap alloceren. Bij 1.8 G houdt het zo ongeveer op :P .

Het vreemde is wel dat ik mijn disk (4 disk RAID 5) amper hoor/zie ratellen... Top geeft wel netjes aan dat ik idd bijna 2 G geheugen gebruik!

Ik heb helemaal blij, thanks voor de snelle inbreng _/-\o_

Edit:
BTW, igmars oplossing werkt idd ook, maar is niet zo elegant ;) Gelukkig gebruik ik ook echt al het memory :P

[ Voor 12% gewijzigd door voodooless op 08-03-2004 14:25 ]

Do diamonds shine on the dark side of the moon :?


  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

deepspace schreef op 08 maart 2004 @ 14:21:
Dan heb ik de (gedeeltelijke) oplossing. mmap werkt idd :D. Helaas kun je maar tot 2 G gaan omdat je anders krijgt: "File size limit exceeded" ;).
Compilen met 64 bit offsets.
Blijkbaar kun je ook niet meer dan je fysieke + swap alloceren. Bij 1.8 G houdt het zo ongeveer op :P .

Het vreemde is wel dat ik mijn disk (4 disk RAID 5) amper hoor/zie ratellen... Top geeft wel netjes aan dat ik idd bijna 2 G geheugen gebruik!
Ja, 2 GB virtual memory. Da's dus geen fysiek RAM. Met free en ps kun je zien wat je proces daadwerkelijk gebruikt.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

Topicstarter
igmar schreef op 08 maart 2004 @ 14:25:
[...]


Compilen met 64 bit offsets.


[...]


Ja, 2 GB virtual memory. Da's dus geen fysiek RAM. Met free en ps kun je zien wat je proces daadwerkelijk gebruikt.
Ja logisch, ik heb maar 1 G ;) Maar het maakt niet uit... gaat zich erom dat ik daadwerkelijk zoveel in een keer kan gebruiken ;)

Hoe compileer ik met 64 bit offset?

Do diamonds shine on the dark side of the moon :?


  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

deepspace schreef op 08 maart 2004 @ 14:28:
Ja logisch, ik heb maar 1 G ;) Maar het maakt niet uit... gaat zich erom dat ik daadwerkelijk zoveel in een keer kan gebruiken ;)
Tot en met 3 GB om een ia32 machine.
Hoe compileer ik met 64 bit offset?
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE

Alleen de eerste zou voldoende moeten wezen.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

Topicstarter
Ah, dat had ik ondertussen ook al gevonden... helaas segfault dat :( Nouja, 2G is op dit moment voldoende :)

Do diamonds shine on the dark side of the moon :?


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 24-11-2025

PommeFritz

...geen friet

Het feit dat als je 2 GB gaat mmappen, dat ie dan nauwelijks ratelt, is omdat er ook in feite bijna niks gebeurt ;)
Pas op het moment dat je het geheugen gaat benaderen zal het OS page faults gaan genereren en wordt het 'ontbrekende' geheugen ingepaged. Dus pas op dat moment zal je harddisk (swap) gaan pruttelen....

FireFox - neem het web in eigen hand


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 17:25

voodooless

Sound is no voodoo!

Topicstarter
PommeFritz schreef op 08 maart 2004 @ 18:06:
Het feit dat als je 2 GB gaat mmappen, dat ie dan nauwelijks ratelt, is omdat er ook in feite bijna niks gebeurt ;)
Pas op het moment dat je het geheugen gaat benaderen zal het OS page faults gaan genereren en wordt het 'ontbrekende' geheugen ingepaged. Dus pas op dat moment zal je harddisk (swap) gaan pruttelen....
Duh, Ik doe ook nog echt wat ;) Ik loop het volledig door, verander iedere waarde, en wel een keer of 4 :P

Do diamonds shine on the dark side of the moon :?

Pagina: 1