lkml.org 
[lkml]   [2008]   [Feb]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Patch kernel: I have 8 Gbytes RAM, but why I can only allocate 2.8 Gbytes RAM for a single process?
2008/2/25, Ady Wicaksono <ady.wicaksono@gmail.com>:
> 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
>
> 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

1. It's a 32-bit processor Xeon with 8 GiB of RAM. OK?
2. The 32-bit userspace's process is always limited to <3.0 GiB ( < 0xC0000000 )
3. Enable PAE (64 GB option in the kernel) to address the 8 GiB of RAM
using PAE,
also you can have many processes of ~3 GiB per process.
I'm not sure if the PAE's three-level paging works efficient in linux.

;)


\
 
 \ /
  Last update: 2008-02-25 18:25    [W:0.066 / U:0.580 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site