หน่วยความจำที่ไม่สามารถอ้างสิทธิ์ได้ถูกจัดสรรให้กับแผ่นพื้นซึ่งพิจารณาว่าใช้แล้วหรือมีแคชอยู่หรือไม่


10

หลังจากการประเมิน / proc / meminfo ฉันเห็นข้อมูลต่อไปนี้:

$cat /proc/meminfo
MemTotal:       197852592 kB
MemFree:        64755992 kB
MemAvailable:   65655112 kB
Buffers:            4388 kB
Cached:           759952 kB
SwapCached:            0 kB
Active:           649472 kB
Inactive:         308340 kB
Active(anon):     193840 kB
Inactive(anon):    25316 kB
Active(file):     455632 kB
Inactive(file):   283024 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4095932 kB
SwapFree:        4095932 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:        193560 kB
Mapped:            86208 kB
Shmem:             25684 kB
Slab:           49141432 kB
SReclaimable:     667284 kB
SUnreclaim:     48474148 kB
KernelStack:       25600 kB
PageTables:        15152 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    103022228 kB
Committed_AS:    1097276 kB
VmallocTotal:   34359738367 kB
VmallocUsed:    82484800 kB
VmallocChunk:   34126392952 kB
HardwareCorrupted:     0 kB
AnonHugePages:      4096 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      762368 kB
DirectMap2M:    51664896 kB
DirectMap1G:    148897792 kB

และโดยเฉพาะแผ่น:

Slab:         46.8651GB
SReclaimable: 0.63637GB
SUnreclaim:   46.2286GB

หลังจากประเมิน slabtop ฉันเห็นต่อไปนี้เป็นผู้ใช้ที่ใหญ่ที่สุด:

      OBJS    ACTIVE  USE OBJ    SIZE   SLABS  OBJ/SLAB  CACHE SIZE                    NAME
  10855309  10855309     100%   1.07K  374321        29      11.42G         zfs_znode_cache
  10893059  10893059     100%   0.85K  294407        37       8.98G                 dnode_t
    412694    410756      99%  16.00K  206347         2       6.30G           zio_buf_16384
  12502304  12290111      98%   0.50K  390697        32       5.96G             kmalloc-512
  12776610  12744002      99%   0.29K  232302        55       3.54G          dmu_buf_impl_t
  10855309  10855309     100%   0.27K  374321        29       2.86G                sa_cache
    370776    370718      99%   8.00K   92694         4       2.83G            kmalloc-8192
   3269280   3028688      92%   0.32K   66720        49       1.02G               taskstats
  10899924  10899924     100%   0.08K  213724        51       0.82G  selinux_inode_security
  12161408  12150615      99%   0.06K  190022        64       0.72G              kmalloc-64
   3266592   3266072      99%   0.19K   77776        42       0.59G                  dentry
   5577600   5519569      98%   0.09K  132800        42       0.51G              kmalloc-96
     92872     82422      88%   4.00K   11609         8       0.35G            kmalloc-4096
   1962464   1953555      99%   0.12K   61327        32       0.23G             kmalloc-128
   6022528   6022428      99%   0.03K   47051       128       0.18G              kmalloc-32
      8356      8346      99%  12.00K    4178         2       0.13G           zio_buf_12288

อะไรทำให้หน่วยความจำแบบพื้นสามารถเรียกคืนได้และไม่สามารถอ้างสิทธิ์ได้? "ไม่สามารถขอคืนได้" หมายความว่าอะไรเมื่อระบบต้องการจัดสรรและมีหน่วยความจำไม่เพียงพอ มันยืดหยุ่นเหมือน buff / cache ไหม?

คำตอบ:


1

หน่วยความจำ SLAB ที่เรียกคืนได้สามารถนำกลับมาใช้ใหม่ได้โดยเคอร์เนลสำหรับสิ่งอื่น ๆ ซึ่งไม่สามารถเรียกคืนได้ ในกรณีที่การจัดสรร SLAB ใด ๆ สิ้นสุดลงนั้นขึ้นอยู่กับคุณสมบัติของพูลที่มีการจัดสรรซึ่งหมายความว่าเป็นคุณสมบัติของการจัดสรรเอง

OT เล็กน้อย แต่สำหรับสิ่งที่คุ้มค่าก้อนอันใหญ่ของหน่วยความจำ SLAB ที่ไม่สามารถขอคืนได้อาจเป็น ZFS ARC


เนื่องจากเป็นคำถามทางเทคนิคที่คุณจะสามารถให้การอ้างอิงสำหรับคำตอบของคุณได้หรือไม่
Zhro

แน่นอน แต่อาจใช้เวลาสักพักเนื่องจากฉันจะต้องค้นหาผ่านรหัสเคอร์เนลเพื่อค้นหาบิตที่เกี่ยวข้องกับเรื่องนี้ (โชคไม่ดีที่ไม่ได้มีการบันทึกไว้ที่ใดก็ได้และความรู้ของฉันเกี่ยวกับการตรวจสอบรหัสเป็นหลัก) .
Austin Hemmelgarn

@AustinHemmelgarn เคยมาแล้วและฉันก็สนใจเช่นกัน
Gregg Leventhal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.