พาร์ทิชัน swap ควรมีขนาดใหญ่เพียงใด


10

เป็นเวลาหลายปีที่ฉันได้อ่านว่ามันเป็นความคิดที่ดีที่จะสร้างพาร์ติชั่นสว็อปซึ่งมีพื้นที่แรมเป็นสองเท่า วันนี้ยังใช้ไม่ได้หรือไม่ หรือไม่จำเป็นอีกต่อไป?

ฉันมีเซิร์ฟเวอร์ที่มี RAM 8 GiB และฉันต้องการสร้างพาร์ติชัน swap และฉันสงสัยว่า 16 GiB มากเกินไป


คำตอบ:


11

สำหรับระบบที่มีขนาดใหญ่, RAM ที่มีอยู่จริง 8GB, เรามักจะจัดสรร 2GB ของการแลกเปลี่ยน เหล่านี้คือเซิร์ฟเวอร์ฐานข้อมูลที่โหลดซึ่งรัน Oracle หรือ PostgreSQL เป็นเวลาหลายปีมาแล้วที่ฉันไม่เคยเห็นการสับเปลี่ยนแลกเปลี่ยนแม้ภายใต้ภาระหนัก การโหลดจำนวนมากมีผู้ใช้ประมาณ 100 ถึง 150 คนที่อ่าน SQL ประมาณ 10,000 ครั้งและอาจเขียน 2,500 ครั้งต่อนาที

นอกจากนี้เรายังปรับระดับการแลกเปลี่ยนเพื่อกีดกันการแลกเปลี่ยนและปิดกระบวนการที่ไม่จำเป็นซึ่งเรารู้ว่าไม่จำเป็นต้องทำงาน (สร้าง Linux เอง)

เช่นเดียวกับ Eddie กล่าวไว้ข้างต้นว่า RAM ที่มีอยู่จริง 1x เป็นกฎที่ดีสำหรับทุกสิ่งภายใต้ 4GB ฉันสร้างลินุกซ์ที่กำหนดเองสำหรับ บริษัท ขนาดใหญ่ที่ติดอันดับ Fortune-500 และสิ่งเหล่านี้เป็นสิ่งที่เรามักจะทำและเราไม่มีปัญหาใด ๆ ในช่วง 5 ปีที่ผ่านมา

บนระบบที่มีขนาดใหญ่กว่า: 64 บิต Linux พร้อม 32GB และ 64GB ของ RAM นี่คือเซิร์ฟเวอร์ฐานข้อมูล Oracle ของเราและโดยทั่วไปเราจะทำการสลับรอบ 2GB สำหรับสิ่งต่างๆเช่น Eddie ชี้ให้เห็นข้างต้นกระบวนการที่ไม่ได้ใช้งานจะถูกย้าย


5

คำถามที่ดูเหมือนไม่มีเวลา คนดี ๆที่ SlashDotพูดถึงเรื่องนี้มานานแล้ว ตรวจสอบสิ่งที่พวกเขาพูด:

  • พื้นที่ดิสก์ไม่ใช่ปัญหาสำหรับ HDD ที่ทันสมัย ​​แต่ 16GB ยังคงเป็นเรื่องเล็กน้อยสำหรับไดรฟ์ TB ที่ทันสมัย
  • อย่างไรก็ตามพื้นที่สว็อปที่สำคัญอาจเป็นปัญหาในกรณีของการจัดการหน่วยความจำไม่ดี:

หากฉันดูภาพยนตร์ 4 GB ภายในระยะเวลา 2 ชั่วโมงผู้จัดการหน่วยความจำจำนวนมากจะตัดสินใจว่าการพยายามแคชข้อมูลทั้งหมดนั้นอาจเป็นสิ่งที่ดี ผ่านไปครึ่งหนึ่งของภาพยนตร์มันจะคิดว่าโปรแกรมที่ทำงานอื่น ๆ เหล่านั้นไม่ได้ใช้งานเป็นเวลาหนึ่งชั่วโมงและสามารถสับเปลี่ยนอย่างปลอดภัยเพื่อให้สามารถแคชไฟล์ 4 GB ได้มากขึ้น ผลลัพธ์ที่ได้คือครึ่งหนึ่งของรายการของคุณจะถูกสลับหลังจากดูภาพยนตร์ส่งผลให้ระบบซบเซาที่มีการทับไฟล์แลกเปลี่ยน

  • ในที่สุดการตัดสินใจที่ถูกต้องควรมาจากข้อกำหนดของหน่วยความจำไม่ใช่สูตรของ ballpark:

