Forums Neueste Beiträge
 

RAM Verbrauch eines 32 Bit Prozesses

09/12/2012 - 14:08 von Martin Oberzalek | Report spam
Hi,

ich habe auf einem Server unlàngst folgendes gesehen:

Ein 32 Bit Prozess hat 4.8 GB RAM zumindest laut der Angabe von TOP
verbraucht. Ich denke es war nur die virtuelle Spalt und nicht RES.

Mir ist schon klar, dass ein 32 Prozess niemals mehr als 4 GB Ram
verbrauchen kann, aber wie ist dann die Angabe von TOP möglich?

ich kurz mal einen kleines Testprogramm geschrieben:

#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdio.h>

void testalloc()
{
void *pmem = malloc( 1024 * 1024 * 1024 );

printf( "%p pmem %s", pmem, strerror(errno));
}

int main()
{
testalloc();
testalloc();
testalloc();
testalloc();
testalloc();
sleep(10);

return 0;
}


g++ -o testalloc testalloc.cc -Wall -m32

da ist dann nach 3 GB schluss:

martin@Phenom:~/programs/tryout> ./testalloc
0xb745c008 pmem Success
0x7745b008 pmem Success
0x3745a008 pmem Success
(nil) pmem Cannot allocate memory
(nil) pmem Cannot allocate memory


martin@Phenom:~> ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
1619 pts/1 Ss 0:00 0 614 13825 3368 0.0 /bin/bash
1656 pts/1 S 0:04 7 2585 99426 34144 0.2 xemacs testalloc.cc
2043 pts/2 Ss 0:00 0 614 13693 3204 0.0 /bin/bash
2549 pts/1 S+ 0:00 0 2 3149773 964 0.0 ./testalloc
2550 pts/2 R+ 0:00 0 115 4720 880 0.0 ps v


Tasks: 234 total, 1 running, 233 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.8%us, 0.6%sy, 0.0%ni, 97.6%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Mem: 16078M total, 10462M used, 5616M free, 2194M buffers
Swap: 30717M total, 0M used, 30717M free, 6541M cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

2575 martin 20 0 3075m 960 840 S 0 0.0 0:00.00 testalloc


Vorschlàge Erklàrungen?

MfG, Martin
 

Lesen sie die antworten

#1 Florian Weimer
09/12/2012 - 14:31 | Warnen spam
* Martin Oberzalek:

ich habe auf einem Server unlàngst folgendes gesehen:

Ein 32 Bit Prozess hat 4.8 GB RAM zumindest laut der Angabe von TOP
verbraucht. Ich denke es war nur die virtuelle Spalt und nicht RES.

Mir ist schon klar, dass ein 32 Prozess niemals mehr als 4 GB Ram
verbrauchen kann, aber wie ist dann die Angabe von TOP möglich?



Es war kein 32-Bit-Prozeß.

Ähnliche fragen