About
Shared memory (SHM) in Linux.
The shared memory system can also be used to set permissions on memory.
There are two different types of shared memory implementations:
- and BSD mmap.
Articles Related
Management
By default, your operating system includes an entry in /etc/fstab to mount /dev/shm.
File structure
/dev/shm
shm / shmfs is also known as tmpfs.
tmpfs means temporary file storage facility. It is intended to appear as a mounted file system, but one which uses virtual memory instead of a persistent storage device.
How to check its size ?
To check the size of the shared memory file system, enter the following command:
df –k /dev/shm
Limit
To determine current shared memory limits you can use the ipcs command.
ipcs -lm
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 1073741824
max total shared memory (kbytes) = 17179869184
min seg size (bytes) = 1
Parameters
shmmax
shmmax define the Maximum size (in bytes) for a shared memory segment.
We gan get the parameters limit by using the proc Filesystem such as:
cat /proc/sys/kernel/shmmax
1099511627799
shmall total shared memory avail: 2097152
cat /proc/sys/kernel/shmall
4294967296
- shmseg - max # of shared memory segs per process: (doesn't exist in FC6)
- shmmni - max # of shared memory segs system-wide
cat /proc/sys/kernel/shmmni
4096
segments
ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x45110010 1774485506 oracle 660 1048576 2
0x00000000 3112963 oracle 660 67108864 51
0x00000000 3145732 oracle 660 1543503872 51
0x910ac490 3178501 oracle 660 2097152 51
0x6611c0d9 1774518278 oracle 660 126921994088 1 locked
0x6711c0d9 1774551047 oracle 660 33554432 1
0x1111c0df 1775206408 oracle 660 273722634328 2 locked
0x1211c0df 1775239177 oracle 660 33554432 2
Process
ipcs -pm
------ Shared Memory Creator/Last-op --------
shmid owner cpid lpid
1774485506 oracle 30581 11420
3112963 oracle 24249 11377
3145732 oracle 24249 11377
3178501 oracle 24249 11377
1774518278 oracle 30572 11420
1774551047 oracle 30572 11420
where:
- cpid is the process ID of the job that created the shared memory segment.
- lpid is the process ID of the last job to attach or detach from the shared memory segment or change the semaphore value.
top
SHR – Shared Mem size (kb)
The amount of shared memory used by a task. It simply reflects mem-
ory that could be potentially shared with other processes.