สลับขนาดพาร์ติชั่นบนคอมพิวเตอร์ RAM 64 GB เพื่อใช้งานหน่วยความจำมาก


36

ฉันมี 64 GB RAM และ 240 GB SSDบนคอมพิวเตอร์ของฉันซึ่งฉันจะใช้สำหรับการคำนวณที่ต้องใช้หน่วยความจำมาก (การเรียนรู้ของเครื่องการขุดข้อมูลเป็นต้น) คำแนะนำส่วนใหญ่ที่ฉันพบบนอินเทอร์เน็ตคือคอมพิวเตอร์ RAM ขนาด 2-4-8 GB และพวกเขาแนะนำขนาดพาร์ติชัน RAM swap ขนาด 2x (ประมาณ 128 GB)

มันมีเหตุผลที่จะสร้างพาร์ทิชัน swap ขนาด 128 GB หรือไม่ ฉันจะได้ประโยชน์อะไรจากการสร้างพาร์ทิชัน swap ขนาดใหญ่?

ฉันเข้าใจถูกต้องหรือไม่ว่าในกรณีที่ RAM ของฉันหมด:

  1. หากฉันไม่มี swap ฉันจะได้รับข้อผิดพลาด 'หน่วยความจำไม่เพียงพอ'
  2. หากฉันมี swap หน้า RAM บางหน้าจะถูกคัดลอกไปยัง swap partition และโปรแกรมจะยังคงทำงานต่อไป (แม้ว่าจะช้ากว่า)

บางคนบอกว่าเป็นความคิดที่ดีที่จะทำการแลกเปลี่ยนกับ SSD เนื่องจากมีจำนวนรอบการอ่าน / เขียน จำกัด การใช้ swap จะช่วยให้รอบการอ่าน / เขียน SSD เร็วเท่าที่ฉันรู้ประมาณ 50000 เขียน IOPS ได้อย่างไร

ฉันใช้ Linux ( Ubuntu 14.04 (Trusty Tahr))

กำลังจะตั้งค่าการสลับขนาด 16 GB สำหรับตอนนี้เนื่องจากมันควรจะเพียงพอแล้ว (ตัวอย่างเช่น RedHat แนะนำ 4 GB) และเนื้อที่ว่างบนดิสก์ 16 GB ไม่ใช่เรื่องใหญ่จริง ๆ


1
แทนที่จะพึ่งพาการแลกเปลี่ยนอย่างชัดเจนหากคุณทราบขนาดของการตั้งค่าการทำงานของคุณล่วงหน้าหรือเต็มใจที่จะจัดการหน่วยความจำระดับต่ำมากขึ้นอีกเล็กน้อยให้พิจารณาใช้mmapเพื่อจัดสรรหน้าชุดการทำงานของคุณ จากนั้นจำนวน swap ของคุณจะเท่ากับจำนวนเงินที่คุณต้องการสำหรับกระบวนการของคุณ
ปุย

5
คำแนะนำแนะนำ "สองเท่าของจำนวน RAM" วันที่กลับไปเก่าเมื่อคอมพิวเตอร์มี RAM น้อย เอกสารจำนวนมากระบุว่าสามารถใช้งานได้กับคอมพิวเตอร์ที่มี <2GB RAM เป็นหลัก ขนาดของการแลกเปลี่ยนนั้นเกี่ยวข้องกับสิ่งที่คุณทำกับเครื่องเป็นส่วนใหญ่
John WH Smith

ดูเพิ่มเติมความผิดพลาดของเซิร์ฟเวอร์นี้หากคุณใช้ Java (และอาจเป็นแอพอื่น ๆ ) คุณต้องการให้แน่ใจว่าคุณมีการแลกเปลี่ยนที่เพียงพอเพื่อเพิ่มการจัดสรรหน่วยความจำ โดยส่วนตัวแล้วฉันจะยึดติดกับมาตรฐาน RHEL ของ RAM + 2 สำหรับพาร์ติชั่นสว็อปของฉัน
วอร์เรน

