หน่วยความจำ Linux ใช้อะไร แคชต่ำบัฟเฟอร์ต่ำไม่ใช่ VM


11

ก่อนอื่นใช่ฉันได้อ่านLinuxAteMyRAMซึ่งไม่ได้อธิบายสถานการณ์ของฉัน

# free -tm
             total       used       free     shared    buffers     cached
Mem:         48149      43948       4200          0          4         75
-/+ buffers/cache:      43868       4280
Swap:        38287          0      38287
Total:       86436      43948      42488
#

ดังที่แสดงด้านบน-/+ buffers/cache:บรรทัดแสดงว่าอัตราหน่วยความจำที่ใช้อยู่สูงมาก อย่างไรก็ตามจากผลลัพธ์ของtopฉันไม่เห็นกระบวนการใด ๆ ที่ใช้หน่วยความจำเกิน 100 MB

ดังนั้นสิ่งที่ใช้หน่วยความจำ

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28078 root      18   0  327m  92m  10m S    0  0.2   0:25.06 java
31416 root      16   0  250m  28m  20m S    0  0.1  25:54.59 ResourceMonitor
21598 root     -98   0 26552  25m 8316 S    0  0.1  80:49.54 had
24580 root      16   0 24152  10m  760 S    0  0.0   1:25.87 rsyncd
 4956 root      16   0 62588  10m 3132 S    0  0.0  12:36.54 vxconfigd
26703 root      16   0  139m 7120 2900 S    1  0.0   4359:39 hrmonitor
21873 root      15   0 18764 4684 2152 S    0  0.0  30:07.56 MountAgent
21883 root      15   0 13736 4280 2172 S    0  0.0  25:25.09 SybaseAgent
21878 root      15   0 18548 4172 2000 S    0  0.0  52:33.46 NICAgent
21887 root      15   0 12660 4056 2168 S    0  0.0  25:07.80 SybaseBkAgent
17798 root      25   0 10652 4048 1160 S    0  0.0   0:00.04 vxconfigbackupd

นี่คือเครื่อง x86_64 (ไม่ใช่เซิร์ฟเวอร์ทั่วไป) ที่ใช้งาน x84_64 Linux ไม่ใช่คอนเทนเนอร์ในเครื่องเสมือน เคอร์เนล ( uname -a):

Linux 2.6.16.60-0.99.1-smp #1 SMP Fri Oct 12 14:24:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

เนื้อหาของ/proc/meminfo:

MemTotal:     49304856 kB
MemFree:       4066708 kB
Buffers:         35688 kB
Cached:         132588 kB
SwapCached:          0 kB
Active:       26536644 kB
Inactive:     17296272 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:     49304856 kB
LowFree:       4066708 kB
SwapTotal:    39206624 kB
SwapFree:     39206528 kB
Dirty:             200 kB
Writeback:           0 kB
AnonPages:      249592 kB
Mapped:          52712 kB
Slab:          1049464 kB
CommitLimit:  63859052 kB
Committed_AS:   659384 kB
PageTables:       3412 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    478420 kB
VmallocChunk: 34359259695 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

dfรายงานว่าไม่มีการใช้หน่วยความจำจำนวนมากจากtmpfsระบบไฟล์


2
ผลลัพธ์ของps -eo pid,user,args,pmem --sort pmemอะไร
Braiam

วางลิงค์ที่นี่ลองสองสามครั้งได้ผลลัพธ์เดียวกัน
Jason

3
ห้ามใช้head! ฉันต้องการผลลัพธ์ที่สมบูรณ์ของคำสั่งทั้งหมด ถ้าฉันต้องการให้คุณใช้headฉันจะเอามันไปไว้ในคำสั่งของฉัน กรุณาเสมอให้ผลผลิตที่สมบูรณ์เพื่อคนถามคำสั่ง
Braiam

3
บนโทรศัพท์อย่าจดจำไวยากรณ์ที่อยู่ด้านบนของหัวของฉัน แต่ตรวจสอบหน่วยความจำที่ใช้ร่วมกัน sysv คำสั่งคือ ipcs ฉันคิดว่า
Derobert

5
คุณเคยพบทางออกสำหรับสิ่งนี้หรือไม่? - ฉันมีปัญหาคล้ายกันที่นี่: superuser.com/questions/793192/…
Hackeron

คำตอบ:


