ดิสทริบิวชัน GNU / Linux ทั้งหมดที่ฉันทดสอบมีปัญหาว่าเมื่อใดก็ตามที่หน่วยความจำเต็มและระบบเริ่มทำการแลกเปลี่ยนส่วนติดต่อผู้ใช้แบบเดสก์ท็อปและกราฟิกทั้งหมดไม่ตอบสนองเหมือนนรกจนบางครั้งฉันต้องรอประมาณ 5-10 วินาที ต้องย้ายเมาส์ที่มีอยู่จริงจนกว่าตัวชี้เมาส์จะเคลื่อนไหวจริง
นี่เป็นพฤติกรรมที่น่ารำคาญโดยเฉพาะในระบบที่มี RAM ต่ำ
มีวิธีใดบ้างที่จะให้แอปพลิเคชั่น / งานบางอย่างเช่นสภาพแวดล้อมเดสก์ท็อป ฯลฯ มีความสำคัญสูงกว่าที่จะอยู่ใน RAM มากกว่าแอปพลิเคชันอื่น ๆ ดังนั้นแอปพลิเคชันที่ใช้หน่วยความจำทั้งหมด
แก้ไข: ฉันกำลังพูดถึงกรณีที่มีการใช้ RAM ทั้งหมดดังนั้นมันจะเริ่มการแลกเปลี่ยนหากไม่ได้ปิดใช้งาน (ฉันไม่ต้องการให้กระบวนการถูกสุ่มฆ่า) ฉันมีปัญหานี้ไม่เพียง แต่ในสภาพแวดล้อม ram ต่ำ แต่เช่นกันกับ ram 8GiB บนเครื่องเดสก์ท็อปของฉันส่วนหนึ่งเนื่องจาก VMs จำนวนมากส่วนหนึ่งเนื่องจากหน่วยความจำรั่ว ZRAM ไม่ใช่วิธีการแก้ปัญหาอย่างใดอย่างหนึ่งเนื่องจากเป็นเพียงการหน่วงปัญหา ทางออกเดียวที่ฉันนึกถึงสำหรับปัญหานี้คือยูทิลิตี้ userpace หรือ kernel API ที่อนุญาตให้ป้องกันการสลับงานบางงานหรืออย่างน้อยก็ทำให้เป็นไปได้ยากมาก ไม่มีใครรู้วิธีการแก้ปัญหาอื่นหรือรู้อะไรเกี่ยวกับเครื่องมือหรือ API ดังกล่าวในการดำรงอยู่หรือการวางแผน?
แก้ไขครั้งที่สอง: ulatencydดูเหมือนจะไม่ทำงานกับ systemd รุ่นใหม่กว่าตามhttps://aur.archlinux.org/packages/ulatencyd-git/และhttps://wiki.archlinux.org/index.php/Ulatencyd . อาจเป็นเพราะ systemd เข้าควบคุมกลุ่ม cg อย่างเต็มรูปแบบจากเปอร์สเปคทีฟของผู้ใช้หากฉันเข้าใจอย่างถูกต้อง
cgroup_enable=memory swapaccount=1
บนบรรทัดคำสั่งเคอร์เนลโปรดทราบว่านี่มีต้นทุนประสิทธิภาพเล็กน้อย) ตัวอย่างการดำเนินงาน: ulatencyd