ตัวนับหน่วยความจำที่แตกต่างกันใน FreeBSD หมายถึงอะไร


20

ด้านบนบอกฉัน:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free

มูนินแสดงสิ่งนี้ให้ชัดเจนยิ่งขึ้น:

การใช้งานหน่วยความจำ rtr1 ต่อปี

อย่างที่คุณเห็นเซิร์ฟเวอร์มี RAM ประมาณ 8GB ฉันสงสัยว่าฉันสามารถยัดสัตว์ร้ายตัวนี้ลงในเซิร์ฟเวอร์ 2GB ขนาดเล็กได้หรือไม่ ตอนนี้ฉันรู้ว่าความหมายของบัฟเฟอร์และอะไรที่ใช้งานได้ฉันคิดว่า แต่ฉันเป็นห่วงเกี่ยวกับ blobs "แบบใช้สาย" และ "ไม่ทำงาน" สิ่งเหล่านั้นไม่ได้แมปกับกระบวนการใด ๆ ที่มีอยู่เท่าที่ฉันรู้

สังเกตว่าบรรทัด "สีเขียว" ที่ใช้งานอยู่เพิ่มขึ้นในเดือนธันวาคม: นั่นคือตอนที่เราเริ่มใช้ BGP daemon บนเราเตอร์นี้ ฉันไม่เข้าใจสิ่งที่เกิดขึ้นในเดือนเมษายนและพฤษภาคม แต่ฉันจำได้ว่าทำการอัปเกรดระบบและเปลี่ยนเป็นpkgng ในช่วงเวลานั้น

นี่คือเราท์เตอร์สำรองสำหรับอันแรกโดยมี ram น้อยกว่า (4GB):

การใช้งานหน่วยความจำ rtr0 ต่อปี

ดูเหมือนว่าอันนี้ใช้งานได้ดีกับ RAM ครึ่งหนึ่งและยังเหลืออยู่ประมาณ 2GB ฟรีซึ่งทำให้ฉันเชื่อว่าฉันสามารถเปลี่ยนเป็นกล่อง 2GB สำหรับเซิร์ฟเวอร์นี้ลดค่าใช้จ่ายและบำรุงรักษา ...

ข้อเสนอแนะใด ๆ ตัวนับหน่วยความจำต่าง ๆ ที่แสดงด้านบนหมายความว่าอย่างไร โดยเฉพาะอย่างยิ่งสิ่งที่ทำ:

  • คล่องแคล่ว
  • เฉื่อยชา
  • ขุมทรัพย์
  • บัฟเฟอร์
  • อินเทอร์เน็ตแบบใช้สาย
  • ฟรี

... หมายถึงจริงเหรอ? ฉันพบบางโพสต์ที่อธิบายถึงบิตของระบบย่อย VM และฉันจำได้ว่ามี "ah-ah!" เดี๋ยวเข้าใจทั้งหมดนี้ประมาณ 12 ปีที่แล้ว แต่ฉันลืม :) แม้แต่ FreeBSD ที่ซื่อสัตย์คู่มือก็ไม่สามารถตอบคำถามของฉัน ...

ฉันสามารถลดระดับเป็น 2GB ได้หรือไม่


นี่เป็นรุ่น Linux ของคำถามนี้ (อธิบายfreeคำสั่งจากprocps ): linux - การใช้งานหน่วยความจำจริง
Adam Katz

คำตอบ:


25
  • Active: หน่วยความจำกำลังถูกใช้โดยกระบวนการ
  • Inactive: หน่วยความจำที่ได้รับการปล่อยให้เป็นอิสระ แต่ยังคงถูกแคชเนื่องจากอาจใช้งานได้อีกครั้ง หากFreeจำเป็นต้องใช้หน่วยความจำเพิ่มเติมหน่วยความจำนี้สามารถล้างและว่างได้ หน่วยความจำนี้ไม่ได้ถูกล้างออกก่อนที่จะต้องใช้เพราะ "หน่วยความจำว่างเสียหน่วยความจำ" จึงไม่เสียค่าใช้จ่ายใด ๆ ในการเก็บข้อมูลเก่าไว้ในกรณีที่จำเป็นต้องใช้อีกครั้ง
  • Wired: หน่วยความจำที่ใช้งานโดยเคอร์เนล ไม่สามารถสลับหน่วยความจำนี้ได้
  • Cache: หน่วยความจำที่ใช้ในการแคชข้อมูลสามารถปลดปล่อยได้ทันทีหากจำเป็น
  • Buffers: แคชดิสก์
  • Free: หน่วยความจำที่ว่างและพร้อมใช้งานอย่างสมบูรณ์ Inactive, CacheและBuffersจะกลายเป็นฟรีหากพวกเขาได้รับการทำความสะอาดขึ้น

ดังนั้นคุณสามารถเพิ่มจำนวนInactiveของคุณFreeและพิจารณาว่ามันไม่ได้ใช้ Wiredคือหน่วยความจำที่ใช้โดยเคอร์เนลซึ่งรวมถึงสแต็กเครือข่าย การทำงานnetstat -mจะทำให้คุณสรุปการใช้หน่วยความจำโดยสแต็กเครือข่าย

จากกราฟของคุณนอกเหนือจากการกระโดดในwiredหน่วยความจำที่เกี่ยวข้องเมื่อต้นเดือนมีนาคมใช่คุณควรจะสามารถเรียกใช้เวิร์กโหลดนั้นบน RAM 2GB หากคุณลองใช้ i386 แทน amd64 เนื่องจากการจัดสรรหน่วยความจำแต่ละรายการจะใช้พื้นที่น้อยลงเนื่องจากพอยน์เตอร์จะเป็น 32 บิตแทนที่จะเป็น 64 บิต


1
หน่วยความจำ 'ไม่ใช้งาน' "ไม่สามารถจัดสรรให้กับกระบวนการอื่นได้" ดังนั้นจึงไม่ควรพิจารณาว่าเป็น 'ไม่ได้ใช้' ดูwiki.freebsd.org/Memory
humbads

1
ตัวนับ 'ไม่ทำงาน' ถูกแบ่งออกเป็น 2 รายการแยกต่างหากใน FreeBSD รุ่นใหม่ 'ไม่ใช้งาน' และ 'ซักอบรีด' (หน่วยความจำที่ยังต้องล้างเพื่อสลับหรือดิสก์ก่อนที่จะสามารถปล่อย) คำอธิบายเพิ่มเติมที่นี่: lists.freebsd.org/pipermail/freebsd-arch/2016- พฤศจิกายน 2016/
Allan Jude
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.