2
น่าเสียดายที่ความคิดเห็นส่วนใหญ่ที่นี่ถูกลบออกไป การเพิ่มเข้าไปอีก: มันคุ้มค่าที่จะกล่าวถึงโดยบังเอิญว่าหากเคอร์เนลของคุณรองรับคุณอาจต้องการติดตั้งพาร์ติชัน swap ของคุณด้วยdiscardSSD นอกจากนี้ (และนี่คือคำตอบด้านล่าง) อย่าลืมว่าคุณสามารถใช้ไฟล์แทนพาร์ติชั่นเพื่อการจัดการที่ง่ายขึ้น (และไม่มีการใช้งานประสิทธิภาพบน SSD เนื่องจากมีการแยกส่วน)
Jason C

1
หากคุณมีแอปพลิเคชั่นที่ใช้หน่วยความจำมากเช่นการเรียนรู้ SVM และคุณหมด RAM และเริ่มการแลกเปลี่ยนทุกอย่างจะซบเซาเกินกว่าที่จะกู้คืนได้ . คุณอาจต้องการให้กระบวนการของคุณถูกฆ่าโดย OOM หากเริ่มแลกเปลี่ยนเพื่อให้คุณสามารถเปลี่ยนแปลงสิ่งต่าง ๆ และเริ่มต้นอีกครั้ง บางทีด้วยไดรฟ์ SSD มันก็ไม่ได้แย่ขนาดนั้น ฉันจะตรวจสอบการตั้งค่า OOMK ด้วย - มันเกิดขึ้นกับฉันบน Ubuntu ที่บางครั้งกระบวนการถูกฆ่า OOM เมื่อยังมี ram เหลืออีกเพราะพวกเขาจัดสรรไว้อย่างอุกอาจ
pqnet

คำตอบ:


36

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

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

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

ทั้งสองอย่างนี้จำเป็นต้องมีการแลกเปลี่ยนจำนวนมาก ตัวอย่างเช่น 16GB ควรเกินพอ จุดประสงค์ไม่ให้คุณเรียกใช้ชุดการทำงานที่ใหญ่กว่าด้วยความเร็ว จุดประสงค์คือเพื่อให้คุณใช้งาน 64GB ได้อย่างมีประสิทธิภาพและไม่ต้องอุดตันด้วยขยะหรือสำรองไว้สำหรับกรณีขอบที่จะไม่เกิดขึ้น

(ฉันเห็นด้วยกับเบิร์ตว่า 4GB น่าจะเพียงพอแล้ว)


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

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

3
@Soren นี่คือ superuser ไม่ใช่ serverfault ;) เป็นเรื่องจริงที่การตั้งค่าพื้นที่สว็อปไม่ใช่การตัดสินใจเพียงอย่างเดียวที่คุณต้องทำสำหรับ "เซิร์ฟเวอร์จริง" คุณต้องตัดสินใจเกี่ยวกับสิ่งต่าง ๆ เช่น overcommit คุณอาจต้องปรับ OOM killer และอื่น ๆ (และคำตอบจะมีความซับซ้อนมากขึ้นถ้าคุณคาดหวังว่าชุดการทำงานของคุณจะเกิน RAM จริง แต่เกือบจะไม่มีใครทำงานกับเครื่องจักรในแบบนั้นอีกต่อไป)
David Schwartz

5
Linux จะใช้หน่วยความจำมากเกินไปแม้จะไม่มีการเปิดใช้งานการสลับ OOMK จะประมวลผลเมื่อมีการใช้หน่วยความจำมากเกินไป ดังนั้นจุดที่สองของคำตอบนั้นผิด
Ruslan

1
@MaciejPiechotka หรือใช้ไฟล์
Jason C

29

RedHat แนะนำ 4 GB ในเครื่องที่มี 64 GB

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

