Linux - Shared Memory (SHM) (/dev/shm)

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:

  • System V IPC,
  • and BSD mmap.

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.

11 - Documentation / Reference


Data Science
Data Analysis
Statistics
Data Science
Linear Algebra Mathematics
Trigonometry

Powered by ComboStrap