Re: Patch kernel: I have 8 Gbytes RAM, but why I can only allocate 2.8 Gbytes RAM for a single process?

From: Masoud Sharbiani \"ÙØØÙØ ØØØÛØÙÛ\"
Date: Mon Feb 25 2008 - 15:56:20 EST


On 2/24/08, Ady Wicaksono <ady.wicaksono@xxxxxxxxx> wrote:
> I have 8 Gbytes RAM, but why I can allocate 2.8 Gbytes RAM for a single process?
> How to patch kernel so I have more than 2.8 Gbytes limitation?
>
> Kernel:
> ---------------------------
> Linux xxx.com 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33
> MSK 2007 i686 i686 i386 GNU/Linux

You really need to use 64 bit kernel AND 64 bit userspace to use more
than 3gigs per process.

Masoud

> Mem:
> ---------------------------
> # cat /proc/meminfo
> MemTotal: 8296484 kB
> MemFree: 50416 kB
> Buffers: 64412 kB
> Cached: 4927328 kB
> SwapCached: 0 kB
> Active: 6710828 kB
> Inactive: 1065384 kB
> HighTotal: 4980736 kB
> HighFree: 1024 kB
> LowTotal: 3315748 kB
> LowFree: 49392 kB
> SwapTotal: 10256376 kB
> SwapFree: 10255732 kB
> Dirty: 64 kB
> Writeback: 0 kB
> Mapped: 3054960 kB
> Slab: 393224 kB
> CommitLimit: 14404616 kB
> Committed_AS: 6318152 kB
> PageTables: 34892 kB
> VmallocTotal: 303096 kB
> VmallocUsed: 22360 kB
> VmallocChunk: 280496 kB
>
>
> CPU (8 processor id from 0-7), one of them is:
> ---------------------------
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 15
> model : 6
> model name : Intel(R) Xeon(TM) CPU 3.00GHz
> stepping : 4
> cpu MHz : 2993.054
> cache size : 2048 KB
> physical id : 0
> siblings : 4
> core id : 0
> cpu cores : 2
> fdiv_bug : no
> hlt_bug : no
> f00f_bug : no
> coma_bug : no
> fpu : yes
> fpu_exception : yes
> cpuid level : 6
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
> mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx
> lm constant_tsc pni monitor ds_cpl est cid xtpr
> bogomips : 5989.55
>
> App to test memory limit:
> ---------------------------
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(){
> size_t siz = 100 * 1024 * 1024 ;
> size_t idx = 1 ;
> void *ptr;
>
> for (;;){
> ptr = malloc ( siz * idx );
> if(!ptr)
> break ;
> free(ptr);
> idx++;
> }
> printf ("Max malloc %d * 100 MB \n", idx - 1 );
> return (0);
> }
>
> App result: Max malloc 28 * 100 MB ==> 2.8 Gbytes
>
>
> --
> Regards,
>
> Ady Wicaksono
> Email:
> ady.wicaksono at gmail.com
> http://adywicaksono.wordpress.com/
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/