ฉันใช้ยูนิกซ์มาระยะหนึ่งแล้วและในช่วงสองสามปีที่ผ่านมาฉันรู้สึกว่าการสลับเป็นสิ่งที่ผิดสมัย แต่ฉันอยากรู้ว่าคนอื่นคิดอย่างไร
ข้อโต้แย้งของฉันคร่าวๆสิ่งนี้ (สมมติว่าไม่มี ulimit หรือ twiddling ของการตั้งค่า OOM):
There is little value in swap because if you need to swap out to disk,
odds are it's going to be a vicious cycle where an app will continue
to eat not only real memory, but swap as well until it gets OOM
reaped (_if_ it gets OOM reaped).
If you have swap enabled, it will only prolong this death march to
the detriment of other processes - and in the worst case where the
process is not OOM reaped in a timely manner, grind the system to
a halt.
Without swap, it will probably get OOM reaped sooner (if at all)
สำหรับบริการใด ๆ ที่ปรับประสิทธิภาพแล้วฉันคิดว่าการเข้าใจขีด จำกัด สูงสุดของการใช้ทรัพยากรจะเป็นกุญแจสำคัญในการปรับแต่งในครั้งแรกซึ่งในกรณีนี้คุณรู้ว่าคุณต้องการมากแค่ไหน
ฉันนึกภาพไม่ออกหลาย ๆ สถานการณ์ (บาง แต่ไม่มาก) ที่คุณจะหยุดกระบวนการทำงานและมันสามารถสลับออกเพื่อให้มีที่ว่างสำหรับสิ่งอื่น ๆ แต่คุณยังคงสูญเสียซ็อกเก็ตของคุณถ้าคุณทำอย่างนั้น core-dump ผ่าน gcc หรือคัดลอกหน่วยความจำด้วยมือจะเทียบเท่ากับการใช้งาน
ฉันไม่ต้องการแลกเปลี่ยนในระบบสมองกลฝังตัว (แม้ว่ามันจะมี ram ที่เล็กกว่าก็ตาม) ถ้าคุณไม่มี ram ฉันอยากให้กระบวนการของฉันตายมากกว่าฉีกหน่วยความจำแฟลชแบบเขียนล้านต่อเซกเตอร์ ขับรถในช่วงสุดสัปดาห์โดยปรับระดับเซกเตอร์ลงสู่ nub
มีเครามีเหตุผลใด ๆ ที่น่าสนใจเพื่อให้สลับรอบ?
อัปเดตคำตอบ && การวิเคราะห์:
ยืนยัน? - fork () ต้องการจำนวนหน่วยความจำเท่ากันสำหรับกระบวนการ child เหมือนกับ parent
Modern fork () เป็นcopy-on-writeสำหรับเด็ก ๆ บน POSIX (โดยทั่วไป) แต่เฉพาะLinuxและFreeBSDและฉันสมมติว่า OSX โดยการอนุมาน ฉันคิดว่าเป็นส่วนหนึ่งของกระเป๋าเดินทางสมัยนี้ที่แลกเปลี่ยนดำเนินการกับมัน
อยากรู้อยากเห็นบทความ Solaris นี้อ้างว่าแม้ว่า Solaris จะใช้ Copy-on-Write with fork () ซึ่งคุณควรมีอย่างน้อย2x (!)ขนาดกระบวนการหลักในหน่วยความจำเสมือนฟรีสำหรับ fork () เพื่อไม่ให้อึใน กลาง. ในขณะที่องค์ประกอบของโซลาริสค่อนข้างเป็นข้อโต้แย้งว่าการแลกเปลี่ยนนั้นเป็นเรื่องสมัย - ฉันคิดว่าระบบปฏิบัติการเพียงพอที่จะใช้ CoW อย่างถูกต้องในลักษณะที่สำคัญต่อการปัดเป่าตำนานมากกว่าเพื่อทำเครื่องหมายเหตุผลเพิ่มเติมสำหรับการแลกเปลี่ยน ตั้งแต่. ช่วยให้หน้ามัน ณ จุดนี้คนที่ใช้โซลาริสน่าจะเป็นแค่พวกออราเคิล โซลาริสไม่มีความผิด!
ยืนยัน - ไฟล์ tmpfs / ramfs สามารถเปลี่ยนเป็นการแลกเปลี่ยนได้อย่างมั่นใจเมื่อ tmpfs / ramfs เติมเต็ม
อย่าใช้ tmpfs / ramfs ไม่ จำกัด ! กำหนดปริมาณของ ram ที่คุณต้องการให้ tmpfs / ramfs ใช้เสมอ
น่าเชื่อถือ - มีการแลกเปลี่ยนเล็กน้อย 'ในกรณี'
หนึ่งในเจ้านายเก่าของฉันเคยพูดอย่างมากว่า 'คุณไม่รู้ว่าคุณไม่รู้อะไร' โดยพื้นฐานแล้วคุณไม่สามารถตัดสินใจได้โดยอาศัยข้อมูลที่คุณยังไม่มี นี่เป็นอาร์กิวเมนต์ที่เป็นไปได้สำหรับการแลกเปลี่ยนกับฉัน - ฉันสงสัยว่าประเภทของสิ่งที่คุณทำเพื่อตรวจสอบว่าใบสมัครของคุณเปลี่ยนหรือไม่จะหนักกว่าการตรวจสอบเพื่อดูว่า malloc () ประสบความสำเร็จหรือได้รับการยกเว้น ใหม่ล้มเหลว ()
สิ่งนี้อาจมีประโยชน์ในกรณีที่คุณใช้งานเดสก์ท็อปและมีสิ่งสุ่มเกิดขึ้นมากมาย แต่ถึงกระนั้น - ถ้ามีบางอย่างเกิดขึ้นที่ถั่ว นั่นเป็นเพียงฉัน
จับ! - บนSolaris การสลับเป็นสิ่งสำคัญด้วยเหตุผลสองประการ
tmpfs - state จำนวนพื้นที่ว่างที่มีให้ tmpfs ขึ้นอยู่กับจำนวนของพื้นที่สว็อปที่ไม่ได้ถูกจัดสรรในระบบ ขนาดของระบบไฟล์ tmpfs เติบโตขึ้นเพื่อรองรับไฟล์ที่เขียนลงไป แต่มีการแลกเปลี่ยนบางอย่างสำหรับผู้ใช้งานหนักของ tmpfs Tmpfs ใช้ทรัพยากรร่วมกันกับข้อมูลและเซ็กเมนต์สแต็กของการดำเนินการโปรแกรม การเรียกใช้งานโปรแกรมที่มีขนาดใหญ่มากอาจได้รับผลกระทบหากระบบไฟล์ tmpfs ใกล้เคียงกับขนาดสูงสุดที่อนุญาต Tmpfs มีอิสระในการจัดสรรทั้งหมดยกเว้น 4MB ของพื้นที่สว็อปของระบบ
ข้อเท็จจริงและตำนานเกี่ยวกับการแลกเปลี่ยนของ Solarisสถานะหน่วยความจำเสมือนในปัจจุบันประกอบด้วยผลรวมของ RAM จริงและพื้นที่สว็อปบนดิสก์ โซลาริสไม่ต้องการพื้นที่สวอปใด ๆ เลย หากคุณเลือกตัวเลือกนี้เมื่อ RAM เต็มคุณจะไม่สามารถเริ่มกระบวนการใหม่ได้ .
ฉันไม่แน่ใจว่านี่หมายความว่าแผนที่เสมือนสูงสุดที่คุณสามารถสร้างได้คือram + swapหรือถ้าคุณยังสามารถทำอะไรบางอย่างเช่น mmap () ไฟล์ที่ใหญ่กว่า ram และพึ่งพาการเริ่มต้นขี้เกียจของ mmap () .. ในขณะที่คุณ อาจจะสามารถใช้งาน Solaris ได้ในวันนี้โดยไม่ต้องเปลี่ยนดูเหมือนว่าจะเป็นมิตรกับมันน้อยกว่าระบบปฏิบัติการ POSIXy อื่น ๆ
จับ! เครื่องมือจำศีล Linux ยอดนิยมดูเหมือนจะพึ่งพาการแลกเปลี่ยน
ตามค่าเริ่มต้นTuxOnIceดูเหมือนว่าอาศัยการสลับเป็นโหมดไฮเบอร์เนต - แม้ว่าจะมีแบ็กเอนด์อื่นอยู่ อย่างไรก็ตามหากคุณไม่ได้ใช้กล่องที่ต้องจำศีลฉันจะยังคงยืนอยู่ข้างหลังคำสั่งที่ว่า