¿Cuál es el significado de la memoria `compartida` en el comando` libre`?


12

La cuarta columna en la salida de freese denomina compartida . En la mayoría de las salidas que puedo ver en internet, la memoria compartida es cero. Pero ese no es el caso en mi computadora:

$ free -h
          total        used        free      shared  buff/cache   available
Mem:       7,7G        3,8G        1,1G        611M        2,8G        3,0G
Swap:      3,8G          0B        3,8G

Aquí también hay un extracto de la salida de ps_mem.py:

 Private  +   Shared  =  RAM used   Program
---------------------------------
 21.4 MiB +   1.0 MiB =  22.4 MiB   bash (9)
 29.2 MiB +   5.3 MiB =  34.5 MiB   Xorg
 35.9 MiB + 858.5 KiB =  36.7 MiB   tor
 42.9 MiB +   9.6 MiB =  52.5 MiB   urxvt (16)
121.0 MiB +  24.9 MiB = 145.8 MiB   okular (2)
151.8 MiB +   2.8 MiB = 154.6 MiB   soffice.bin
  3.7 GiB + 209.3 MiB =   4.0 GiB   chromium (39)
---------------------------------
                          4.6 GiB
=================================

¿Cuál es el significado de una memoria compartida ?

La respuesta principal en la pregunta 14102 dice: compartido: un concepto que ya no existe. Se deja en la salida para compatibilidad con versiones anteriores . Me parece insuficiente. Un concepto "inexistente" no requiere más de 600 MB de RAM.


44
Posible duplicado del uso de memoria real

has intentado man free?
— Archemar

La página de manual de @Archemar dice: "compartido: Memoria utilizada (principalmente) por tmpfs (Shmem en / proc / meminfo)". Eso no está muy claro; Me gustaría una explicación más elaborada.
— BertS

Respuestas:


5

"Shared" en freey "Shmem" /proc/meminfocuentan toda la memoria utilizada por el sistema de archivos tmpfs (un sistema de archivos en la memoria) y también la memoria compartida (asignada por shmget(2)). Esto está documentado en https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt .

Aquí hay un ejemplo de uno de mis servidores:

$ free -k
              total        used        free      shared  buff/cache   available
Mem:      264036296     1275384   254696692     1182024     8064220   260536208
Swap:      63998972           0    63998972

$ grep Shmem /proc/meminfo
Shmem:           1182024 kB

$ df -BK | grep tmpfs
tmpfs        26403632K       51424K    26352208K   1% /run
tmpfs       132018148K         224K   132017924K   1% /dev/shm
tmpfs            5120K           4K        5116K   1% /run/lock
tmpfs       132018148K           0K   132018148K   0% /sys/fs/cgroup
tmpfs       251658240K     1129036K   250529204K   1% /run/shm
tmpfs        26403632K          24K    26403608K   1% /run/user/108
tmpfs        26403632K           0K    26403632K   0% /run/user/5800006

Si suma el tamaño utilizado (tercera columna) de todos los sistemas de archivos tmpfs enumerados por df, encontrará que la suma es igual a "compartida" y "shmem".


Gracias por explicar, pero son tmpfsnecesarios, ¿puedo eliminarlos y, si es posible, cómo los elimino? Tengo surja este problema muchas veces después de despertar de la hibernación del sistema (~ 4 GB es tomada por shared)
— Kasun Siyambalapitiya

2
Hola @KasunSiyambalapitiya. Shmem también incluye buffers de gráficos GEM, según los comentarios de la fuente del kernel y lists.kernelnewbies.org/pipermail/kernelnewbies/2013-July/… . Algunas versiones anteriores de systemd tenían un error que filtraba los búferes de gráficos (en serio) cuando el servidor de gráficos salió ... eso fue "divertido". unix.stackexchange.com/questions/431982/… . Ese problema específico solo podría aplicarse si toda su sesión gráfica se ha bloqueado, o si se ha desconectado deliberadamente de toda la sesión (y ha vuelto a iniciarla).
— sourcejedi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.