มีขนาดสูงสุดที่ไฟล์สลับสามารถทำงานได้หรือไม่


8

เท่าที่ฉันทราบข้อ จำกัด ทางทฤษฎีสำหรับไฟล์ swap นั้นมีขนาดใหญ่มากขึ้นอยู่กับว่าใช้ระบบ 32 บิตหรือ 64 บิต

ฉันได้สร้างไฟล์ swap ขนาด 16GB บนระบบ 4GB RAM 64 บิตด้วยข้อมูลจำเพาะต่ำเป็นพิเศษเพราะฉันมีพื้นที่เพียงพอใน HDD ภายใน 1TB ของฉัน ...

แต่ไฟล์ swap ขนาดใหญ่นั้นสร้างความแตกต่างในด้านความเร็ว / ประสิทธิภาพหรือไม่?



2
IMO หากคุณใช้ swap คุณต้องการ RAM เพิ่มขึ้นไม่ใช่ไฟล์ swap ที่ใหญ่กว่า
Panther

1
หากคุณใช้ HDD คุณควรใช้zramแทนและลดลำดับความสำคัญของการแลกเปลี่ยน HDD และพาร์ทิชัน swap เช่นขนาดใหญ่จะไม่ช่วยเพราะโดยแบ่งตามชนิดที่คุณใช้เช่น 4GB สลับระบบของคุณได้รับช้าที่จะคลาน
phuclv

2
ที่เกี่ยวข้อง: askubuntu.com/q/1017021/504066
PerlDuck

เท่าที่ฉันจำได้ว่าไฟล์ swap จะใช้ RAM จริงจำนวนหนึ่ง (ฉันคิดว่าน้อยกว่า 1% ของขนาดไฟล์ swap) ดังนั้นการมีไฟล์ swap ขนาดใหญ่เกินไปอาจส่งผลเสียต่อประสิทธิภาพการทำงานเนื่องจากการใช้หน่วยความจำนั้น แต่สำหรับไฟล์ swap ที่มีขนาดพอสมควรนั่นจะไม่เป็นปัญหา
kasperd

คำตอบ:


7

คุณสามารถมีพื้นที่สว็อปได้สูงสุด 32 พื้นที่ (ไฟล์หรือพาร์ติชั่น) ที่มีหน้าสูงสุด ~ 4 พันล้าน (2 ^ 32) แต่ละหน้าโดยที่ "เพจ" คือ 4kB บนระบบดั้งเดิม (เช่น x86 หรือ x86_64) แต่อาจใหญ่กว่า สถาปัตยกรรมหรือถ้าคุณได้กำหนดค่าหน้าขนาดใหญ่เป็นพิเศษ

สิ่งนี้ให้สูงสุดทางทฤษฎีของ 16TB ต่อพื้นที่การแลกเปลี่ยนและมากถึง 32 พื้นที่การแลกเปลี่ยน อาจมีข้อ จำกัด อื่น ๆ ที่ใช้ก่อนที่คุณจะมาถึงสิ่งนี้ แต่นี่เป็นพื้นที่แลกเปลี่ยนขนาดใหญ่ที่mkswapคุณสามารถสร้างได้

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

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


6

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

หากคุณต้องการประสิทธิภาพที่ดีขึ้น:

  • ลดลงswappinessหากคุณไม่ได้ใช้งานเกินกว่า 4 GB บ่อยครั้ง
  • เพิ่มแรม
  • เปลี่ยนเป็น SSD แล้ววางไฟล์ swap ไว้

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

11
@Videonauth: "ได้อย่างง่ายดายใช้ขึ้นของ SSD เขียนรอบอย่างรวดเร็ว":ชนิดของครึ่งที่ดี SSD ใด ๆ ที่ทันสมัยสามารถรักษาเขียนเต็มความจุของวัน SSD หลังจากวันสำหรับปีที่ผ่านมา คำแนะนำของคุณอาจถูกต้องในปี 2010 แต่มันล้าสมัย แม้แต่ผู้ใช้ระดับ 256 GiB Samsung SSD 840 ยังสามารถเขียนได้ 100 GiB ต่อวันเป็นเวลามากกว่า 2 ปี
AlexP