หากคุณมี [แรมเพียงพอที่จะเรียกใช้โปรแกรมที่คุณต้องการใช้ในชีวิตประจำวัน] แสดงว่าไม่มีเหตุผลที่จะใช้ swap


3

ดูคำตอบพื้นที่ SWAP ในระบบหน่วยความจำสูงเท่าไหร่? สำหรับคำแนะนำบางอย่างแม้ว่าคำถามของคุณจะกว้างขึ้น ความคิดเห็นที่แตกต่างกันอย่างกว้างขวางเกี่ยวกับเรื่องนี้ แต่โดยทั่วไปคนที่มี RAM 1 GiB หรือมากกว่านั้นดูเหมือนว่าจะทำงานโดยไม่มีการแลกเปลี่ยนทั้งหมดหรือด้วย 1xmemory เป็นการแลกเปลี่ยน

แม้ว่าคุณจะไม่ได้วางแผนที่จะใช้ RAM มากจนคุณต้องบังคับให้ต้องทำการสลับเกิดขึ้น แต่ก็มีบางอย่างที่มีค่าอย่างน้อย 1xmemory เป็น swap: มันอนุญาตให้ระบบปฏิบัติการสลับบางสิ่งที่ไม่คาดว่าจะใช้ ทันทีเพื่อให้สามารถใช้หน่วยความจำนั้นแทนดิสก์หรือบัฟเฟอร์ IO ได้


3

หากคุณคาดหวังว่าระบบของคุณจะสามารถจำศีลแล้วกลับมาทำงานได้สำเร็จ :-) ก็น่าจะดีกว่าถ้าคุณจัดสรรพื้นที่เพิ่มเติมสำหรับพาร์ติชัน swap มากกว่าจำนวนแรมทางกายภาพ


3

ผู้ให้บริการ VPS ของฉันไม่ได้จัดเตรียมพื้นที่สว็อปสำหรับเซิร์ฟเวอร์และของฉันก็ทำงานได้อย่างดีหากไม่มี

เซิร์ฟเวอร์ส่วนใหญ่ที่ฉันเห็นเป็นประจำทุกวันในที่ทำงานก็ไม่ได้สลับกันเช่นกัน

แก้ไข

อย่างไรก็ตาม - ถ้าคุณกำลังเรียกใช้ JVM ให้แน่ใจว่าคุณมีอย่างน้อยเป็นพื้นที่ swap มากที่สุดเท่าที่คุณจะเคยตั้ง-Xmxเพราะรู้จักกัน ปัญหากับ JVM

กล่าวโดยย่อเมื่อ JVM ต้องการหน่วยความจำมากกว่าที่ใช้อยู่ในปัจจุบัน (แต่ยังไม่ได้กดXmx) มัน:

  • สลับตัวเองเป็นดิสก์
  • จัดสรรหน่วยความจำใหม่
  • อ่านตัวเองกลับเข้าไปใน RAM

ซึ่งหมายความว่าหากคุณสลับน้อยกว่าของคุณXmxก็สามารถล้มเหลวได้

เพื่ออ้างถึงรายงานข้อผิดพลาด

สิ่งที่ดีที่สุดที่ต้องทำคือเพิ่มขนาดการแลกเปลี่ยนในเครื่องที่พบข้อผิดพลาดนี้

ฉันพยายามเล่นให้ปลอดภัยเมื่อทำงานกับ JVM และตั้งค่า swap เป็นหน่วยความจำกายภาพเท่ากัน


2

เมื่อพิจารณาถึงความเร็วของฮาร์ดดิสก์ไดรฟ์สมัยใหม่การสลับขนาดใหญ่เป็นเพียงการเชื้อเชิญ บางที SSD จะกลับแนวโน้มนี้ แต่ด้วยความเร็วในการถ่ายโอนสูงสุด 300MB ต่อวินาทีสำหรับดิสก์การสลับ 2-4GB จะใช้เวลาสักครู่

ในสมัยก่อน (เช่น: Linux 1.2, i386, SunOS 4.x) คุณอาจมี daemon 5-15 MB กระบวนการที่ทำงานอยู่และที่ใดก็ได้จาก 4-32MB RAM และ daemons ที่เพิ่งถูกบล็อกรอ I / O สามารถถูกสับเปลี่ยนโดยไม่มีการตีประสิทธิภาพจริง ๆ ... และพวกเขาควรจะดีกว่าเนื่องจากโปรแกรมผู้ใช้อาจมี RAM น้อยกว่า 2-3MB การแลกเปลี่ยนทำให้รู้สึกมาก

