หลังจากค้นหาสิ่งนี้และค้นหาเฉพาะโพสต์ของคนที่ไม่ตีความตัวเลข "แคช" อย่างถูกต้องฉันตัดสินใจถามคำถามนี้
ฉันมีเซิร์ฟเวอร์อยู่ในมือซึ่งทำหน้าที่แปลก กล่าวคือการใช้ RAM ของพวกเขานั้นสูงมากโดยไม่มีเหตุผลที่ชัดเจน ดูเหมือนว่ากระบวนการที่มองไม่เห็นมี RAM "ใช้แล้ว" จำนวนมาก (และฉันหมายถึง "ใช้แล้ว")
นี่คือข้อมูลบางส่วน:
- เซิร์ฟเวอร์ทั้งหมดเรียกใช้ SLES 11
- เคอร์เนลคือ 3.0.76
- เซิร์ฟเวอร์ทั้งหมดทำงานในฐานะแขกภายใต้โครงสร้างพื้นฐาน VMWare ESX
- ฉันยังไม่ได้ตั้งค่าเซิร์ฟเวอร์และไม่ได้พูดในตัวเลือกระบบปฏิบัติการและฉันไม่สามารถเข้าถึงโครงสร้างพื้นฐานการจำลองเสมือนได้
- เซิร์ฟเวอร์ทั้งหมดมีการตั้งค่าในทำนองเดียวกันและพวกเขารันซอฟต์แวร์ชุดเดียวกัน (เป็นคลัสเตอร์และใช่ฉันรู้ว่าคลัสเตอร์เสมือนจริง yada yada ดังที่ได้กล่าวไว้: ฉันมีและไม่มีการพูดถึงเรื่องนั้น)
และเอาท์พุทเปลือกบางส่วน:
root@good-server:# free -m
total used free shared buffers cached
Mem: 15953 14780 1173 0 737 8982
-/+ buffers/cache: 5059 10894
Swap: 31731 0 31731
root@good-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
4.7 GiB
=================================
root@bad-server:# free -m
total used free shared buffers cached
Mem: 15953 15830 123 0 124 1335
-/+ buffers/cache: 14370 1583
Swap: 31731 15 31716
root@bad-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
4.0 GiB
=================================
เนื้อหาของ / proc / meminfo ของเซิร์ฟเวอร์ที่ดี
MemTotal: 16336860 kB
MemFree: 112356 kB
Buffers: 138384 kB
Cached: 1145208 kB
SwapCached: 1244 kB
Active: 4344336 kB
Inactive: 1028744 kB
Active(anon): 3706796 kB
Inactive(anon): 382724 kB
Active(file): 637540 kB
Inactive(file): 646020 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 32493560 kB
SwapFree: 32477728 kB
Dirty: 1248 kB
Writeback: 0 kB
AnonPages: 4087776 kB
Mapped: 60132 kB
Shmem: 156 kB
Slab: 274968 kB
SReclaimable: 225864 kB
SUnreclaim: 49104 kB
KernelStack: 4352 kB
PageTables: 16400 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 40661988 kB
Committed_AS: 6576912 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 311400 kB
VmallocChunk: 34359418748 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 73728 kB
DirectMap2M: 16703488 kB
เนื้อหาของ / proc / meminfo ของเซิร์ฟเวอร์ที่ไม่ดี
MemTotal: 16336860 kB
MemFree: 1182320 kB
Buffers: 756244 kB
Cached: 8695688 kB
SwapCached: 0 kB
Active: 13499680 kB
Inactive: 843208 kB
Active(anon): 4853460 kB
Inactive(anon): 37372 kB
Active(file): 8646220 kB
Inactive(file): 805836 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 32493560 kB
SwapFree: 32493560 kB
Dirty: 1268 kB
Writeback: 0 kB
AnonPages: 4890180 kB
Mapped: 84672 kB
Shmem: 252 kB
Slab: 586084 kB
SReclaimable: 503716 kB
SUnreclaim: 82368 kB
KernelStack: 5176 kB
PageTables: 19684 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 40661988 kB
Committed_AS: 6794180 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 311400 kB
VmallocChunk: 34359419468 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 112640 kB
DirectMap2M: 16664576 kB
TL; DR - ถ้าคุณเปรียบเทียบเหล่านี้แบบเคียงข้างกันนี่คือความแตกต่างที่สำคัญ (BADserver - GOODserver):
MemFree -1070 MB
Cached -7550 MB
Active -9155 MB
Active(anon) -1147 MB
Active(file) -8009 MB
AnonPages - 802 MB
ความแตกต่างอื่น ๆ นั้นค่อนข้างเล็กและอยู่ในขอบเขตที่อาจคาดหวัง (แต่คุณสามารถเห็นด้วยตัวคุณเอง)
อย่างที่คุณเห็นบนเซิร์ฟเวอร์ที่ดียอดรวมของหน่วยความจำ RES และ SHR ของกระบวนการทั้งหมดค่อนข้างสอดคล้องกับfree -m
เอาต์พุตของค่า "ใช้ - / + บัฟเฟอร์ / แคช" ซึ่งเป็นสิ่งที่คุณคาดหวัง ?
ตอนนี้ดูเซิร์ฟเวอร์ที่ไม่ดี: free -m
ผลลัพธ์ของค่า "ใช้แล้ว - / + บัฟเฟอร์ / แคช" สูงกว่าที่คุณคาดไว้ประมาณ 3 เท่าโดยสรุปทุกอย่างps
จะแสดงให้คุณเห็น
ตรงกับสิ่งที่/proc/meminfo
บอกฉัน
จนถึงตอนนี้ฉันไม่รู้ว่ามันเป็นไปได้ยังไง เกิดอะไรขึ้นที่นี่?
/proc/meminfo
คุณอ้างว่ามีไว้สำหรับเซิร์ฟเวอร์ที่ดีหรือไม่? คุณสามารถให้การอ้างอิงเซิร์ฟเวอร์ที่ไม่ดีด้วยหรือไม่