ข้อเสียของการไม่มี swap partition


8

ฉันเพิ่งติดตั้ง Ubuntu 10.04 บนแล็ปท็อปของฉัน เนื่องจากข้อ จำกัด ด้านพื้นที่ของ SSD ฉันไม่ได้ตั้งค่า swap partition สำหรับระบบปฏิบัติการและฉันมี RAM 1.5GB

มีคำเตือนระหว่างการติดตั้ง แต่ฉันคิดว่ามันไม่ใช่เรื่องใหญ่เพราะทุกอย่างเป็นไปอย่างราบรื่น

ในระยะยาวจะมีข้อเสียของการไม่มี swap partition หรือไม่?


2
Gparted จะมีความสุขที่จะแกะสลักเพียงไม่กี่กิ๊กของไดรฟ์รากของคุณและทำมันได้อย่างง่ายดายและมั่นใจในตนเอง
msw

คำตอบ:


6

ฉันคิดว่าถ้าฉันจะเขียนคำตอบสำหรับคำถามที่คุณต้องอธิบายสิ่งที่ swapfile ทั้งหมดเล็กน้อยก่อน ให้อภัยฉันสำหรับความเหนื่อยล้าที่ยาวนาน

swapfile / swap-partition ซึ่งคล้ายกับ pagefile ใน windows เป็นพื้นที่ฮาร์ดดิสก์ที่อุทิศให้กับการใช้หน่วยความจำที่ดีขึ้น มีการใช้พื้นที่สว็อปสองครั้ง

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

  2. เมื่อหน้าหน่วยความจำบางส่วน (หน่วยความจำถูกแบ่งออกเป็น 'หน้า') ถูกใช้มานานแล้ว แต่ไม่ได้ใช้งานอีกต่อไปตอนนี้มันจะถูกถ่ายโอนใน swapfile และหน่วยความจำที่เหลือสามารถใช้เพื่อทำอย่างอื่น เช่นแม้กระทั่งแคช!) - เมื่อสิ่งนี้เกิดขึ้นในระบบที่ไม่มี swapspace สิ่งนี้จะส่งผลให้หน้าว่างในหน่วยความจำ นี่มันไม่ได้ร้ายแรงอะไรนักเนื่องจากเรามีหน่วยความจำจำนวนมากในทุกวันนี้

จากนั้นตอนนี้เรามีการใช้งานของพาร์ติชั่น swapfile / swap ไว้แล้วมักจะมองไม่เห็นเท่าไหร่ - ขึ้นอยู่กับฟังก์ชั่นของเครื่อง หากเป็นเครื่องเดสก์ท็อปให้ตั้งค่าเป็น 1-1.5x หน่วยความจำ ถ้าเป็นเครื่องเซิร์ฟเวอร์ให้ทำเช่นเดียวกัน แต่ให้สังเกตการใช้งาน swap หากมีการใช้งานอย่างหนักให้อัพเกรดหน่วยความจำ

ดังที่คนอื่น ๆ ชี้ให้เห็นแล้ว gparted สามารถช่วยคุณแกะสลักพื้นที่จำนวนมากจากพาร์ติชัน ext2 / ext3 ของคุณ แต่คุณสามารถใช้ swapfile เช่นกัน

dd if=/dev/zero of=/swapfile bs=1024 count=1048576
mkswap /swapfile
swapon /swapfile

คุณควรจะมี

swapfile none swap sw 0 0

บน fstab เพื่อให้แน่ใจว่ามันถูกใช้ในการรีบูตแต่ละครั้ง

และอีกอย่างหนึ่ง: หากคุณไม่ต้องการสลับพื้นที่ แต่ต้องการลดการใช้งานเว้นแต่ว่าหน่วยความจำของคุณขยายออกจริง ๆ คุณสามารถเปลี่ยน "swappiness" ของเคอร์เนลได้โดยการเปลี่ยน /proc/sys/vm/swappiness (ค่า 0-100 ค่าเริ่มต้น 60)