ตอนนี้ในสภาพแวดล้อมของฉันเซิร์ฟเวอร์ส่วนใหญ่มีภาระงานหนักหน่วยความจำเดี่ยวและ RAM สามารถประมาณได้อย่างแม่นยำ ... Swap จะมีสำหรับกรณีฉุกเฉินกระบวนการที่เรียกใช้ออกไปและอื่น ๆ

ข้อยกเว้นสำหรับแล็ปท็อปและเวิร์กสเตชันที่อาจจะนอนหลับ ระบบปฏิบัติการหลายแห่งจะใช้พื้นที่สลับเพื่อบันทึกภาพที่หยุดชั่วคราวและในกรณีเหล่านั้นการสลับจะต้องมีขนาดใหญ่กว่าหน่วยความจำกายภาพ ใน Linux ที่มี suspend2 / tuxonice คุณควรมี 2xRAM เป็น swap size เพื่อรองรับ suspend-to-disk


ในสมัยก่อน System V 3.2 และก่อนหน้านี้ใช้การสลับขนาด RAM อย่างแน่นอน น้อยกว่าที่ถูกทำลายและเสียอีกเพราะมันไม่ซับซ้อนเท่าระบบหน่วยความจำเสมือนเหมือน BSD
kmarsh

2

วันนี้หากคุณใช้งาน swap ขนาด 32GB หรือ 64GB เซิร์ฟเวอร์ขนาด 4 GB สำหรับค่าเริ่มต้นคือจำนวนเงินที่ปลอดภัย สิ่งที่ใหญ่กว่านั้นคือ overkill ด้วย RAM ที่มีอยู่จริง


1

เป็นการดีที่คุณจะไม่ใช้การแลกเปลี่ยนเลยและสิ่งที่ 2x RAM เป็นสิ่งที่หลงเหลือจากเมื่อหลายปีก่อน

ถ้าคุณกังวลเกี่ยวกับมันฉันจะทำสิ่งที่ชอบ:

Max Memory Requirement - Physical Ram = Swap

ฉันคิดว่า 16GB ฟังดูใหญ่เกินไปส่วนตัว


1

ในสมัยก่อนที่คุณต้องการให้มากที่สุดเท่าที่จะทำได้การบริโภคความทรงจำในเมล็ดข้าวเหนียวสมัยใหม่เป็นเรื่องของอดีต คำพูดเดิมคือ "2x ความจำของคุณ" ระหว่าง 2GB หรือจำนวนเนื้อที่ที่เครื่องมีใน ram ในวันนี้และอายุจะพาคุณเข้าใกล้ที่ที่คุณต้องการ


1

การแลกเปลี่ยนยังใช้เพื่อเก็บดัมพ์หลังจากเคอร์เนลตกใจ หากคุณสนใจโดยการวิเคราะห์การทิ้งขยะเหล่านี้และไม่ได้ระบุปลายทางการถ่ายโอนข้อมูลอื่นการแลกเปลี่ยนของคุณควรมีอย่างน้อยเท่ากับ RAM ของคุณ


0

ไม่มีอัลกอริธึมเดียวที่จะบอกคุณว่าคุณต้องการแลกเปลี่ยนมากแค่ไหน ในทางปฏิบัติคุณต้องทำให้ระบบของคุณมีภาระมากที่สุดที่คุณวางแผนจะให้การสนับสนุนและค้นหาว่าทรัพยากรใช้งานจริงเพียงใด ตั้งค่าไฟล์ swap ของคุณ

สำหรับแรมจริงคุณควรวางระบบของคุณภายใต้ภาระ "ล่องเรือ" ที่คุณคาดหวังว่าจะจัดการและซื้อให้เหมาะสม สำหรับระบบที่มีความหน่วงต่ำคุณไม่ควรสลับในการโหลดข้อมูลการล่องเรือของคุณ (ซึ่งไม่เหมือนกับการไม่มีการจัดสรร swap หรือแม้กระทั่งการใช้งาน) การแลกเปลี่ยนจำนวนเล็กน้อยอาจเกิดขึ้นเนื่องจากระบบสาธารณูปโภคที่ใช้เพียงเล็กน้อย แต่โดยมากคุณควรมีการแลกเปลี่ยนน้อยที่สุด

แน่นอนคุณสามารถแลกเปลี่ยนประสิทธิภาพเพื่อลดราคา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.