4

หน่วยความจำบน Linux อาจเป็นสัตว์ประหลาดที่วินิจฉัยและเข้าใจได้

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

กระบวนการใน Linux มีพื้นที่ที่อยู่เสมือนของตัวเอง (VIRT ในเอาต์พุตtop) ข้อมูลนี้มีข้อมูลทั้งหมดที่เกี่ยวข้องกับกระบวนการและสามารถพิจารณาได้ว่ากระบวนการ "ใหญ่" เป็นอย่างไร อย่างไรก็ตามมันเป็นเรื่องยากสำหรับหน่วยความจำทั้งหมดที่จะเป็นส่วนหนึ่งของแผนที่หน่วยความจำ "ของจริง" (RES ในผลลัพธ์ของtop) RES หรือหน่วยความจำแบบอาศัยคือข้อมูลที่เข้าถึงได้โดยตรงใน RAM ณ เวลานั้น ๆ จากนั้นยังมีหน่วยความจำที่แชร์ (SHR) อีกด้วย ที่สามารถแชร์ระหว่างหลายอินสแตนซ์ของกระบวนการเดียวกัน ดังนั้นหน่วยความจำที่ใช้โดยกระบวนการจะอยู่ที่จุดใดจุดหนึ่งในเวลา RES บวก SHR แต่ถ้ามีมากกว่าหนึ่งอินสแตนซ์ของกระบวนการโดยใช้หน่วยความจำที่ใช้ร่วมกันการใช้คือ RES บวก RES บวก RES ... บวก SHR

เหตุใดความแตกต่างระหว่าง RES และ VIRT แน่นอนถ้ากระบวนการมีบล็อกหน่วยความจำที่จัดสรรมันเป็นหน่วยความจำที่จัดสรรใช่ไหม? ไม่หน่วยความจำถูกจัดสรรในหน้าและหน้าสามารถเป็นได้ทั้งแบบแอ็คทีฟหรือไม่ใช้งาน สิ่งที่ใช้งานอยู่คือสิ่งที่อยู่ใน RES ไม่ใช้งานคือ "ส่วนที่เหลือ" พวกเขาสามารถผลักไปด้านหนึ่งเนื่องจากพวกเขาไม่ได้ถูกเข้าถึงในขณะนี้ นั่นหมายความว่าพวกเขาสามารถสลับไปยังดิสก์ได้หากหน่วยความจำแน่น แต่พวกเขาไม่เพียงตรงไปที่ดิสก์ ก่อนอื่นพวกเขานั่งในแคช คุณไม่ต้องการแลกเปลี่ยนตลอดเวลาดังนั้นจึงมีบัฟเฟอร์ระหว่างแอปพลิเคชันและพื้นที่สว็อป บัฟเฟอร์เหล่านั้นมีการเปลี่ยนแปลงอยู่ตลอดเวลาเนื่องจาก swapper เลือกกระบวนการที่แตกต่างในการดำเนินการและหน้าต่างๆจะทำงานและไม่ทำงาน และสิ่งที่เกิดขึ้นเป็นวิธีที่รวดเร็วสำหรับมนุษย์เพียงเพื่อให้ทัน

และด้านบนของทั้งหมดที่มีบัฟเฟอร์ดิสก์ หน่วยความจำที่ไม่ได้ใช้งานไม่เพียง แต่จะไปที่แคช แต่เมื่อแคชนั้นได้รับการสลับไปยังดิสก์ก่อนไปที่บัฟเฟอร์ดิสก์ที่จะเข้าคิวสำหรับการเขียน นั่นคือเลเยอร์ที่สองของแคชในการผสม และดิสก์บัฟเฟอร์เหล่านั้นยังถูกใช้โดยส่วนอื่น ๆ ของระบบสำหรับการบัฟเฟอร์ IO ทั่วไป ดังนั้นพวกเขาก็เปลี่ยนแปลงเช่นกัน

ดังนั้นสิ่งที่คุณเห็นในสิ่งต่าง ๆ เช่นtopและfreeอื่น ๆ เป็นภาพรวมทันทีของสถานะปัจจุบันของเครื่องหรือสถิติรวมในช่วงระยะเวลาหนึ่ง เมื่อถึงเวลาที่คุณอ่านข้อมูลมันล้าสมัยแล้ว

