พื้นที่ SWAP บนระบบ 2-4GB มีเท่าใด


53

ฉันจะตัดสินใจได้อย่างไรว่าจะต้องทำการสลับขนาดใดบนเครื่อง Linux (Debian) ที่มี RAM ขนาด 2-4 GB? ฉันต้องการพื้นที่สว็อปหรือไม่?


3
2-4 GB ไม่ใช่หน่วยความจำสูงจริงๆอีกต่อไป 5 ปี
fifi การเงิน

@ KasperSouren ไม่มันไม่ใช่ เป็นจำนวนเงินที่ยุติธรรมในเวลา
C. Ross

คำตอบ:


54

มีหลายวิธีที่คุณสามารถทราบได้ว่าการใช้ swap ในเครื่องมีจำนวนเท่าใด คำแนะนำทั่วไปใช้สูตรตาม RAM เช่น 2 x RAM, 1.5 x RAM, 1 x RAM, .75 x RAM และ. 5 x RAM หลายครั้งที่สูตรมีการเปลี่ยนแปลงขึ้นอยู่กับปริมาณของ RAM (ดังนั้นกล่องที่มี RAM 1GB อาจใช้การแลกเปลี่ยน 2 x RAM (2GB) ในขณะที่กล่องที่มี RAM ขนาด 16GB อาจใช้การแลกเปลี่ยน. 5 x RAM (8GB)

สิ่งที่ควรพิจารณาอีกประการหนึ่งคือสิ่งที่จะใช้สำหรับกล่อง หากคุณกำลังจะมีกระบวนการทำงานพร้อมกันจำนวนมากที่วิ่งอยู่บนกล่อง แต่จำนวนที่สำคัญของกระบวนการเหล่านั้นจะไม่ได้ใช้งานเป็นระยะเวลาหนึ่งแล้วการเพิ่มการสลับพิเศษก็สมเหตุสมผล หากคุณกำลังจะใช้กระบวนการที่สำคัญจำนวนเล็กน้อยจากนั้นเพิ่มการแลกเปลี่ยนพิเศษทำให้รู้สึก (นี้อาจดูเหมือนเคาน์เตอร์ง่าย แต่ฉันจะอธิบายในนาที) หากคุณใช้กล่องเป็นเดสก์ท็อปการเพิ่มการสลับพิเศษนั้นสมเหตุสมผล

สำหรับว่าคุณควรรวมการแลกเปลี่ยนใช่คุณควร คุณควรมีพื้นที่ swap จนกว่าคุณจริงๆรู้ว่าสิ่งที่คุณกำลังทำและคุณมีเหตุผลที่ดีสำหรับมัน

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

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

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

อัปเดต: ตามความคิดเห็นที่ยอดเยี่ยมที่กล่าวถึง (และฉันลืมที่จะรวม) หากคุณใช้แล็ปท็อปหรือเดสก์ท็อปที่คุณอาจต้องการใส่ในโหมด 'ไฮเบอร์เนต' (Suspend to Disk) คุณต้องการอย่างน้อยที่สุดเสมอสลับตามที่คุณมีหน่วยความจำ พื้นที่สว็อปจะถูกใช้เพื่อเก็บเนื้อหาของ RAM ในคอมพิวเตอร์ในขณะที่ 'สลีป'


22
คำตอบที่ดี แต่คุณลืมสิ่งหนึ่ง หากเป็นเดสก์ท็อปหรือแล็ปท็อปตรวจสอบให้แน่ใจว่าการสลับอย่างน้อยใหญ่เท่ากับ RAM ที่คุณมีเพื่อให้คุณสามารถจำศีลคอมพิวเตอร์ของคุณได้ นี่เป็นการบันทึก RAM เพื่อสลับ
Sander Marechal

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

เท่าที่ผมพบในช่วงฤดูร้อนที่ผ่านมาคุณจะต้องมีพื้นที่ swap มากถ้าคุณใช้ Java
วอร์เรน

หากผู้ใช้มี RAM มากกว่าจำนวนที่พวกเขาจะใช้จริง (16GB / 32GB) บนคอมพิวเตอร์เดสก์ท็อป uptime 100% (ไม่มีไฮเบอร์เนต) คุณยังขอแนะนำกระบวนการที่จะนำไปใช้กับ SWAP หรือไม่? ดูเหมือนว่าฉันจะมีประโยชน์ในการทิ้งทุกอย่างไว้ใน RAM เว้นแต่คุณจะได้ใกล้ถึงขีดความสามารถ
earthmeLon

1
@earthmeLon - ฉันขอแนะนำให้ยังคงมีการแลกเปลี่ยนเล็กน้อย วันนี้ดิสก์มีขนาดใหญ่และราคาถูกดังนั้นการสูญเสียพื้นที่ดิสก์เพียงไม่กี่กิกะไบต์ในการแลกเปลี่ยนจึงเป็นเรื่องเล็กน้อย การมีพื้นที่สว็อปให้คุณมีกรมธรรม์ประกันภัยในกรณีที่มี RAM กินเกินกว่าที่คุณคาดไว้
Christopher Cashell

17

Red Hat แนะนำสูตรต่อไปนี้สำหรับเซิร์ฟเวอร์ที่มี ram จำนวนมาก:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

หากระบบของคุณมี RAM 1 GB การสลับของคุณจะเป็น 2 GB สำหรับ 16 GB จะเป็น 18 GB


3
ลิงก์ที่เกี่ยวข้องจากคู่มือการจัดเก็บRHEL6
Ophidian

เซิร์ฟเวอร์จะค่อนข้างติดขัดหากใช้การแลกเปลี่ยน 1Gb อย่างต่อเนื่องเพราะหน่วยความจำจะเต็ม
user2284570

12

ตอบล่าช้าและฉันคิดว่านี่ค่อนข้างครอบคลุมในคำตอบที่เลือก แต่มีบางข้อมูลที่ดีและย่อยง่ายในคำตอบที่ได้รับจาก @ssapkota ที่นี่ (คัดลอก / วางด้านล่าง)

นี่เป็นคำแนะนำที่ดีมากจาก RedHat: ระบบ Swap Space ที่แนะนำ

ข้อความที่ตัดตอนมาจากลิงค์เดียวกัน:

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

ตารางปัจจุบัน (ณ เดือนธันวาคม 2555):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

ตารางต้นฉบับ:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

8

ขึ้นอยู่กับว่าคุณทำอะไรไปบ้าง ด้วยปริมาณงานที่เหมาะสมคุณไม่ต้องการพื้นที่สว็อปใด ๆ ไม่ว่าคุณจะมี RAM 16MB หรือ 16384MB อุปกรณ์ Linux ที่ฝังตัวส่วนใหญ่ทำงานได้โดยไม่ต้องมีอะไร (พวกเขาจะสลับไปยังอะไร)

เมื่อพิจารณาถึงราคา RAM คุณอาจจะไม่ใช้ swap สำหรับการคำนวณที่ใช้งานอยู่ แล้วมีอะไรเหลืออยู่?

  1. บนเดสก์ท็อปพื้นที่สว้อปถูกใช้สำหรับ suspend-to-disk พื้นที่สว็อปนี้จะต้องมีประมาณ 1 × RAM ขึ้นอยู่กับว่าเนื้อหาของหน่วยความจำบีบอัดได้ดีเพียงใด
  2. การอนุญาตให้ลบงานที่ไม่ใช้งานออกจาก RAM เพื่อเพิ่มพื้นที่ว่างให้กับดิสก์แคช
  3. เหมือนกัน แต่เพื่ออนุญาตให้กระบวนการที่ใช้งานอยู่ใช้แทนฮีป / สแต็ก

(2) และ (3) ขึ้นอยู่กับปริมาณงานเป็นอย่างมาก บนเดสก์ท็อปของฉันฉันสามารถใช้ 4GB + เปิด (2) จากการปล่อย vims xterms ฯลฯ ที่ทำงานบนเดสก์ท็อปอื่น ๆ ได้อย่างง่ายดาย

ในเซิร์ฟเวอร์ส่วนใหญ่ที่ฉันใช้งานแทบจะไม่เคยมีสิ่งใดถูกสับเปลี่ยนและการสลับ 1–2GB (โดยไม่คำนึงถึงจำนวน RAM) ดูเหมือนว่าตกลง


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

@ สงคราม: ฉันมีกรณี Tomcat แต่ละครั้งเกิน 3GiB แต่ยังไม่มีการแลกเปลี่ยน (และหนึ่งกำลังใช้ hugepages และจึงไม่สามารถแลกเปลี่ยน) ไม่แน่ใจว่าคุณกำลังพูดถึงเรื่องอะไร
Derobert

มีบั๊กกึ่งคลุมเครือใน JVM ที่เกี่ยวข้องกับการตั้งค่าหน่วยความจำขั้นต่ำและสูงสุดที่ฉันพบในฤดูร้อนที่ผ่านมานี้ ( antipaucity.com/?p=984 ) TL; DR - ทุกครั้งที่ JVM ขอหน่วยความจำเพิ่มเติมจากระบบปฏิบัติการจะเขียนตัวเองเพื่อสลับรับหน่วยความจำใหม่จากนั้นอ่านตัวเองกลับไปที่ RAM เพื่อให้หน่วยความจำต่อเนื่องกัน
warren

@warren: ตกลงฉันใช้ OpenJDK บน 64-bit โดยที่ Xmx และ Xms เหมือนกัน แต่ฉันไม่แน่ใจว่าจาวาจะบังคับตัวเองให้สลับได้อย่างไร syscall ที่ใกล้เคียงกันจะเป็นmadviseอย่างไร แต่นั่นจะไม่ล้มเหลว ... ข้อผิดพลาดที่พูดถึงหน่วยความจำไม่เพียงพอระหว่างการรวบรวมขยะ การเพิ่ม swap ช่วยป้องกันแน่นอน แต่จะเพิ่ม RAM อาจเป็นเพราะ 32-bit กับ PAE หรือเปล่า?
Derobert

มันเกิดขึ้นกับ JVM 64- บิตเช่นกัน: หากคุณมีXmsและXmxไม่ได้ตั้งค่าไว้เหมือนกันมันสามารถกัดคุณได้มาก: ทำให้เกิดปัญหาใหญ่สำหรับเราเป็นเวลาสองสัปดาห์ + จนกว่าเราจะติดตามมันในที่สุด
Warren

4

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

นี่คือการสนทนาที่น่าสนใจในเรื่อง โดยส่วนตัว (และหลังจากอ่านการสนทนานั้น) ฉันยังคงเหลือประมาณ 1 GB สำหรับการแลกเปลี่ยน


2

ฉันไม่สามารถพูดกับ Debian ได้โดยตรง แต่ฉันรู้ว่าเมื่อคุณมี RAM สูงกว่า 2 GB การเปลี่ยนแปลงของสมการ 2xRAM ดั้งเดิมมักเปลี่ยนเป็น 1xRAM ฉันคิดว่าเมื่อคุณกด RAM ขนาด 16 GB แล้วข้อเสนอแนะจะลดลงเป็น. 75xRAM อีกครั้ง

แน่นอนฉันพบสิ่งนี้เป็นจริงสำหรับ Solaris และเป็นตัวชี้วัดที่ใช้สำหรับการติดตั้ง Oracle ดังนั้น YMMV ขึ้นอยู่กับแอพที่คุณกำลังใช้งานอยู่


2

ฉันมักจะทำการแลกเปลี่ยนมาก (อย่างน้อย) เป็น RAM ในกรณีที่ฉันต้องการไฮเบอร์เนตเครื่องบางวัน สามารถทำงานได้น้อย แต่ก็ทำได้เช่นกัน

วันนี้พื้นที่ HDD ราคาถูกดังนั้นฉันไม่ลังเลเลยที่จะมอบพื้นที่สว็อป


2

พื้นที่สว็อปสามารถใช้เป็น "padding" เมื่อคุณมีหน่วยความจำไม่เพียงพอทันที

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


2
นี่เป็นดาบสองคม: ในพีซีที่บ้านของฉันฉันลบ swap เมื่อฉันใช้ Firefox 2.x เพราะมันกินหน่วยความจำทั้งหมดอย่างช้าๆและเมื่อเครื่องไปเปลี่ยนมันกลายเป็นใช้ไม่ได้เลย โดยไม่ต้องแลกเปลี่ยนกระบวนการ Firefox ถูกปิดโดยเพียงแค่เมล็ด :)
wazoox

