ฉันมี Xen VM ที่ใช้ Debian Linux โดยใช้ RAM จำนวนมากอย่างน่าประหลาด อะไรคือผู้ร้าย? ฉันเชื่อว่าฉันได้ขจัดข้อสงสัยทั่วไปเกี่ยวกับการแคชดิสก์ การใช้เคอร์เนล Slab และการเพิ่มหน่วยความจำ
ฟรี -h
แสดง:
รวมใช้บัฟ/แคชที่ใช้ร่วมกันฟรี
หน่วยความจำ: 3.8Gi 3.6Gi 87Mi 0.0Ki 55Mi 33Mi
สลับ: 1.0Gi 275Mi 748Mi
ดังนั้นจึงใช้ RAM ขนาด 3.8 GiB เกือบทั้งหมดของ VM และการใช้งานเพียงเล็กน้อยนั้นมาจากดิสก์แคชของเคอร์เนล
smem -kt
ไม่ได้ระบุหน่วยความจำกับกระบวนการใด ๆ :
สลับคำสั่งผู้ใช้ PID USS PSS RSS
®
--------------------------------------------- -----------------------------
52 1 214.4M 128.4M 133.2M 146.6M
smem -w -kt
กล่าวว่าหน่วยความจำเป็นของเคอร์เนล:
พื้นที่แคชที่ใช้ ไม่ใช่แคช
เฟิร์มแวร์/ฮาร์ดแวร์ 0 0 0
ภาพเคอร์เนล 0 0 0
หน่วยความจำไดนามิกเคอร์เนล 3.6G -20205568.0 3.6G
หน่วยความจำ userspace 133.6M 77.6M 56.0M
หน่วยความจำว่าง 87.8M 87.8M 0
--------------------------------------------- --------
3.8G 146.1M 3.6G
(นอกจากนี้จำนวนลบนั้นดูแปลก ๆ )
/proc/meminfo
กล่าวเหนือสิ่งอื่นใดว่าตัวจัดสรร kernel slab รับผิดชอบการใช้ RAM ประมาณ 95 MiB เท่านั้น (และไม่ได้ให้ข้อบ่งชี้เกี่ยวกับสิ่งที่ เป็น ใช้แรม):
MemTotal: 3973392 kB
MemFree: 89144 กิโลไบต์
หน่วยความจำที่มีอยู่: 41860 kB
บัฟเฟอร์: 5084 กิโลไบต์
แคช: 37972 กิโลไบต์
สลับแคช: 30,000 กิโลไบต์
ใช้งานอยู่: 52356 กิโลไบต์
ไม่ใช้งาน: 77832 กิโลไบต์
ใช้งานอยู่(ไม่ใช้งาน): 30756 kB
ไม่ใช้งาน (ไม่ใช้งาน): 56396 kB
ใช้งานอยู่(ไฟล์): 21600 kB
ไม่ใช้งาน (ไฟล์): 21436 kB
ไม่สามารถหลีกเลี่ยงได้: 80 kB
ล็อกไว้: 80 kB
SwapTotal: 1048572 กิโลไบต์
SwapFree: 775576 กิโลไบต์
สกปรก: 104 กิโลไบต์
การเขียนกลับ: 0 kB
AnonPages: 78660 kB
แมป: 91004 kB
ชัม: 20 kB
KReclaimable: 28348 kB
พื้น: 96740 กิโลไบต์
SReclaimable: 28348 kB
SUnreclaim: 68392 กิโลไบต์
KernelStack: 4288 กิโลไบต์
PageTables: 6768 กิโลไบต์
NFS_Unstable: 0 กิโลไบต์
การตีกลับ: 0 กิโลไบต์
WritebackTmp: 0 กิโลไบต์
CommitLimit: 3035268 กิโลไบต์
Commit_AS: 1697316 กิโลไบต์
VmallocTotal: 34359738367 กิโลไบต์
VmallocUsed: 10028 กิโลไบต์
VmallocChunk: 0 กิโลไบต์
ประสิทธิภาพ: 2352 kB
ฮาร์ดแวร์เสียหาย: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 กิโลไบต์
ShmemPmdMapped: 0 กิโลไบต์
FileHugePages: 0 กิโลไบต์
FilePmdMapped: 0 กิโลไบต์
CmaTotal: 0 กิโลไบต์
CmaFree: 0 กิโลไบต์
HugePages_Total: 0
HugePages_ฟรี: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
ขนาดหน้าใหญ่: 2048 kB
Hugetlb: 0 กิโลไบต์
DirectMap4k: 428032 กิโลไบต์
DirectMap2M: 3799040 กิโลไบต์
DirectMap1G: 0 กิโลไบต์
ถ้าฉันเข้าใจหน่วยความจำ Xen ถูกต้อง ระบบจะไม่สูญเสีย RAM มากไปกับการเติมหน่วยความจำ /sys/devices/system/xen_memory/xen_memory0/info/current_kb
ประกอบด้วย 4079228
ซึ่งตรงกับ RAM ที่ระบบรายงานมาพอดีๆ ในไดเรกทอรีเดียวกัน สูง_kb
และ low_kb
บรรจุ 0
และ 16384
ตามลำดับ ฉันเชื่อว่านั่นหมายความว่าไดรเวอร์บอลลูน Xen อ้างสิทธิ์ RAM เพียง 16 MiB เท่านั้น
ฉันพลาดอะไรไป มีอะไรอีกบ้างที่สามารถใช้หน่วยความจำของระบบได้มากขนาดนี้