กระบวนการใดก็ตามสามารถเข้าถึงหน่วยความจำจำนวนมากได้ แต่ก็ไม่ค่อยมีเหตุผลที่จะทำเช่นนั้น มันไม่สามารถเข้าถึงหน่วยความจำทั้งหมดได้ในครั้งเดียวดังนั้นหน่วยความจำที่ยังไม่ได้ดูจะถูกย้ายไปที่แคชเว้นแต่ว่าจะมีการตั้งค่าสถานะเป็น "ล็อคในแกน" โดยเฉพาะ

ดังนั้นปริมาณของหน่วยความจำที่ "ใช้" โดยแอปพลิเคชันและปริมาณของหน่วยความจำที่ "มี" จึงเป็นสองสิ่งที่แตกต่างอย่างสิ้นเชิง พื้นที่ข้อมูลแอปพลิเคชั่นส่วนใหญ่นั้นอยู่ในแคชไม่ใช่ในหน่วยความจำ "คอร์" แต่เนื่องจากแคชอยู่ใน RAM เกือบตลอดเวลาจึงพร้อมใช้งานทันที นั่นคือถ้ามันถูกสลับไปยังดิสก์เมื่อมันต้องการ unswapping (ซึ่งอาจเร็วถ้ามันอยู่ในบัฟเฟอร์)

เนื่องจากลักษณะของสัตว์ร้ายที่มีความเร็วสูงและความจริงที่ว่าตัวเลขกำลังเปลี่ยนแปลงอยู่เสมอตัวเลขอาจเปลี่ยนไปส่วนหนึ่งผ่านการคำนวณสิ่งที่พวกเขาเป็นดังนั้นจึงเป็นไปไม่ได้ที่จะพูดว่า "นี่คือจำนวนหน่วยความจำที่ใช้" มุมมองของผู้ใช้ meminfo เป็นสแน็ปช็อตในเวลาที่เคอร์เนลให้มา แต่เนื่องจากเคอร์เนลที่กำลังทำงานอยู่นั้นจึงไม่จำเป็นต้องแสดงสถานะที่แท้จริงของการใช้หน่วยความจำในกระบวนการใดกระบวนการหนึ่งเนื่องจากไม่มีกระบวนการใดที่ทำงานอยู่ในขณะนั้น - ระหว่างกระบวนการ

อย่างที่ฉันบอกไปมันเป็นความสับสนอย่างมาก

แต่ในตอนท้ายของวันมันไม่สำคัญ สิ่งที่สำคัญไม่ใช่หน่วยความจำที่คุณมี "ฟรี" แต่มีพื้นที่สว็อปเท่าใดและคุณใช้พื้นที่สว็อปบ่อยแค่ไหน การสลับที่ทำให้ระบบช้าลงไม่ขาดหน่วยความจำ (แม้ว่าการขาดหน่วยความจำจะทำให้เกิดการแลกเปลี่ยนมากเกินไป) หากคุณมีหน่วยความจำที่ใช้แล้ว แต่คุณไม่ได้ใช้พื้นที่สว็อป (หรือน้อยมาก) ก็เป็นเรื่องปกติ หน่วยความจำว่างโดยทั่วไปนั้นไม่เป็นที่ต้องการและมักจะมีการเปลี่ยนผ่านอย่างหมดจดเพื่อใช้ในจุดประสงค์เดียว แต่ยังไม่ได้รับการจัดสรรสำหรับจุดประสงค์อื่น - เช่นเป็นหน่วยความจำแคชและเปลี่ยนเป็นดิสก์ แต่มันยังไม่ถูกใช้สำหรับสิ่งอื่นหรือเป็นบัฟเฟอร์ดิสก์บัฟเฟอร์ถูกล้างไปยังดิสก์ แต่ไม่มีแอปพลิเคชันใดร้องขอแคช


6
มันน่าสนใจจริงๆ แต่ไม่ตอบคำถามว่าทำไม OP ถึงสังเกตความคลาดเคลื่อนเฉพาะนี้
terdon

ฉันคิดว่าความแตกต่างที่แท้จริงเพียงอย่างเดียวอยู่ระหว่างความคาดหวังของ OP และสิ่งที่ Linux ให้ นั่นคือค่าที่ Linux มอบให้ไม่ได้เพิ่มขึ้นและนั่นเป็นเพราะพวกเขาเปลี่ยนไปแล้ว
Majenko

