Problems in kernel memory allocation
Hi,
I am having problems allocating more than 2.5 MB in the linux kernel. I am using Linux 2.4.7-10 RH 7.2 on i386.
Physical RAM: 64 MB
I tried two methods of allocation, one using kmalloc and other using kmem_cache_alloc. Both of them failed to allocate more than 2.5 MB. (GFP_KERNEL / GFP_ATOMIC operations) When I run 'free' I am able to see that the free physical memory is about 4MB and the free buffers/cache is about 52 MB.
The report is as follows:
total used free shared buffers cached
Mem: 62264 57928 4336 0 30152 17768
-/+ buffers/cache: 10008 52256
Swap: 192772 0 192772
I also found out that the /proc/meminfo had about 43MB of Inact_dirty . Is there any way to forcefully flush the dirty buffers ? Why is the allocation consistently failing in about 2.5 or 3MB ?
Only when the free physical is about 30MB and I start allocating am I able to successfully allocate about 5MB.
Is there a restriction as to how much memory you can allocate in the kernel ?
Sriram