3
เป็นไปได้หรือไม่ที่จะกำหนดขีด จำกัด แบบนุ่มนวลบางอย่างเกี่ยวกับการใช้หน่วยความจำของกระบวนการ?
ฉันคิดว่ามันไม่ใช่ปัญหาที่ผิดปกติ: กระบวนการหนึ่งจัดสรรหน่วยความจำจำนวนมาก (ไม่ว่าจะเกิดจากข้อผิดพลาดของหน่วยความจำรั่วเพราะคุณพยายามประมวลผลไฟล์อินพุตที่มีขนาดใหญ่หรืออะไรก็ตาม) RAM เต็มและบางจุด Linux ต้องสลับเพื่อสลับ ทีนี้บางครั้งมันก็เป็นทางเลือกสุดท้าย: ถ้าฉันมีการคำนวณราคาแพงฉันไม่ต้องการที่จะสูญเสียข้อมูลถ้าในตอนท้ายฉันหมด RAM อย่างไรก็ตามบ่อยครั้งกว่า (ในประสบการณ์ของฉัน) การใช้หน่วยความจำไม่ได้ จำกัด โดยการโกงอาจกระบวนการรถ นั่นคือฉันไม่ได้จบลงด้วยข้อมูลที่ต้องการน้อยกว่าที่ถูกย้ายไปสับเปลี่ยน แต่ระบบปฏิบัติการถูกบังคับให้สลับโหลดข้อมูลอย่างกะทันหัน และน่าเสียดายที่ไม่เพียง แต่ทำลายกระบวนการที่กระทำผิดกฎหมายอย่างหนัก แต่สามารถนำระบบทั้งหมดมาสู่ความนิ่ง (มันไม่เลวร้ายนักในเครื่องที่ใช้ SSD แต่ OTOH ทำให้ฉันกังวลว่าการเขียนกิกะไบต์และกิกะไบต์ของข้อมูลขยะอาจเป็นไปได้ไหม ระยะยาวเป็นอันตรายต่อเซลล์แฟลช) จนกว่าฉันจะสังเกตเห็นปัญหาและฆ่ากระบวนการด้วยตนเอง (เมื่อใช้เวลาจริงนาทีจนกระทั่งฉันได้เข้าสู่ระบบเสมือน terminal!) ครึ่งเซสชั่นการทำงานของฉันในการแลกเปลี่ยนและฉันต้องรอสักครู่จนกว่าระบบจะทำงานได้อย่างราบรื่น อีกครั้ง มีวิธีแก้ไขปัญหา draconic หนึ่งวิธี: บังคับใช้ขีด จำกัด หน่วยความจำฮาร์ด แต่การทำทั้งระบบนี้บางครั้งจะทำให้กระบวนการที่ฉันต้องการอยู่นิ่งและถ้าฉันต้องทำเองulimitก่อนที่จะเริ่มขั้นตอนการละเมิด ... ดีฉันมักจะลืมจนกว่ามันจะสายเกินไป วิธีแก้ปัญหาที่เป็นไปได้ที่ฉันมีความสุขมากขึ้น: หากกระบวนการใดเกินกว่าการใช้งานหน่วยความจำที่แน่นอนก็จะลดปริมาณลงอย่างผิดเพี้ยนเพื่อให้ระบบส่วนที่เหลือตอบสนองได้ หากกระบวนการใดเกินกว่าการใช้หน่วยความจำที่แน่นอนก็เป็นSIGSTOPเหตุให้ฉันมีเวลาคิดออกว่าจะทำอย่างไรต่อไป หากกระบวนการเข้าใกล้ขีด จำกัด RAM ฉันจะได้รับคำเตือนก่อนที่การแลกเปลี่ยนจะเริ่มขึ้น มีวิธีใดบ้างที่จะรับพฤติกรรมเช่นนี้หรือคล้ายกัน?