1

ในช่วงหลายปีที่ผ่านมาฉันได้ปฏิบัติตามกฎที่ว่าสำหรับเครื่อง Windows คุณมี swap มากเท่ากับ RAM ... ใน Novell เราจะปรับ swap ให้สูงขึ้นถ้าเรามีเครื่องพิมพ์มากขึ้น ... สำหรับ linux กฎและการฝึกฝนสำหรับฉันนั้นเป็น 1GB สลับทุกๆ RAM 2GB ที่คุณมี และคุณวางไว้ที่ด้านหน้าของดิสก์เพื่อให้เข้าถึงได้เร็วขึ้น

  • หากเป็นเกตเวย์จดหมาย / สแปมฉันจะใช้ swap เป็น RAM สองเท่า
  • ถ้าเป็นเซิร์ฟเวอร์ * ฉันจะไม่ใช้ swap เลย
  • หากเป็นเซิร์ฟเวอร์ LAMP กฎ 1/2 จะมีผล

  • ระยะทางจะแตกต่างกันไปขึ้นอยู่กับแอปพลิเคชันและการใช้งาน GUI


อันที่จริงฉันคิดว่าการสลับที่อยู่ตรงกลางของดิสก์จะเข้าถึงได้เร็วที่สุด
Eddie

0

ฉันสร้าง swap 1GB และซื้อ RAM มากกว่าครั้งที่สอง คุณไม่จำเป็นต้องสลับกับคอมพิวเตอร์ที่ทันสมัย ​​RAM มีราคาถูกมาก


0

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


0

ฉันเพิ่งใช้โทเค็นสลับขนาดเล็ก (ปกติคือ 256 MB แต่ฉันทำไปแล้ว 64 MB) เนื่องจากการกำหนดค่าระบบที่มีศูนย์แลกเปลี่ยนต้องการการกำหนดค่าพิเศษ

พื้นที่ดิสก์มีราคาถูก แต่ไม่ดีเท่าไหร่ ทันทีที่ระบบเริ่มการแลกเปลี่ยนประสิทธิภาพจะเป็นศูนย์ และ RAM ก็ไม่แพงอีกต่อไป

เชื่อใจฉันซื้อโปรเซสเซอร์ที่ช้าลงเล็กน้อยและซื้อ RAM เพิ่ม 2.8 GHz แทน 3.0 GHz จะช่วยให้คุณประหยัดเงินมากพอที่จะซื้อ RAM อีก 2 GB เป็นอย่างน้อย

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