เนื่องจาก OP ดูเหมือนจะไม่เข้าใจคำถามที่เขาถามฉันไม่เห็นว่าจะเลือกคำตอบที่ "ถูกต้อง" ได้อย่างไร เราสามารถอธิบายวิธีการทำงานของระบบจนกระทั่งเราเป็นสีฟ้าในหน้า แต่ถ้าเขาล้มเหลวที่จะเข้าใจพื้นฐานเหล่านั้นและตระหนักว่าคำถามของเขาไม่มีความหมายจริง ๆ เราจะไม่มีคำตอบที่ "ถูก"
Majenko

ขอบคุณสำหรับการเขียนนี้ แต่โดยสุจริตฉันไม่ชอบน้ำเสียงไม่เชื่อเรื่องพระเจ้าที่อยู่เบื้องหลังมัน ฉันเห็นด้วยกับทฤษฎี "ภาพรวม" แต่ถ้าภาพรวมยังคงให้หมายเลขเดิมซึ่งบอกว่าการใช้ RAM สูงในขณะที่คุณไม่สามารถรู้ได้ว่าเกิดอะไรขึ้นคุณจะไม่อยากรู้
Jason

5
คุณควรโพสต์สิ่งนี้บนบล็อกของคุณ เป็นเรื่องดี แต่ไม่เกี่ยวข้องที่นี่ มีบางอย่างแปลก ๆ เกิดขึ้น (และฉันหมายถึงแปลก ๆ มาจากคนที่เข้าใจสิ่งที่คุณเขียน) เนื่องจาก VIRT ของกระบวนการไม่ได้คำนึงถึงการใช้ RAM ทั้งหมดและระบบไม่ได้สลับสับเปลี่ยนแม้จะมีแรงกดดัน
Gilles 'หยุดความชั่วร้าย'

0

นี่เป็นส่วนหนึ่งของคำตอบ:

มีความแตกต่างระหว่างสิ่งที่ถูกกำหนดเป็นหน่วยความจำ "ใช้แล้ว" (ในคำสั่ง "ฟรี") และ "หน่วยความจำที่จัดสรรให้กับกระบวนการ (ผู้ใช้) ที่ใช้งานอยู่" (ใน / proc / meminfo) ตกลงระบบของคุณจึงมีขนาดรวม 48149 MB (ประมาณ 47Gb)

หากคุณดูที่ / proc / meminfo ของคุณคุณจะเห็น: ไม่ได้ใช้งาน: 17296272 kB = (ประมาณ 16.5 Gb) - หน่วยความจำที่ไม่ได้ใช้งานอาจมาจากกระบวนการที่สิ้นสุดลง นอกจากนี้ยังสามารถเป็นหน่วยความจำที่ไม่ได้ใช้เป็นเวลานานโดยกระบวนการที่ใช้งานอยู่ หน่วยความจำไม่ "รอด" เพียงเพราะกระบวนการสิ้นสุดลง ทำไม? เพราะมันใช้งานได้มากกว่า อาจใช้หน้าหน่วยความจำเดียวกันอีกครั้งดังนั้นเคอร์เนล linux จะทิ้งข้อมูลไว้ในรายการ "ไม่ทำงาน" จนกว่ากระบวนการจะต้องการ

หน้านี้อธิบายบางอย่าง http://careers.directi.com/display/tu/Understanding+and+optimizing+Memory+utilization ; อ่านส่วนที่เกี่ยวกับ PFRA (อัลกอรึทึมการเรียกคืนเฟรมหน้า) ที่ใช้โดยเคอร์เนล Linux: "หน้าเว็บที่รวมอยู่ในแคชของดิสก์และหน่วยความจำที่ไม่ได้อ้างอิงโดยกระบวนการใด ๆ ควรเรียกคืนก่อนที่หน้าต่างๆ หมายถึงย้ายพวกเขาออกจาก "ใช้แล้ว" (ไม่ได้ใช้งาน + ใช้งาน) และเป็น "ฟรี"

สิ่งนี้จะอธิบายการจัดการหน่วยความจำโดยละเอียดเพิ่มเติม: วิธีการใช้งานและรายการที่ไม่ทำงานและการย้ายหน้าเว็บระหว่างพวกเขาhttps://www.cs.columbia.edu/~smb/classes/s06-4118/l19.pdf

