Ubuntu 26.10 ปรับกลไกจัดการ RAM ปิดแค่แอปแทนการล่มทั้งระบบ
Ubuntu 26.10 กำลังเปลี่ยนแปลงกลไกการสั่งปิดการทำงานของระบบเมื่อหน่วยความจำ (RAM) หมดลง โดยนโยบายใหม่จะเลือก ปิดแอปพลิเคชันก่อน ขณะที่บริการหลักที่ยึดโยงเซสชันจะถูกจัดลำดับไว้เป็นกลุ่มสุดท้ายที่จะถูกปิด โดยมีการปรับค่า OOM score ของบริการสำคัญ 39 รายการ รวมถึง GNOME Shell และ D-Bus ไปที่ -500
การปรับเปลี่ยนนี้ช่วยให้บริการดังกล่าวมีโอกาสน้อยลงมากที่จะถูกเลือกโดย kernel's OOM killer เพื่อยุติการทำงาน ในทางกลับกัน แอปพลิเคชันที่ใช้หน่วยความจำสูงอย่างเว็บเบราว์เซอร์จะกลายเป็นตัวเลือกแรกๆ ที่ถูกกำจัดแทน เพื่อรักษาภาพรวมของระบบให้ยังทำงานต่อไปได้
นอกจากนี้ Canonical ยังได้ปิดการทำงานของ systemd-oomd check ที่มักทำให้เซสชันของผู้ใช้ดับลงทั้งหมดเมื่อเกิดสภาวะแรงกดดันด้านหน่วยความจำ (memory pressure) โดยนโยบายใหม่นี้ถูกนำมาใช้ใน ubuntu-settings 26.10.1 และเผยแพร่ลงในพื้นที่เก็บข้อมูลของ 26.10 เรียบร้อยแล้ว
Kernel มองเห็นอะไร?
ภายใต้สภาวะหน่วยความจำตึงตัว Kernel จะสร้างรายการกระบวนการ (process) ทั้งหมดและให้คะแนนตามปริมาณหน่วยความจำที่ใช้ จากนั้นจะนำตัวเลขจาก user-space มาบวกเพิ่ม ซึ่ง Ubuntu สามารถปรับค่านี้ได้ตั้งแต่ -1000 ถึง 1000 โดยการตั้งค่าให้อยู่ในระดับต่ำจะช่วยให้กระบวนการนั้นรอดพ้นจากการถูกสั่งปิด
รายงานก่อนหน้านี้ จาก Canonical ระบุว่าบนเดสก์ท็อป Ubuntu 24.10 บริการหลักอย่าง GNOME Shell และ Firefox มีค่าคะแนนอยู่ที่ 100 เท่ากัน ซึ่งอาจทำให้ระบบเลือกปิดตัวใดตัวหนึ่งอย่างไม่เหมาะสม ขณะที่ระบบเบื้องหลังอย่าง dbus-daemon มีค่าต่ำถึง -900 อยู่แล้ว
ปัญหาที่พบคือในบางกรณี OOM killer กลับไปเลือกปิดแอปพลิเคชันขนาดเล็กอย่าง gnome-characters แทนที่จะจัดการกับตัวต้นเหตุที่ใช้ทรัพยากรมหาศาล เช่น Virtual Machines ส่งผลให้การจัดการพลังงานและทรัพยากรไม่มีประสิทธิภาพเท่าที่ควร
คะแนนเป็นเพียงแค่ครึ่งเดียวของเรื่องนี้
Kernel ไม่ใช่กลไกเดียวที่สั่งปิดกระบวนการได้ เพราะยังมี systemd-oomd ที่เฝ้าดูแรงกดดันหน่วยความจำและทำงานได้เร็วกว่าโดยไม่สนใจคะแนน OOM เดิมที Ubuntu ตั้งค่าให้ระบบสั่งปิด session ทันทีเมื่อเกิดแรงกดดันถึง 50% ทำให้การปรับค่า -500 เพียงอย่างเดียวอาจไม่เพียงพอ
แพตช์ ubuntu-settings ตัวเดียวกันนี้ จึงเข้าไปจัดการส่วนของ oomd ด้วยการเปลี่ยนค่า ManagedOOMMemoryPressure เป็น auto แทนการสั่ง kill แบบเดิม ซึ่งผลการทดสอบของ Canonical พบว่าช่วยลดอัตราการล่มของเซสชันจาก 7 ใน 10 ครั้ง จนไม่เหลืออาการล่มเลยหลังการแก้ไข
ต้องการลองใช้หรือไม่?
ผู้ที่สนใจสามารถทดสอบพฤติกรรมใหม่นี้ได้ใน development release ของ Ubuntu โดย Canonical กำลังเปิดรับผลการทดสอบจากผู้ใช้งานที่มี RAM หรือ swap น้อยภายใต้เวิร์กโหลดหนักๆ
หากพบพฤติกรรมผิดปกติ เช่น แอปปิดตัวกะทันหันเกินไปหรือเซสชันค้าง สามารถแจ้งรายงานปัญหาได้ที่ Launchpad เพื่อช่วยพัฒนาให้ระบบมีความเสถียรสูงสุดก่อนการเปิดตัวจริง
ความคิดเห็น (0)
เข้าสู่ระบบเพื่อร่วมแสดงความเห็น
สมัครสมาชิกมาเป็นคนแรกที่แสดงความเห็นกันเลยโบร
