Linux swapiness - การปรับการตั้งค่า Kernel VM


9

ก่อนที่คุณจะอ่านโปรดทราบว่าฉันเข้าใจถึงประโยชน์ของการแคช ฉันคุ้นเคยกับหลักคำสอนที่ว่า ram ที่ไม่ได้ใช้จะเสีย ram

คำถามนี้เป็นคำถามที่ฉันได้ดัดแปลงมาจากคำถามก่อนหน้านี้:

การลบ ram ของแคชลินุกซ์

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

ฉันต้องการตรวจสอบว่าคุณมีประสบการณ์ในการปรับค่าเริ่มต้น 60 ในไฟล์ต่อไปนี้หรือไม่ (เกิดขึ้นกับเซิร์ฟเวอร์ Ubuntu):

/proc/sys/vm/swappiness  

และถ้าเป็นเช่นนั้นคุณเห็นอะไรบ้างที่มีผลกระทบ หากฉันแทนที่ค่าเริ่มต้นที่ 60 ด้วย 30 ฉันจะเห็นการแลกเปลี่ยนน้อยลงและใช้แคชเก่ามากขึ้นหรือไม่ ฉันจะเข้าใกล้ 0 หรือ 100 เพื่อลดการแลกเปลี่ยนและเพิ่มการใช้แคชซ้ำหรือไม่

ในที่สุดทุกคนรู้ว่าทำไมค่าเริ่มต้นถูกตั้งค่าเป็น 60?

หมายเหตุ: หากใกล้ถึง 0, Linux จะต้องการเก็บแอปพลิเคชันไว้ใน RAM และไม่เพิ่มแคช หากใกล้ถึง 100 ลีนุกซ์จะต้องการสลับแอปพลิเคชั่นออกและขยายแคชให้มากที่สุด ค่าเริ่มต้นคือ 60 ที่ดีต่อสุขภาพ - ขอบคุณสำหรับลิงค์ด้านล่างนี้คือ 3dInfluence

คำตอบ:


6

แก้ไข: เขียนคำตอบใหม่เพื่อให้สั้นลงและชัดเจนขึ้นฉันหวังว่า :)

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

มากกว่าคำถามของคุณ Swappiness ควบคุมเมื่อระบบย่อย VM ทำการเรียกคืนหน้าตารางกระบวนการโดยการถอดและแยกหน้าออกเป็นการสลับ Tunable นี้ทำงานได้โดยแจ้งให้ระบบย่อย VM ค้นหาหน้าเพื่อแลกเปลี่ยนเมื่อ% ของหน่วยความจำที่แมปกับประมวลผลหน้าตาราง + ค่า swappiness คือ> 100 ดังนั้นการตั้งค่าที่ 60 จะทำให้ระบบเริ่มต้นเพจเก่าออกจากหน้ากระบวนการ ตารางเมื่อใช้มากกว่า 40% ของหน่วยความจำระบบของคุณ หากคุณต้องการอนุญาตให้โปรแกรมของคุณใช้หน่วยความจำเพิ่มเติมโดยใช้แคชคุณจะต้องลดค่า swappiness คุณจะต้องดู / proc / sys / vm / min_free_kbytes และ / proc / sys / vm / vfs_cache_pressure ด้วย เช่นนี้จะควบคุมจำนวนหน่วยความจำที่ถูกสงวนไว้และความมั่นใจในการแคช


@ 3dinfluence - ฉันได้ทำงานผ่านบทความที่คุณอ้างถึงข้างต้น ความช่วยเหลือที่ยอดเยี่ยม!
Patrick R

1
linuxinsight.com/proc_sys_vm_hierarchy.htmlจะให้ประโยคหนึ่งหรือสองประโยคแก่คุณเกี่ยวกับสิ่งที่ปรับได้แต่ละอย่าง แต่ฉันได้รับข้อมูลว่า swappiness ทำงานอย่างไรจากหนังสือที่ชื่อว่า "การปรับแต่งประสิทธิภาพสำหรับเซิร์ฟเวอร์ Linux"
3dinfluence

+1 ขอบคุณ 3dinfluence จนถึงตอนนี้หนังสือเล่มนั้นได้รับการศึกษาอย่างมาก
Patrick R

เยี่ยมมาก .... คุณสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันของคุณหรือไม่
3dinfluence

ฉันสามารถปรับปรุงประสิทธิภาพได้แล้ว นอกจากนี้ฉันค้นพบว่าคำสั่งต่อไปนี้จะช่วยในระหว่างการ tweeking: # sysctl -w vm.swappiness = 40
Patrick R
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.