สามารถใช้สำหรับการแลกเปลี่ยนอื่นนอกเหนือจากที่คุณระบุไว้เช่นพาร์ติชันการสลับที่ใช้เพื่อจัดเก็บไฟล์การถ่ายโอนข้อมูลความผิดพลาดโดยอัตโนมัติ นอกจากนี้ขนาดหน่วยความจำ 1-1.5x ไม่ใช่ค่าที่ยอมรับกันโดยทั่วไป ตามทฤษฎีแล้วคอมพิวเตอร์ที่มีหน่วยความจำมากขึ้นจะต้องใช้หน่วยความจำน้อยกว่าในการแลกเปลี่ยนเนื่องจากมี X RAM หมดแล้วและต้องการ RAM เพิ่มขึ้นอีก Y มันอาจจะสามารถใส่หน่วยความจำนั้นเข้าไปใน RAM ที่มีอยู่แทนการแลกเปลี่ยนได้
TOOGAM

@TOOGAM มันเป็นในปี 2010 เมื่อผู้คนใช้งาน RAM ขนาด 2-4GB ในเดสก์ท็อป
bubu


3

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

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


3
สิ่งนี้จะเกิดขึ้นไม่ว่าคุณจะมีการสลับหรือไม่ก็ตาม
Ignacio Vazquez-Abrams

2
ที่จริงแล้วเคอร์เนลจะไม่ "เริ่มวางหน่วยความจำในตำแหน่งสุ่ม" แต่จะทำในสิ่งที่ต้องทำและเริ่มฆ่ากระบวนการที่ถือว่า "สำคัญน้อยกว่า" จนกว่าสถานการณ์จะดีขึ้น สิ่งนี้ทำได้โดย "OOM killer" ดูเช่น linux-mm.org/OOM_Killer
sleske

ฉันยืนแก้ไขแล้ว
Nitrodist

0

หลังจากการติดตั้งให้ตรวจสอบการใช้งานหน่วยความจำของคุณเมื่อเรียกใช้การดำเนินการที่ใช้หน่วยความจำมากหรือเพียงแค่เปิดแอพ 'ใหญ่' เช่น Openoffice.org, คลายการบีบอัดไฟล์และอื่น ๆ หากคุณเห็นว่าหน่วยความจำทั้งหมดที่ใช้มีขนาดเกือบ 1.5 GB อาจเป็นความคิดที่ดีที่จะมีพาร์ทิชันสว็อปหรือไฟล์สว็อปในกรณีที่คุณเรียกใช้บางอย่างที่ใช้หน่วยความจำจำนวนมากอย่างสะดวก แม้แต่ส่วนของเคอร์เนล (ไม่ดีไม่ดีจริงๆ ... )


ฉันอยากรู้อยากเห็นมันเป็นไปได้ไหมที่จะทำให้ linux ดรอปส่วนของเคอร์เนลเพื่อเพิ่มหน่วยความจำสำหรับกระบวนการที่กำลังทำงานอยู่
Igor Zinov'yev

อาจไม่ใช่ แต่คุณรู้ว่าฉันหมายถึงอะไร ...
Hello71

AFAIK เคอร์เนล Linux จะยังคงอยู่ในหน่วยความจำเสมอ มันโหลดเป็นส่วนแรกของลำดับการบู๊ตและยังคงอยู่ หน่วยความจำไม่เคยเป็นอิสระหรือแม้กระทั่งเปลี่ยน อย่างไรก็ตามคุณสามารถโหลดและยกเลิกการโหลดโมดูลและหน่วยความจำนั้นได้ จะ เป็นอิสระ (ฉันเชื่อว่า) แต่โดยทั่วไปจะมีเพียงไม่กี่โหล kb ต่อโมดูล เคอร์เนลยังดูแลโครงสร้างข้อมูลภายในที่หลากหลาย & amp; บัฟเฟอร์อาจทำให้บางคนเป็นอิสระ (ไม่แน่ใจ)
sleske

0

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

https://stackoverflow.com/questions/4567972/error-executing-aapt-all-of-the-sudden โดยสรุปเครื่องมือบางอย่างที่เรียกใช้จากกระบวนการ Java / แอปพลิเคชันขนาดใหญ่จริง ๆ จะไม่สามารถทำงานได้ตลอดเวลา อย่างไรก็ตามผู้ใช้ทั่วไปส่วนใหญ่จะไม่พบปัญหานี้

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