Apa arti dari memori `shared` dalam perintah` free`?

12

Kolom keempat dalam output freebernama shared . Pada sebagian besar output yang dapat saya lihat di internet, memori bersama adalah nol. Tapi itu tidak terjadi di komputer saya:

$ 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

Berikut juga kutipan dari output 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
=================================

Apa arti dari memori bersama ?

Jawaban utama dalam Pertanyaan 14102 mengatakan: dibagikan: sebuah konsep yang tidak ada lagi. Tersisa di output untuk kompatibilitas mundur . Terlihat tidak cukup bagi saya. Konsep "tidak ada" tidak membutuhkan RAM 600+ MB.

BertS
sumber
4
Kemungkinan duplikat penggunaan memori nyata
Anda mencoba man free?
Archemar
@Archemar manpage mengatakan: "shared: Memori digunakan (kebanyakan) oleh tmpfs (Shmem in / proc / meminfo)". Itu tidak terlalu jelas; Saya ingin penjelasan yang lebih rinci.
BertS

Jawaban:

5

"Dibagikan" freedan "Shmem" dalam /proc/meminfomenghitung semua memori yang digunakan oleh sistem file tmpfs (sistem file dalam memori) dan juga memori bersama (dialokasikan oleh shmget(2)). Ini didokumentasikan dalam https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt .

Ini adalah contoh dari salah satu server saya:

$ 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

Jika Anda menjumlahkan ukuran yang digunakan (kolom ke-3) dari semua sistem file tmpfs yang terdaftar df, Anda akan menemukan bahwa jumlahnya sama dengan "shared" dan "shmem".

lqhl
sumber
Terima kasih telah menjelaskan, tetapi apakah itu tmpfsdiperlukan, Dapatkah saya menghapusnya dan jika mungkin bagaimana cara menghapusnya? Saya telah mengalami masalah ini berkali-kali setelah membangunkan sistem dari hibernasi (~ 4GB diambil oleh shared)
Kasun Siyambalapitiya
2
Hai @KasunSiyambalapitiya. Shmem juga menyertakan buffer grafis GEM, sesuai dengan komentar dan list source kernel.kernelnewbies.org/pipermail/kernelnewbies/2013-Juli/… . Beberapa versi sebelumnya dari systemd memiliki bug yang bocor buffer grafis (serius) ketika server grafis keluar ... itu "menyenangkan". unix.stackexchange.com/questions/431982/… . Masalah khusus itu hanya dapat berlaku jika seluruh sesi grafis Anda mogok, atau jika Anda sengaja keluar dari seluruh sesi Anda (dan kembali lagi).
sourcejedi