11-11-2009
First of all - what you describe is called forking and it should not happen if you have sufficient memory + pagingspace in your box and lru_file_repage is switched off. If it happens frequently, you very likely have insufficient memory in your box or some memory leaks.
Please check your avm value (what is shown in 4k pages!!) with the vmstat command - a healthy box is somewhere around 80% of physical memory. If you're dramatically exceeding it, you simply need to add physical memory or reduce the consumtion.
Check with vmo command the value of lru_file_repage - if its set to 0, than your system rarely uses pagingspace (as long as you have enough physical memory) and your system should not fork at all.
As far as I know, the only fast and reliable way apart from killing the top memory consuming processes (what is sometimes not possible because it would require to start a new process what's usually not possible when your box is really forking/inresponsive) to refresh memory is to reboot the box.
If it's possible that you're out of memory because i.e. a crashed database did not free up its shared memory, you can give it a try using ipcrm on the misallocated shared memory segments - but be careful that you don't do it on shared memory actually in use. And as stated before - this only works if you have enough free memory to start a new process. So you need to give it again and again a try until it works.
Hope that helps,
kind regards
zxmaus
6 More Discussions You Might Find Interesting
1. Solaris
hi everybody
i'm just recreuted as UNIX system admin...
please tell me from where do i have to begin...
best regards (8 Replies)
Discussion started by: hmaiida
8 Replies
2. Filesystems, Disks and Memory
Hello,
What are the comparative command in solaris for checking the memory and produced the output as free -m does in linux. (1 Reply)
Discussion started by: 009satyendra
1 Replies
3. Solaris
Does anybody know the command i issue to find out the manufacturer of the RAM modules in my machine ....ie KINGSTON etc ....i know there is one because I saw sombody use it the other day
cheers (1 Reply)
Discussion started by: hcclnoodles
1 Replies
4. Shell Programming and Scripting
Hi all,
I found like top command could be used to find the Memory and CPU utilization. But i want to know how to find the Memory and CPU utilization for a particular user using top command.
Thanks in advance.
Thanks,
Ananthi.U (2 Replies)
Discussion started by: ananthi_ku
2 Replies
5. UNIX for Dummies Questions & Answers
Hello all,
I am very new to unix. Can anybody suggest me good learning videos and their links for UNIX.
Thanks (1 Reply)
Discussion started by: nnani
1 Replies
6. Solaris
How can I deinstall or delete the whole environment and delete everything (all the files, group, users). I would like to start fresh. I 'd like to install ORACLE 12c. Create users from scratch, create group from scratch etc)
Why?
I installed Oracle 11g on Solaris. It had an ORACLE_BASE,... (6 Replies)
Discussion started by: newborndba
6 Replies
LEARN ABOUT ULTRIX
shmget
shmget(2) System Calls Manual shmget(2)
Name
shmget - get shared memory segment
Syntax
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget (key, size, shmflg)
key_t key;
int size, shmflg;
Description
The system call returns the shared memory identifier associated with key.
A shared memory identifier and associated data structure and shared memory segment of size size bytes are created for key, if one of the
following is true:
The key is equal to IPC_PRIVATE. For further information, see
The key does not already have a shared memory identifier associated with it, and (shmflg & IPC_CREAT ) is true.
Upon creation, the data structure associated with the new shared memory identifier is initialized as follows:
The and are set equal to the effective user ID and effective group ID of the calling process.
The low-order nine bits of are set equal to the low-order nine bits of shmflg. The is set equal to the value of size.
The and are set equal to zero (0). The shm_ctime is set equal to the current time.
Return Values
Upon successful completion, a non-negative integer, namely, a shared memory identifier is returned. Otherwise, a value of -1 is returned
and errno is set to indicated the error.
Diagnostics
The system call fails if any of the following is true:
[EINVAL] The size is less than the system-imposed minimum or greater than the system-imposed maximum.
[EACCES] A shared memory identifier exists for key, but operations permission, as specified by the low-order nine bits of shmflg,
would not be granted. For further information, see
[EINVAL] A shared memory identifier exists for key, but the size of the segment associated with it is less than size and size is not
equal to zero.
[ENOENT] A shared memory identifier does not exist for key, and (shmflg & IPC_CREAT ) is false.
[ENOSPC] A shared memory identifier is to be created, but the system-imposed limit on the maximum number of allowed shared memory
identifiers would be exceeded.
[ENOMEM] A shared memory identifier and the associated shared memory segment are to be created, but the amount of available physical
memory is not sufficient to fill the request.
[EEXIST] A shared memory identifier exists for key, but ((shmflg & IPC_CREAT ) and (shmflg & IPC_EXCL )) is true.
See Also
shmctl(2), shmop(2), ftok(3)
shmget(2)