หากคุณมี RAM จำนวนมากการลดความว่องไวทำให้แตกต่างกันน้อยกว่าถ้าคุณมี RAM จำกัด การติดตั้ง RAM จำนวนมากจริงๆแล้วทำให้การปรับแต่งอื่น ๆ เพื่อแลกเปลี่ยนซ้ำซ้อนถ้ามันเพียงพอที่คุณสามารถหลีกเลี่ยงการแลกเปลี่ยน รักษาพาร์ทิชันการแลกเปลี่ยนเพื่อความมั่นคง "ในกรณี", 99.9% ของเวลาที่จะไม่ใช้และคุณจะยังคงประสิทธิภาพที่ดีเยี่ยม
thomasrutter

1
นอกจากนี้สิ่งที่เกี่ยวกับรอบการเขียน SSD ที่ จำกัด นั้นไม่จริงมานานกว่าทศวรรษมันถึงเวลาแล้วที่ FUD จะต้องถูกเรียกออกมา ขออภัยความคิดเห็นนี้ซ้ำซ้อนมากเนื่องจาก AlexP ได้แก้ไขสิ่งนี้แล้ว แต่มันขีดเส้นใต้ SSD นั้นยอดเยี่ยมสำหรับแอปพลิเคชันที่เขียนหนัก
thomasrutter

1
การปรับระดับการสวมใส่ SSD กลายเป็นเรื่องรอบปี 2008 ( บทความปี 2008 | 2009 Anandtech article ) "แล็ปท็อปที่ราคาผู้บริโภคปกติถึงแม้จะมาพร้อมกับ SSD ในปี 2008" ไม่เป็นไร SSDs นั้นแพงมากและไม่ได้มาตรฐานจริงๆ
thomasrutter

3

ตามคำตอบของ Gilles

... เคยมีการ จำกัด ขนาดการแลกเปลี่ยน 2GB (บนแพลตฟอร์ม 32- บิตส่วนใหญ่) แต่นี่ไม่ได้เกิดขึ้นเป็นเวลาหลายปี ข้อ จำกัด ถูกลบในบางจุดใน 2.2 เคอร์เนลซีรีส์

นอกจากนี้เขาอ้างถึงหน้าคนสำหรับmkswap:

ขนาดที่มีประโยชน์สูงสุดของพื้นที่สลับขึ้นอยู่กับสถาปัตยกรรมและรุ่นเคอร์เนล

ในไลบรารี linux / swap.hมีMAX_SWAPFILESรายการดังนั้นจึงมีข้อ จำกัด เกี่ยวกับจำนวนของไฟล์ swap ในระดับเคอร์เนล แต่ที่เห็นได้ชัดว่าไม่ใช่พื้นที่ที่แน่นอน ตามเอกสารที่เชื่อมโยง:

ควรสังเกตว่าหกบิตสำหรับ "ประเภท" ควรอนุญาตให้มีพื้นที่แลกเปลี่ยนมากถึง 64 แห่งในสถาปัตยกรรม 32 บิตแทนที่จะเป็นข้อ จำกัด MAX_SWAPFILES 32

ซึ่งฉันเข้าใจว่ามีการแลกเปลี่ยนไฟล์สูงสุด 64 ไฟล์บนสถาปัตยกรรม 32 บิต อย่างไรก็ตามฉันไม่ได้สังเกตในเอกสารที่กล่าวถึงสิ่งที่จะเกิดขึ้นในสถาปัตยกรรม 64 บิต นอกจากนี้ยังมีข้อสังเกตว่าในกรณีนี้ความพยายามของ OP ในการสร้างไฟล์ swap ล้มเหลวในวันที่ 30

สำหรับพาร์ทิชันสลับมีปรากฏเป็นไม่ จำกัด สำหรับใน kernel นอกเหนือจากที่กล่าวมาแล้ว constats แต่จำนวนของพาร์ทิชันใด ๆ จะยังคงถูก จำกัด โดยพื้นฐาน BIOS และดิสก์รูปแบบ