ฉันเชื่อว่ายังมีหน่วยความจำที่ใช้โดยเคอร์เนลสำหรับโครงสร้างข้อมูลและสิ่งนี้แสดงเป็น "slab 1049464 kb" (~ 1 GB) ฉันเชื่อ แต่ไม่ได้เป็นบวกที่นับแยกกัน


เพียงแค่ต้องการที่จะเพิ่มที่ในอดีตที่ผ่านมาฉันมีประสบการณ์กับระบบที่หน่วยความจำไม่เพียงพอเนื่องจากโปรแกรมที่เขียนไม่ดีที่จัดสรรส่วนหน่วยความจำที่ใช้ร่วมกัน แต่ไม่ได้ปล่อยพวกเขา เซ็กเมนต์หน่วยความจำที่ใช้ร่วมกันยังคงอยู่แม้ว่ากระบวนการทั้งหมดที่ใช้จะไม่ทำงาน นี่ไม่ใช่ Linux แต่ก็อาจเป็นจริงใน linux ด้วย ตามที่กล่าวไว้ข้างต้นดู ipcs สำหรับข้อมูลเกี่ยวกับเรื่องนี้ เห็นmakelinux.net/alp/035มันบอกว่าคุณต้องจัดสรรคืนหน่วยความจำอย่างชัดเจน
ssl

1
ฉันไม่เข้าใจทุกอย่างที่คำตอบของคุณเป็น แต่“ หน่วยความจำที่ไม่ได้ใช้งานอาจมาจากกระบวนการที่สิ้นสุดลง” นั้นผิดแน่นอน หน่วยความจำของ Userland มีสองรสชาติ: การทำแผนที่หรือไม่ระบุชื่อ หน่วยความจำที่แมปสามารถเรียกคืนได้เนื่องจากข้อมูลสามารถโหลดซ้ำได้จากไฟล์ หน่วยความจำที่ไม่ระบุชื่อสามารถเรียกคืนได้หากมีการสลับออก หน่วยความจำที่ไม่ได้ใช้งานคือหน่วยความจำที่เหมาะสมสำหรับการเรียกคืน อย่างไรก็ตามเนื้อหาจะต้องอยู่ในไฟล์หรือสลับที่ใดที่หนึ่งเนื่องจากหน่วยความจำนั้นยังใช้งานอยู่ เมื่อกระบวนการตายลงหน่วยความจำจะว่างและไม่มีการใช้งาน + ไม่ได้ใช้งานอีกต่อไป
Gilles 'หยุดความชั่วร้าย'

1
การอ้างอิงบางอย่าง: สิ่งใดที่สามารถเพิ่มหน่วยความจำที่ไม่ได้ใช้งานและวิธีเรียกคืนได้ บน Server Fault เก่า แต่ส่วนใหญ่ยังคงบังคับเคล็ดลับจาก Red Hat และบทความโดย Bhavin Turakhia ที่คุณอ้างเช่นกัน มันไม่ชัดเจนเกี่ยวกับเรื่องนี้ แต่อธิบายเกี่ยวกับหน้าเว็บที่ไม่ระบุชื่อและที่แมปในหัวข้อ“ การทำความเข้าใจกับ PFRA”
Gilles 'หยุดความชั่วร้าย'

ฉันมีความคิดเกี่ยวกับหน้าเว็บที่ไม่ใช้งานซึ่งไม่ได้อ้างถึงโดยกระบวนการจากบทความนี้: kernel.org/doc/gorman/html/understand/understand013.html แม้ว่าฉันคิดว่ามันอาจเป็นหน้าเว็บที่เป็นอิสระจากกระบวนการที่ยังทำงานอยู่ ส่วน "การเรียกคืนหน้าจากรายการ LRU"
ssl

แต่อาจเป็นไปได้ว่าหมายถึงหน้าในการแลกเปลี่ยนแคช?
ssl

-2

คุณใช้ NFS หรือเปล่า?
มันอาจจะมีมูลค่าการทำงานslabtop -oทางใดทางหนึ่งที่nfs_inode_cacheจะได้รับจากมือ


-4

รูปที่คุณควรดูคือswap ใช้ในผลลัพธ์ของคุณที่ "0" ซึ่งหมายความว่าคุณยังไม่หมด RAM ตราบใดที่ระบบของคุณไม่เปลี่ยนหน่วยความจำคุณไม่ควรกังวลกับตัวเลขอื่น ๆ ซึ่งยากต่อการตีความ

