Что означает «общая» память в команде «free»?

12

Четвертый столбец в выводе freeназывается shared . На большинстве выходов, которые я вижу в интернете, общая память равна нулю. Но это не так на моем компьютере:

$ 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 МБ ОЗУ.

Berts
источник
4
Возможный дубликат реального использования памяти
ты пробовал man free?
Архемар
Страница руководства @Archemar гласит: «shared: память, используемая (главным образом) tmpfs (Shmem в / proc / meminfo)». Это не очень ясно; Я хотел бы более подробное объяснение.
BertS

Ответы:

5

«Shared» freeи «Shmem» /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, вы обнаружите, что сумма равна «shared» и «shmem».

lqhl
источник
Спасибо за объяснение, но tmpfsнужны ли они? Могу ли я удалить их и, если возможно, как их удалить ?. Я сталкивался с этой проблемой много раз после пробуждения системы из режима гибернации (~ 4 ГБ занято shared)
Касун Сиямбалапития
2
Привет @KasunSiyambalapitiya. Shmem также включает графические буферы GEM, согласно комментариям источника ядра и lists.kernelnewbies.org/pipermail/kernelnewbies/2013-July/… . В некоторых предыдущих версиях systemd была ошибка, из-за которой графические буферы просачивались (серьезно) при выходе из графического сервера ... это было "весело". unix.stackexchange.com/questions/431982/… . Эта конкретная проблема может возникнуть только в случае сбоя всего графического сеанса или если вы умышленно вышли из сеанса (и вернулись снова).
Sourcejedi