บางครั้งฉันทำงานกับข้อมูลจำนวนมากที่ฉันต้องการเก็บไว้ในหน่วยความจำเพื่อการประมวลผล บางครั้งฉันคาดคะเนจำนวนหน่วยความจำที่โปรแกรมของฉันจะสร้างหรือดีบักเกอร์คูณการใช้หน่วยความจำด้วยปัจจัยที่เกินกว่าหน่วยความจำที่มีอยู่ของฉัน
เมื่อใดก็ตามที่ฉันเริ่มกระบวนการหิวความจำนี่คือสิ่งที่ฉันคาดหวังจากระบบปฏิบัติการที่มีสติ: ลองกินหน่วยความจำฟรีทั้งหมดแล้วถามกระบวนการที่ไม่จำเป็นอื่น ๆ เพื่อเลิกความทรงจำที่พวกเขาไม่ต้องการ เขียนเพื่อแลกเปลี่ยน
นี่คือสิ่งที่ Ubuntu ทำเพื่อฉัน: กินหน่วยความจำ fre ทั้งหมดแล้วขอให้ระบบปฏิบัติการแลกเปลี่ยนบริการที่จำเป็นทั้งหมด (เซสชัน gnome, terminal, keyboard) จากนั้นหยุดและรอให้ฉันดึงปลั๊กไฟ
สองคำถาม:
- ระบบปฏิบัติการสามารถสันนิษฐานได้อย่างไรว่าสิ่งใดที่สำคัญเกินกว่าที่จะหยุดฟังอินพุตของผู้ใช้ได้
- ฉันจะบอก Ubuntu ได้อย่างไรว่าจะไม่ต้องแลกเปลี่ยนบริการที่จำเป็นและตอบสนองต่ออินพุตของผู้ใช้เสมอแม้ว่ากระบวนการโง่ ๆ บางอย่างจะพยายามกินทรัพยากรมากกว่าที่ระบบจัดไว้ให้
swappiness
ตั้งค่าเป็น 10 เช่น: vm.swappiness = 10
ใน /etc/sysctl.conf ค้นหาที่นี่เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ 2) ถ้า swappiness ไม่ช่วย ... แม้ว่าคุณอาจไม่ต้องการ ... เพิ่มขนาดของ swapfile ของคุณเป็น 1.5x16G และดูว่ามันช่วยได้หรือไม่ ให้ฉันโพสต์ ไชโยอัล
vm.swappiness=10
ต้องเพิ่มไปยัง sysctl.conf บุคคลที่มีประสบการณ์สามารถใช้คำสั่ง sysctl ได้ทันทีเพื่อตั้งค่า vm.swappiness = 10 โดยไม่ต้องแก้ไขไฟล์ sysctl.conf ไชโยอัล ps: รอ OP เพื่อตอบสนอง
swapon
เพื่อค้นหา) ไชโยอัล