ฉันต้องการปิดการแลกเปลี่ยนสำหรับกระบวนการเดียวเท่านั้น Swap ควรทำงานได้ตามปกติสำหรับกระบวนการอื่น
ฉันจะใช้สิ่งนี้กับกลุ่ม cg ได้อย่างไร
ฉันต้องการปิดการแลกเปลี่ยนสำหรับกระบวนการเดียวเท่านั้น Swap ควรทำงานได้ตามปกติสำหรับกระบวนการอื่น
ฉันจะใช้สิ่งนี้กับกลุ่ม cg ได้อย่างไร
คำตอบ:
จากเอกสารเกี่ยวกับเคอร์เนลที่เกี่ยวข้องกับ memory.swappiness:
5.3 swappiness
คล้ายกับ / proc / sys / vm / swappiness แต่มีผลกับลำดับชั้นของกลุ่มเท่านั้น
ไม่สามารถเปลี่ยน swappiness ของ cgroups ได้
- root cgroup (ใช้ / proc / sys / vm / swappiness)
- cgroup ซึ่งใช้ลำดับชั้นและมี cgroup อื่น ๆ ด้านล่าง
- กลุ่ม cgroup ที่ใช้ลำดับชั้นไม่ใช่รากของลำดับชั้น
จากพอร์ทัลลูกค้า Red Hat:
memory.swappiness
ตั้งค่าแนวโน้มของเคอร์เนลเพื่อสลับหน่วยความจำกระบวนการที่ใช้โดยงานในกลุ่มนี้แทนการเรียกคืนหน้าจากแคชหน้า นี่เป็นแนวโน้มเดียวกันที่คำนวณในแบบเดียวกันตามที่กำหนดไว้ใน / proc / sys / vm / swappiness สำหรับระบบโดยรวม ค่าเริ่มต้นคือ 60 ค่าที่ต่ำกว่า 60 ลดแนวโน้มของเคอร์เนลในการสลับหน่วยความจำกระบวนการค่าที่มากกว่า 60 เพิ่มแนวโน้มของเคอร์เนลเพื่อสลับหน่วยความจำกระบวนการและค่าที่มากกว่า 100 อนุญาตให้เคอร์เนลสลับเพจที่เป็นส่วนหนึ่งของ พื้นที่ที่อยู่ของกระบวนการใน cgroup นี้
โปรดทราบว่าค่า 0 ไม่ได้ป้องกันการสลับหน่วยความจำของกระบวนการ การสลับออกอาจยังคงเกิดขึ้นเมื่อหน่วยความจำระบบไม่เพียงพอเนื่องจากตรรกะการจัดการหน่วยความจำเสมือนส่วนกลางไม่อ่านค่า cgroup หากต้องการล็อกหน้าทั้งหมดให้ใช้ mlock () แทน cgroups
:: คุณไม่สามารถเปลี่ยน swappiness ของกลุ่มต่อไปนี้:
* root cgroup ซึ่งใช้ swappiness set ใน / proc / sys / vm / swappiness
* cgroup ที่มีกลุ่มย่อยด้านล่าง
แก้ไข: หากคุณสนใจที่จะรู้วิธีการตั้งค่าอย่างแน่นอนคุณจะต้องตั้งค่าเหมือนกับแอตทริบิวต์ cgroup อื่น ๆ :
# cd /mnt/cgroup/<cgroupName>
# cat memory.swappiness
60
# echo "59 " > memory.swappiness
# cat memory.swappiness
59
/tmp
เมานท์จะเป็นtmpfs
อย่างไร? unix.stackexchange.com/q/146490/56970