การใช้กฎหน่วยความจำกายภาพ 2X นั้นล้าสมัยแล้วกับจำนวนของระบบหน่วยความจำที่มีอยู่ทุกวันนี้ แต่ไม่แนะนำให้รันด้วยการแลกเปลี่ยนศูนย์เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไร คำแนะนำของ 4 GB เป็นจุดเริ่มต้นที่ดี


12
+1 สำหรับย่อหน้าสุดท้าย คำแนะนำ 2x นั้นมีมาตั้งแต่สมัยที่คอมพิวเตอร์ส่วนใหญ่ไม่มี RAM เพียงพอที่จะหลีกเลี่ยงการสลับสับเปลี่ยนในการใช้งานปกติ โดยส่วนตัวแล้วจากการใช้คอมพิวเตอร์จะมีการเลือกขีด จำกัด 2x เป็นจำนวนมากพอที่จะทำให้คอมพิวเตอร์ช้าลงอย่างผิดปกติก่อนที่จะหมด
Dan Neely

1
2X ยังทำงานได้ดีเมื่อระบบมี RAM 4GB / 8GB และพื้นที่ดิสก์หลายร้อยกิกะไบต์ แน่นอนมันอาจจะมากกว่าที่จำเป็น แต่สิ่งที่เป็นอันตรายหรือไม่ แต่ตอนนี้ระบบมี RAM 16GB / 64GB และ SSD 128GB / 256GB อันตรายก็ชัดเจน
David Schwartz

12

บน Linux คุณต้องสลับให้เพียงพอเพื่อให้หน่วยความจำเสมือนทั้งหมดที่มีอยู่ (RAM + SWAP) เพียงพอสำหรับกระบวนการทั้งหมดที่คุณต้องการเรียกใช้ในครั้งเดียวและใช้พื้นที่เสมือนสูงสุด

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

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

พื้นที่สว็อปทำให้ปัญหานี้อ่อนลงโดยการระบุสถานที่สำหรับเพจที่ไม่ระบุชื่อ (ไม่ใช่ไฟล์ที่แม็พ) ที่จะถูกสลับ: เพจที่ใช้สำหรับการจัดสรรหน่วยความจำเพื่อให้โค้ดที่ปฏิบัติการได้สามารถอยู่ในหน่วยความจำได้

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

dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768  # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile

เมื่อคุณไม่ต้องการมันอีกต่อไป:

swapoff /path/to/swapfile
rm /path/to/swapfile

หมายเหตุ:

  1. แน่นอนคุณไม่จำเป็นต้องกำหนดค่าการสลับอย่างน้อยเท่ากับ RAM กฎของหัวแม่มือนี้ย้อนกลับไปยังระบบปฏิบัติการซึ่งเป็นข้อกำหนดที่ยากเนื่องจากวิธีการแลกเปลี่ยนได้รับการออกแบบ

  2. มีวิธีทำให้ Linux ล้มเหลวเมื่อไม่มีหน่วยความจำอยู่นั่นคือผ่านการจัดการค่าของรายการ sysctl เหล่านี้:

    vm.overcommit_memory
    vm.overcommit_ratio
    

2
+1 สำหรับการอ้างถึงพารามิเตอร์การตั้งค่าเคอร์เนล - ที่สำคัญคือในส่วนของคำถามIf I have no swap, I get an 'out of memory' error- ซึ่งก็คือfalse- ความจริงก็คือเมื่อคุณใช้พื้นที่สว็อปหมดพื้นที่หน่วยความจำไม่เพียงพอนักฆ่าจะเตะเข้าและฆ่า กระบวนการสุ่มเพื่อเพิ่มพื้นที่ว่าง - ดังนั้นจำนวนของพื้นที่สว็อปที่จำเป็นขึ้นอยู่กับวิธีการเขียนแอปพลิเคชันของคุณ
Soren

@Soren เป็นไปได้ว่าแรมส่วนใหญ่จะเต็มไปด้วยข้อมูลจริงดังนั้นนักฆ่าที่จำไม่ได้สร้างความแตกต่างมากนัก ขอบคุณสำหรับ 'ความจริง' ต่อไป
wrwt

