01-13-2011
shmget failed - cannot allocate memory
Hi,
In my proj, one process was running for 2 days. after 2 days its throwing an error message "shmget failed cannot allocate memory". the same problem happened every time.i.e. i can reproduce the same issue if my process is running for every 2 days for a same operation.Within this 2 days there are 2500 operation were completed. after ~2500 operation this problem occured every time.once it thrown an error from then on(from the next operation) the same error was thrown continuosously.
my process name is Server.
the top command output for my process at the time when the problem occured.
=======================================================
top - 01:14:10 up 6 days, 1:23, 7 users, load average: 0.99, 1.03, 1.12
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 26.5%us, 1.4%sy, 0.0%ni, 71.9%id, 0.0%wa, 0.2%hi, 0.1%si, 0.0%st
Mem: 4055852k total, 4025864k used, 29988k free, buffers
Swap: 4200444k total, 4200408k used, 36k free, 512380k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24403 root 20 0 2904m 1.0g 3228 S 0 25.7 162:28.16 Server
=======================================================
RAM size is 4GB.
Is it because of memory leak? or for the 4GB memory it can be supported only 2500 operation?
free command output:
free -m
total used free shared buffers cached
Mem: 3960 3841 119 0 44 921
-/+ buffers/cache: 2874 1086
Swap: 4101 255 3846
Output of the
#cat /proc/sys/kernel/shmmax
18446744073709551615
#cat /proc/sys/kernel/shmmni
4096
#cat /proc/sys/kernel/shmall
1152921504606846720
Regards,
Mani
P.S: the top command output for the same process one day back:
top - 10:20:52 up 5 days, 10:29, 4 users, load average: 1.55, 1.51, 1.49
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 26.6%us, 1.3%sy, 0.0%ni, 71.6%id, 0.3%wa, 0.1%hi, 0.1%si, 0.0%st
Mem: 4055852k total, 3980588k used, 75264k free, 16448k buffers
Swap: 4200444k total, 3580824k used, 619620k free, 661580k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24403 root 20 0 2510m 999m 6164 S 0 25.2 140:05.11 Server
Last edited by ManoharanMani; 01-13-2011 at 03:18 AM..
10 More Discussions You Might Find Interesting
1. Programming
Hi Folks
can any body suggest how to allocate virtual memory any function for that (2 Replies)
Discussion started by: munnu
2 Replies
2. UNIX for Advanced & Expert Users
On SunOS 5.8 I get an error when starting a large Java process with over 2Gb memory.
Error occurred during initialization of VM
Could not reserve enough space for object heap
When stopping several other Java processes we can start this process. This seems to indicate that we don't have... (11 Replies)
Discussion started by: rein
11 Replies
3. UNIX for Advanced & Expert Users
Hi,
I have 2 systems with same hardware and software. One system is giving me error "Error occurred during initialization of VM Could not reserve enough space for object " when I tried to increase JBoss App's heap size to 2GB while the other system is running fine without any issue. Is there... (5 Replies)
Discussion started by: ravi3553
5 Replies
4. UNIX for Advanced & Expert Users
hi... i want to find oracle allocate how many memory really..
i execute this code to list memory on unix system : ps -eo pmem,args | sort -k 1 -r -n
outputs ;
%mem command
12.9|ora_smon_RTX
12.9|ora_s000_RTX
12.9|ora_reco_RTX
12.9|ora_qmnc_RTX... (2 Replies)
Discussion started by: utoptas
2 Replies
5. SuSE
Hi,
My program was running for a whole night. after 12 hours i got an error message "Cannot allocate memory" during the shmat commmand. So can you please let me know what could be the reason? is there any solution?
thanks in advance.
Regards,
Mano (5 Replies)
Discussion started by: ManoharanMani
5 Replies
6. SuSE
Hi,
In my proj, one process was running for 2 days. after 2 days its throwing an error message "shmget failed cannot allocate memory". the same problem happened every time.i.e. i can reproduce the same issue if my process is running for every 2 days for a same operation.Within this 2 days there... (1 Reply)
Discussion started by: ManoharanMani
1 Replies
7. Linux
Hi,
In my proj, one process was running for 2 days. after 2 days its throwing an error message "shmget failed cannot allocate memory". the same problem happened every time.i.e. i can reproduce the same issue if my process is running for every 2 days for a same operation.Within this 2 days there... (1 Reply)
Discussion started by: ManoharanMani
1 Replies
8. Programming
hi
I want to take string as a input from user and the string is very very length. From the lengthy string i have to substring take first 16 letters, then next 8 letters,................... Please guide me how to write program to take lengthy string from user and sub string it.
Thanks (4 Replies)
Discussion started by: atharalikhan
4 Replies
9. Solaris
On SunOS 10 get an error when starting a large Java process with over 2Gb memory.
Error occurred during initialization of VM
Could not reserve enough space for object heap
i have 32G memory !! , swap = 31G
Please any advice !!! (3 Replies)
Discussion started by: moata_u
3 Replies
10. Programming
Hi , experts.
I work on Linux station (RedHat 5.7), regular user, but have root password.
%> uname -a
Linux ran1log06 2.6.18-238.1.1.el5 #1 SMP Tue Jan 4 13:32:19 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
%> cat /etc/issue
Red Hat Enterprise Linux Client release 5.7 (Tikanga)
Kernel \r on... (5 Replies)
Discussion started by: baruchgu
5 Replies
shmget(2) System Calls Manual shmget(2)
NAME
shmget - Returns (and possibly creates) the ID for a shared memory region
SYNOPSIS
#include <sys/shm.h>
int shmget(
key_t key,
size_t size,
int flags);
If programs are being developed for multiple platforms, application developers may want to specify #include statements for <sys/types.h>
and <sys/ipc.h> before the one for <sys/shm.h>. The additional #include statements are not required on Tru64 UNIX systems or by ISO or
X/Open standards, but may be required on other vendors' systems that conform to these standards.
STANDARDS
Interfaces documented on this reference page conform to industry standards as follows:
shmget(): XSH4.2
Refer to the standards(5) reference page for more information about industry standards and associated tags.
PARAMETERS
Specifies the key that identifies the shared memory region. The value for the key parameter can be IPC_PRIVATE or a random number other
than zero (0). If the value of key is IPC_PRIVATE, it can be used to assure the return of a new, unused shared memory region. Specifies
the minimum number of bytes to allocate for the region. Specifies the creation flags. Possible values are: If the key specified does not
exist, the shmget() function creates an ID using the specified key.
If the specified key does exist, and IPC_EXCL is not set, the ID for the specified key is returned.
If the specified key does exist and IPC_EXCL is set, the shmget() function fails and returns an error. If the key already exists,
the shmget() function fails and returns an error notification.
DESCRIPTION
The shmget() function returns (and possibly creates) the ID for the shared memory region identified by the key parameter. If IPC_PRIVATE
is used for the key parameter, the shmget() function returns the ID for a private (that is, newly created) shared memory region. The flags
parameter supplies creation options for the shmget() function. If the key parameter does not already exist, the IPC_CREAT flag instructs
the shmget() function to create a new shared memory region for the key and return the kernel-assigned ID for the region.
After creating a new shared memory region ID, the shmget() function initializes the shmid_ds structure associated with the ID as follows:
The shm_perm.cuid and shm_perm.uid fields are set equal to the effective user ID of the calling process. The shm_perm.cgid and
shm_perm.gid fields are set equal to the effective group ID of the calling process. The low-order nine bits of the shm_perm.mode field are
set equal to the low-order nine bits of flags. The shm_segsz field is set equal to size. The shm_lpid, shm_nattch, shm_atime, and
shm_dtime fields are all set equal to 0 (zero). The shm_ctime field is set equal to the current time. [Tru64 UNIX] The shm_cpid field is
set to the process ID of the calling process.
[Tru64 UNIX] To reduce the overhead associated with managing large shared memory regions among many processes, the Tru64 UNIX kernel makes
use of shared page tables, also referred to as segmented shared memory (SSM). When the segment size requested by shmget is greater than or
equal to the value of ssm-threshold (an attribute in /etc/sysconfigtab), the memory region is managed using shared page tables. When
attaching to such a segment, the segment must always be aligned and sized correctly. The alignment and size factor is given by the system-
defined SSM_SIZE value (see machine/pmap.h). When the attachment occurs, the segment's memory region is aligned on an SSM_SIZE boundary
and its size is rounded up to the next SSM_SIZE boundary - thus, the segment size specified by shmget does not need to be a multiple of
SSM_SIZE. (Use of segmented shared memory can be disabled by setting the ssm-threshold attribute to zero.)
RETURN VALUES
Upon successful completion, a shared memory identifier is returned. If the shmget() function fails, a value of -1 is returned and errno is
set to indicate the error.
ERRORS
The shmget() function sets errno to the specified values for the following conditions: A shared memory region ID already exists for the key
parameter, but operation permission as specified by the low-order nine bits of the flags parameter was not granted. A shared memory region
ID already exists for the key parameter, but IPC_CREAT and IPC_EXCL were used for the flags parameter. The value of the size parameter is
less than the system-defined minimum or greater than the system-defined maximum. Or, a shared memory region ID already exists for the key
parameter, but the number of bytes allocated for the region is less than size and size is not equal to 0 (zero). A shared memory region ID
does not exist for the key parameter, and IPC_CREAT was not used for the flags parameter. An attempt was made to create a shared memory
region ID and its associated shmid_ds structure, but there was not enough physical memory available. An attempt to create a new shared
memory region ID exceeded the system-wide limit on the maximum number of IDs allowed.
RELATED INFORMATION
Functions: shmat(2), shmctl(2), shmdt(2), sysconfig(8), table(2), ftok(3)
Files: shmid_ds(4)
Standards: standards(5) delim off
shmget(2)