2

คำตอบนี้อาจไม่เหมาะสมสำหรับ Ubuntu 18.04 (ขอบคุณ @Chai T. Rex ที่ชี้ให้เห็นในความคิดเห็น)

ยังไงก็ตามสำหรับเวอร์ชั่นก่อนหน้านี่มันไป (ยังไม่มีการอัพเดท LTS ที่เสนอ> LTS ดังนั้นสิ่งนี้อาจเกี่ยวข้อง

มันไม่ใช่ไฟล์มันเป็นพาร์ติชันและใช่มันเป็นเพราะความรวดเร็ว

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

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


4
มีไฟล์สลับตอนนี้และเป็นค่าเริ่มต้น (แทนที่จะเป็นพาร์ติชัน) เมื่อติดตั้ง 18.04 ตั้งแต่เริ่มต้น
Chai T. Rex

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

ฉันจะถือว่าเหมือนกัน แต่จนกว่าฉันจะได้รับในมือของฉันมันเป็นเพียงสมมติฐานป่า
dadexix86

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

2

ความเร็วหรือประสิทธิภาพไม่แตกต่างกันมากนักเมื่อเพิ่มพาร์ติชัน swap ให้ใหญ่โดยพลการ

มีปัจจัยหลายอย่างที่เกี่ยวข้องกับการสลับที่อาจส่งผลกระทบต่อประสิทธิภาพการทำงานเช่นswappinessและประเภทของฮาร์ดไดรฟ์ (SDD หรือ HDD)

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


5
คำแนะนำนั้นล้าสมัยแล้ว ระบบที่ทันสมัยพร้อม RAM 32 หรือ 64GB ไม่จำเป็นต้องมีการแลกเปลี่ยน 64 หรือ 128GB
phuclv

3
@ LưuVĩnhPhúcฉันจะไม่ใช้ swap มากกว่า 2 GB ในวันนี้ ...
el.pescado

2gb ดูเหมือนว่าจะต่ำมาก ... เครื่องเสมือนหรือเกมสามารถเติมสลับได้มากกว่า 2gb อย่างรวดเร็ว ฉันคิดว่า swap 4 ถึง 8gb ทำงานได้ดีกับ ram จำนวนเท่าใดก็ได้ หากคุณต้องการมากกว่า 8gb แล้วคุณควรจะเพิ่ม ram เพิ่มเติม
Germain

0

ฉันมาถึงความจริงที่ว่า swap file หรือ swap partition นั้นไม่มีข้อ จำกัด นอกจากนี้ไฟล์ swap 16GB ของฉันยังค่อนข้างใหญ่ แต่ขนาดจะไม่ส่งผลต่อความเร็ว

อย่างไรก็ตามสิ่งที่ฉันรวบรวมคือสิ่งที่มีผลต่อความเร็วคือระบบใช้ประโยชน์จากพื้นที่สว็อปนั้นตรงข้ามกับฮาร์ดแวร์ทางกายภาพ

วิธีแก้ปัญหาของฉันคือการทำให้ค่า swappiness สูงเพื่อให้การแลกเปลี่ยนไม่ได้ใช้มากเกินไปเมื่อเทียบกับฮาร์ดแวร์ที่เร็วขึ้น ดังนั้นฉันจึง:

sudo -s
nano /etc/sysctl.conf

เพิ่มไปยังไฟล์:

#vm.swappiness = 50

บันทึก

sudo sysctl -p

เพื่อรีเฟรช (หรือเพิ่งรีบูตได้)


การเพิ่มบรรทัดที่#vm.swappiness = 50จะ/etc/sysctl.confไม่มีผลใด ๆ ส่วนนำ#ทำให้บรรทัดนี้เป็นความคิดเห็นลบออก คุณสามารถตรวจสอบ swappiness cat /proc/sys/vm/swappinessกับ
mook765

แต่วิธีที่ฉันอธิบายไม่ทำงาน เมื่อฉันป้อน [cat / proc / sys / vm / swappiness] ฉันได้ 50 เป็นผลลัพธ์
Devon van Schoor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.