3

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

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


1
@Kaz ฉันคิดว่าคุณกำลังพูดถึงสิ่งที่แตกต่างจาก kaste คือ kaste กำลังบอกว่าถ้าคุณต้องการที่จะหยุดชั่วคราว / จำศีลคอมพิวเตอร์ของคุณปิดและรับที่คุณออกในภายหลังคุณต้องมีพื้นที่แลกเปลี่ยนเพียงพอที่จะเก็บ RAM ของคุณทั้งหมด (อื่นจะไปที่ไหน)
amalloy

@amalloy หากคุณเก็บ RAM ของคุณไว้ในพื้นที่สว็อปของคุณสวิทจะไปที่ไหน
NPSF3000

2

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

ระบบปฏิบัติการที่ทันสมัยให้หน่วยความจำเสมือนเป็นการรวมกันของหน่วยความจำกายภาพและพื้นที่สว็อปดังนั้นหากคุณต้องการหน่วยความจำมากกว่าเครื่องที่มีอยู่คุณจะต้องเพิ่มพื้นที่สว็อปเพียงพอเพื่อเติมเต็มช่องว่าง คือถ้าคุณต้องการ 80 GB สูงสุดและเครื่องมี 64 GB คุณต้องสลับ 16 GB

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

ไม่มีอะไรผิดปกติกับการทำงานโดยไม่มี swapspace ถ้าแรงดันหน่วยความจำของคุณน้อยกว่าเสมอ Linux จะใช้หน่วยความจำที่ไม่ได้ใช้ใด ๆ เป็นดิสก์แคชอย่างโปร่งใส


2

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

เป็นตัวอย่างแบบสุ่มที่เกี่ยวข้องกับฉันทันทีในฤดูร้อนนี้ ... ในการใช้ตะแกรงกำลังสองเราต้องการอาร์เรย์ที่ต่อเนื่องกันขนาดใหญ่ (เห็นได้ชัด) เพื่อทำเครื่องหมาย (ด้วยอัลกอริทึมที่ซับซ้อนซึ่งรายละเอียดไม่สำคัญสำหรับตัวอย่างนี้) อาร์เรย์จะต้องมีรายการ ~ 100 Giga ดังนั้นจึงอยู่ในช่วง 1 TB ได้อย่างง่ายดาย ฉันสามารถทำเป็นจัดสรรและให้ระบบปฏิบัติการทำการแลกเปลี่ยนที่ไม่มีประสิทธิภาพอย่างน่าทึ่งเพื่อให้เพจเข้าและออกจาก RAM เพื่อรองรับการเขียนตามลำดับทั้งหมดผ่านอาร์เรย์ แทนที่จะทำบางสิ่งที่มีอยู่ในหัวฉันได้เตรียมที่จะจัดสรรอาเรย์ที่เล็กกว่าที่พอดีในหน่วยความจำแล้วนำอาเรย์นั้นมาใช้ซ้ำเพื่อครอบคลุมอาเรย์ใหญ่ที่เหลือเป็นชิ้น ๆ ฉันได้ปล้น OS แล้วได้ปลดชุดบริการที่ทำงานอยู่แทนที่เชลล์ด้วย

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


1

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

หากคุณมีพอร์ต USB 3.0 สำรองฉันขอแนะนำให้ใช้แฟลชไดรฟ์สำหรับพื้นที่สว็อปของคุณ มีแฟลชไดรฟ์ความเร็วสูงจำนวนมากที่เร็วเท่ากับ SSD ของคุณ แต่ราคาถูกกว่ามาก - ราคาถูกพอที่จะเปลี่ยนได้ถ้ามันเริ่มล้มเหลว การค้นหาอย่างรวดเร็วในอเมซอนแสดงให้เห็นว่ามีแฟลชไดรฟ์ USB 3.0 ขนาด 16 GB ราคาต่ำกว่า $ 20 และยังมีไดรฟ์ 64 GB บางรุ่นที่ราคาต่ำกว่า $ 60

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


