Linux - Shared Memory (SHM) (/dev/shm)
> Operating System - Kernel (Windows, Unix, Linux) > Linux / Unix
Table of Contents
1 - 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.
2 - Articles Related
3 - Management
By default, your operating system includes an entry in /etc/fstab to mount /dev/shm
.
4 - 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.
5 - How to check its size ?
To check the size of the shared memory file system, enter the following command:
df –k /dev/shm
6 - 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
7 - Parameters
7.1 - 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
8 - 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
9 - 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.
10 - 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.