1833431 Members
3302 Online
110052 Solutions
New Discussion

mmap: Not enough space

 
SOLVED
Go to solution
Robin C. Querol
Occasional Advisor

mmap: Not enough space


We have a program that maps a file into memory. The command uses mmap and is used like this:
__output_rec = (Mptr) mmap ( 0, ( __max_file_recs + SAFE_BUFFER) * sizeof ( Mnode ), PROT_READ | PROT_WRITE, MAP_PRIVATE, __output_fd, 0 );

The error is:Nov 27 09:50:38 smscp2 MVAS1[11380]: sms_merge_ord.c : create_new_file () : Failed to map file to memory.. 12 : Not enough space
Nov 27 09:50:38 smscp2 MVAS1[11380]: sms_merge_ord.c : main () : Failed to create new file.


We have 8GB physical memory and have around 80% utilization. Based on our calculations the file should only be around 100MB. Do we have a kernel configurable parameter for this?

3 REPLIES 3
harry d brown jr
Honored Contributor
Solution

Re: mmap: Not enough space


Check your swap space, and post your kernel parameters. Look at dbc_min and max also.

What OS ??

live free or die
harry
Live Free or Die
Michael Tully
Honored Contributor

Re: mmap: Not enough space

I agree with Harry. Look at your dbc_min_pct and dbc_max_pct kernel parameters. You will find that they are set to the default which is 50%. This is just about useless. The ideal value should be somewhere in the vicinity of 300-500Mb no more. So in your case, dbc_max_pct should be set to 5, dbc_min_pct to 2.

Make sure you have enough swap space.
Anyone for a Mutiny ?
T G Manikandan
Honored Contributor

Re: mmap: Not enough space

The error is due to
1.Amount of memory and swap available.
If you have 80% used.
What is the value of dbc_max_pct on your kernel.
If it is 50% of memory bring it down to somewhere around 8.
The buffer cache half the memory is too high.

check the individual process usage using
UNIX95= ps -e -o ruser,pid,vsz=Kbytes

to check the process usage by each process.
How is the usage of the swap on the machine
Just do a
swapinfo -ta

you can use glance to monitor the process which is throwing out the error.

2.You have to increase your kernel parameters like
These paramters define the upper limit for a process.
They have default values like 8MB.

maxdsiz
maxdiz_64
maxssiz
maxssiz_64
maxtsiz
maxtsiz_64
ALso make sure that you check these values.

Revert with the amount of swap utilization