3
+1 สำหรับการไม่เปลี่ยนเป็น SSD, -1 สำหรับการสลับไปยังส่วนประกอบที่มีอายุการใช้งานสั้นมากเมื่อใช้งานเช่นนั้น
Aviator45003

1
@TC ถูกต้อง ArmanX - หากคุณพยายามหลีกเลี่ยงการใช้แฟลช (SSD) ทำไมคุณถึงใช้แฟลชบน USB นั่นเป็นเหตุผล
วอร์เรน

2
@TC: การไม่ใช้ SSD เพื่อการแลกเปลี่ยนเนื่องจากการสวมใส่สื่อกลางเป็นตำนานเมืองที่ไม่ยุติธรรม การแลกเปลี่ยนไม่ได้เกิดขึ้น "ตลอดเวลา" แต่ไม่ค่อยเกิดขึ้น นอกจากนี้นี่เป็นสิ่งที่ได้รับการวิจัยอย่างกว้างขวางจาก Microsoft หลังจากการเปิดตัว Win7 ด้วยผลที่ว่ารูปแบบการเข้าถึงโดยทั่วไปของการแลกเปลี่ยนนั้นเป็นที่ยอมรับสำหรับ SSD (นั่นคือ Windows ไม่ใช่ Ubuntu แต่เป็นไปได้ว่า Linux จะทำงานได้แย่กว่ามาก) คุณมีการเขียนมากกว่าหนึ่งร้อย (หรือพันครั้ง) ที่ใส่ SSD ของคุณเนื่องจากไฟล์บันทึกที่ไม่มีใครอ่าน (มักจะซิงค์ทุกบรรทัด)
Damon

ตรรกะมีข้อบกพร่อง: ถ้า thumbdrive เร็วพอ ๆ กับ SSD ทำไมมันถูกกว่า?
Agent_L

มันเป็นความสมดุล ในอีกด้านหนึ่งเป็นความคิดที่ดีที่จะมีไฟล์สลับ ในทางกลับกันหากไฟล์ swap ใส่ SSD (ซึ่งคุณคิดถูกมันอาจจะไม่สำคัญ) มันจะดีกว่าถ้าคุณใช้การแทนที่ราคาถูก - และแฟลชไดรฟ์ราคา $ 20 นั้นดีกว่ามาก SSD มากกว่า $ 100
ArmanX

1

คุณจะสบายแม้กับ 1GiB (และมีโอกาสน้อยกว่า) ในการสลับ คอมพิวเตอร์ที่ทำงานของฉันมักจะใช้งานไม่เกิน 140-150 MiB กิกะไบต์มีการจัดสรรมากเกินไปสำหรับสิ่งนั้น
ถ้าคุณไม่คำนวณงานที่ต้องใช้ชุดข้อมูลในหลายร้อยกิกะไบต์และ (อันนี้สำคัญ!) การเข้าถึงข้อมูลในแบบเข้าถึงครั้งเดียวมากขึ้นหรือน้อยลงคุณจะไม่ต้องการแลกเปลี่ยนมากไปกว่านั้น แต่จากนั้นอีกครั้งการแมปหน่วยความจำที่ datafile ทำงานได้ดีพอ ๆ กันสำหรับแอปพลิเคชันนั้น

แต่การสลับมากขึ้นจะช่วยได้มากขึ้นใช่มั้ย สิ่งอื่นใดดีกว่าเสมอ!