แก้ไข: ตกลงดูเหมือนว่าคำตอบของฉันถูกพิจารณาว่าเป็นความลับมากกว่าที่จะกระชับ ขอผมทำอย่างละเอียด

ฉันเดาว่าปัญหาหลักที่นี่คือการตีความผลลัพธ์ของ top / ps ซึ่งไม่แม่นยำมาก เช่นการใช้งานหลายครั้งของไลบรารีที่แบ่งใช้แบบเดียวกันจะไม่ถูกคำนวณอย่างที่คุณคาดหวังดูตัวอย่างเช่นhttp://virtualthreads.blogspot.ch/2006/02/understanding-memory-usage-on-linux.html

อย่างไรก็ตามความถูกต้องตายคืออะไรหากขนาดการแลกเปลี่ยนมีค่าเป็นศูนย์แน่นอนกว่าระบบของคุณไม่ได้มีหน่วยความจำไม่เพียงพอ (ยัง) แน่นอนว่าเป็นคำสั่งที่แน่นอนมาก แต่สำหรับการทำโปรไฟล์การใช้งานหน่วยความจำจริงของคุณระบบ top จะไม่เป็นสิ่งที่ถูกต้อง (และถ้าคุณดูที่ด้านบนอย่างน้อยเรียงลำดับผลลัพธ์สำหรับ virt หรือ% mem.)

ดูเพิ่มเติมที่ http://elinux.org/Runtime_Memory_Measurement


1
คุณไม่ควรกังวลหากระบบของคุณกำลังทำการสลับเช่นกันนั่นเป็นเรื่องปกติ คุณควรกังวลหากระบบของคุณแลกเปลี่ยนบ่อยเกินไป (ซึ่งไม่ใช่สิ่งเดียวกันกับการใช้พื้นที่สว็อปขนาดใหญ่) ความจริงที่ว่า swap ที่ใช้คือ 0 นั้นแปลกอยู่ในตัวเองพร้อมหน่วยความจำฟิสิคัลเล็ก ๆ น้อย ๆ
Gilles 'หยุดความชั่วร้าย'

เอาท์พุทของเขาบ่งชี้ว่าระบบของเขาไม่ได้แลกเปลี่ยนเลย นั่นคืออัตราการแลกเปลี่ยนที่ดีที่สุดแน่นอน ฉันไม่ได้บอกว่าขนาดสว็อปเล็ก ๆ เป็นสิ่งที่ดี แต่ขนาดที่แน่นอนคือ และตราบใดที่ระบบไม่ได้ใช้หน่วยความจำว่างจริง ๆ แล้วทำไมมันจึงควรเริ่มทำการแลกเปลี่ยน
Echsecutor

ไม่การไม่มีการแลกเปลี่ยนอยู่ไกลจากความเหมาะสม ควรเปลี่ยนหน่วยความจำของโปรแกรมที่ไม่ได้ใช้งานในขณะนี้เพื่อให้มีที่ว่างสำหรับดิสก์แคชสำหรับไฟล์ที่ใช้บ่อย ในฐานะที่เป็นบิตที่คุณเพิ่งเพิ่มเกี่ยวกับการส่งออกของfreeผมคิดว่าคุณหมายถึงtop- แต่แล้วแม้ผลรวมเท่านั้นที่สามารถจะมากขึ้นกว่ารวม (เพราะหน่วยความจำที่ใช้ร่วมกันจะถูกนับหลายครั้ง) ไม่น้อย
Gilles 'ดังนั้นหยุดความชั่วร้าย'

คุณหมายถึงอะไรโดยผลรวมจะมากไม่น้อย? ด้านบนแสดงกระบวนการที่พอดีกับหน้าจอเป็นอย่างมากฉันค่อนข้างแน่ใจว่าข้างต้นไม่ใช่กระบวนการที่กำลังทำงานทั้งหมดดังนั้นพวกเขาจึงไม่ได้เรียงตามการใช้หน่วยความจำชิ้นส่วนของผลลัพธ์นั้นค่อนข้างไร้ประโยชน์สำหรับคำถาม 'สิ่งที่ใช้หน่วยความจำ' .
Echsecutor

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