Яке значення 'спільної' пам'яті в команді `free '?


12

Четвертий стовпець у виводі програми freeмає ім'я спільне . На більшості виходів, які я бачу в Інтернеті, спільна пам'ять дорівнює нулю. Але це не так у моєму комп’ютері:

$ 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

Ось також уривок виходу 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
=================================

Яке значення спільної пам’яті?

Основна відповідь у питанні 14102 говорить: поділився: поняття, яке більше не існує. Це залишається у виході для зворотної сумісності . Мені здається недостатньою. "Неіснуюча" концепція не займає 600+ Мб оперативної пам'яті.



ви пробували man free?
Архемар

На Manpage на сторінці @Archemar сказано: "поділився: Пам'ять, що використовується (здебільшого) tmpfs (Shmem in / proc / meminfo)". Це не дуже зрозуміло; Мені хотілося б більш детального пояснення.
BertS

Відповіді:


5

"Спільний" в freeі "Шмем" /proc/meminfoпідраховують всю пам'ять, яку використовує файлова система tmpfs (файлова система в пам'яті), а також спільну пам'ять (виділено shmget(2)). Це задокументовано на https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt .

Ось приклад з одного з моїх серверів:

$ 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

Якщо ви підсумуєте використаний розмір (3-й стовпець) усіх файлів, що перераховані файлами tmpfs df, ви побачите, що сума дорівнює "спільному" та "шмему".


Дякую за пояснення, але чи tmpfsпотрібні такі, чи можу я їх видалити, і якщо можливо, як їх видалити ?. З цим питанням я стикався багато разів після пробудження системи від сплячки (~ 4 Гб займає shared)
Касун Сіямбалапітия,

2
Привіт @KasunSiyambalapitiya. Shmem також включає графічні буфери GEM, відповідно до коментарів джерел та списків ядер.kernelnewbies.org/pipermail/kernelnewbies/2013-July/… . Деякі попередні версії systemd мали помилку, яка просочилася графічними буферами (серйозно), коли графічний сервер вийшов ... це було "весело". unix.stackexchange.com/questions/431982 / ... . Ця конкретна проблема може бути застосована лише в тому випадку, коли весь графічний сеанс вийшов з ладу або якщо ви навмисно вийшли з системи протягом усього сеансу (і знову заново).
sourcejedi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.