พิจารณาความแตกต่างของการแลกเปลี่ยนพูด 16GiB จะทำ (หรือคิด 64GiB) หากคุณไม่เคยใช้ 16GiB เหล่านี้คุณก็ไม่สามารถตั้งค่าไว้ตั้งแต่แรก แต่ถ้าคุณใช้มันจะเกิดอะไรขึ้น ดิสก์เมื่อเทียบกับหน่วยความจำหลักช้ามาก แม้แต่กับ SATA-600 SSD การถ่ายโอน 16GiB ใช้เวลาระหว่าง 30 และ 40 วินาทีและ 2-4 เท่าในการกำหนดค่าอื่น ๆ
ตอนนี้บางคนอาจคัดค้านว่าคุณค่อนข้างเพจจิ้งและออกหน้าเว็บ 4kiB โหลหรือมากกว่านั้นไม่ใช่ 16GiB ในครั้งเดียว ในขณะที่เป็นจริงจุดยังคงยืน หากคุณต้องการสลับไปมาระหว่างสองหน้าคุณไม่จำเป็นต้องมีการแลกเปลี่ยน 16GiB แต่ถ้าคุณต้องการ 16GiB สำหรับการแลกเปลี่ยนคุณต้องทำการโอนย้ายด้วยเช่นกัน (ไม่ทางใดก็ทางหนึ่ง)

ตามทฤษฎีแล้ว 99.9% ของผู้ใช้ทั้งหมดสามารถใช้เครื่อง 64GiB (หรือเครื่อง 8 + GiB ใด ๆ ) โดยไม่มีการแลกเปลี่ยนใด ๆ และส่วนใหญ่ไม่เคยสังเกตเห็นสิ่งที่ขาดหายไป อย่างไรก็ตามสิ่งนี้ไม่แนะนำ
อันดับแรกเป็นแบบย่อยที่ดีที่สุดเนื่องจากระบบปฏิบัติการมีตัวเลือกน้อยลงในสิ่งที่สามารถละทิ้งเมื่อหน่วยความจำกายภาพหมด มีสองสิ่งที่ทำได้: สลับสิ่งที่ไม่ได้ใช้หรือทิ้งหน้าจากแคชบัฟเฟอร์ หากคุณไม่มีการแลกเปลี่ยนมีเพียงสิ่งเดียวเท่านั้นที่สามารถทำได้ การทิ้งเพจออกจากแคชบัฟเฟอร์นั้นไม่เป็นอันตราย แต่อาจส่งผลกระทบต่อประสิทธิภาพการทำงานได้อย่างชัดเจน
ประการที่สองการแมปส่วนตัวที่ไม่ระบุชื่ออาจล้มเหลวได้หากไม่มีการสลับ ปกติแล้วจะไม่เกิดขึ้น แต่ในที่สุดเมื่อมีหน่วยความจำกายภาพไม่เพียงพอที่จะตอบสนองพวกเขาทั้งหมดและไม่มีการแลกเปลี่ยนระบบปฏิบัติการมีตัวเลือกนี้เพียงอย่างเดียวยกเว้น ...
ประการที่สามนักฆ่า OOM ที่น่ากลัวอาจเตะ ซึ่งหมายความว่ากระบวนการสุ่มที่จะถูกฆ่ามากขึ้นหรือน้อยลง ไม่เป็นไรขอบคุณ. นี่ไม่ใช่สิ่งที่คุณต้องการเกิดขึ้น

จากที่กล่าวมาคำแนะนำเช่นคุณต้องการ swap X คูณจำนวน RAM ที่ติดตั้งมาจากคนที่ทำซ้ำสิ่งที่พวกเขาได้ยิน (และไม่เข้าใจ!) จากคนที่ทำซ้ำสิ่งที่พวกเขาได้ยิน (และไม่เข้าใจ!) หลายสิบปี มาแล้ว
กฎ "ใช้ 2X RAM ของคุณ" นั้นง่ายต่อการจดจำกฎง่ายๆในช่วงปี 1980 และ 1990 มันไม่เคยเป็น "ความจริงทอง" (เป็นเพียงบางสิ่งบางอย่างที่ทำงานได้ดีสำหรับผู้ใช้ส่วนใหญ่) และไม่สามารถใช้ได้เลยในปัจจุบัน .

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

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