ความหมายของหน่วยความจำที่แชร์ในคำสั่ง `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 บอกว่า: ใช้ร่วมกัน: แนวคิดที่ไม่มีอยู่อีกต่อไป มันเหลือในการส่งออกสำหรับความเข้ากันได้ย้อนหลัง ดูไม่เพียงพอสำหรับฉัน แนวคิด "ไม่มีอยู่จริง" ไม่ใช้ RAM 600+ MB


4
ซ้ำซ้อนที่เป็นไปได้ของการใช้งานหน่วยความจำจริง

คุณเคยลองman freeไหม
Archemar

@Archemar manpage พูดว่า: "shared: Memory ใช้ (ส่วนใหญ่) โดย tmpfs (Shmem ใน / proc / meminfo)" นั่นไม่ชัดเจนมาก ฉันต้องการคำอธิบายที่ละเอียดยิ่งขึ้น
BertS

คำตอบ:


5

"แบ่งใช้" ใน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"


ขอบคุณที่อธิบาย แต่มีtmpfsความจำเป็นฉันสามารถลบและถ้าเป็นไปได้ฉันจะลบได้อย่างไร ฉันพบปัญหานี้หลายครั้งหลังจากที่ตื่นจากการไฮเบอร์เนต (~ ถ่ายโดย 4GB shared)
Kasun Siyambalapitiya

2
สวัสดี @KasunSiyambalapitiya Shmem ยังรวมถึง GEM บัฟเฟอร์กราฟิกตามความเห็นมาเคอร์เนลและlists.kernelnewbies.org/pipermail/kernelnewbies/2013-July/... systemd เวอร์ชันก่อนหน้าบางรุ่นมีข้อผิดพลาดที่รั่วบัฟเฟอร์กราฟิก (อย่างจริงจัง) เมื่อเซิร์ฟเวอร์กราฟิกออกจาก ... นั่นคือ "สนุก" unix.stackexchange.com/questions/431982/… . ปัญหาเฉพาะนั้นสามารถนำมาใช้ได้เฉพาะในกรณีที่เซสชันกราฟิกทั้งหมดของคุณหยุดทำงานหรือถ้าคุณได้ออกจากระบบอย่างตั้งใจ (และกลับมาอีกครั้ง)
sourcejedi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.