ฉันใช้ RAM เพื่อจัดเก็บตารางฐานข้อมูลของฉันและตารางอื่น ๆ ถูกเก็บไว้ในฮาร์ดดิสก์
วันนี้ฉันรู้ว่ากระบวนการของฉันใช้หน่วยความจำสลับ ตอนนี้ swap memory คืออะไรและฉันจะตรวจสอบได้อย่างไรว่าโพรเซสใดที่ใช้ swap memory และฉันจะหยุดมันได้อย่างไร?
ฉันใช้ RAM เพื่อจัดเก็บตารางฐานข้อมูลของฉันและตารางอื่น ๆ ถูกเก็บไว้ในฮาร์ดดิสก์
วันนี้ฉันรู้ว่ากระบวนการของฉันใช้หน่วยความจำสลับ ตอนนี้ swap memory คืออะไรและฉันจะตรวจสอบได้อย่างไรว่าโพรเซสใดที่ใช้ swap memory และฉันจะหยุดมันได้อย่างไร?
คำตอบ:
ถ้าคุณใช้หน่วยความจำกายภาพหมดคุณใช้หน่วยความจำเสมือนซึ่งเก็บข้อมูลไว้ในหน่วยความจำบนดิสก์ การอ่านจากดิสก์นั้นมีขนาดของคำสั่งช้ากว่าการอ่านจากหน่วยความจำดังนั้นสิ่งนี้จึงช้าลงทุกอย่าง (การแลกเปลี่ยนข้อมูลระหว่างหน่วยความจำจริงและหน่วยความจำเสมือนคือ "การสลับ" พื้นที่บนดิสก์คือ "พื้นที่สลับ")
หากแอปของคุณ "กำลังใช้ swap" คุณต้องใช้หน่วยความจำน้อยลงหรือซื้อ RAM เพิ่ม
(การสลับมีประโยชน์เนื่องจากแอปพลิเคชันที่ไม่ได้ใช้สามารถเก็บไว้ในดิสก์ได้จนกว่าจะมีการใช้งานจากนั้นพวกเขาสามารถ "paged ใน" และทำงานได้ตามปกติอีกครั้งแม้ว่ามันจะไม่ได้อยู่ในหน่วยความจำก็ตาม สำหรับสิ่งอื่นเช่นดิสก์แคชดังนั้นจึงเป็นคุณสมบัติที่มีประโยชน์มาก แต่ถ้าคุณมีหน่วยความจำกายภาพไม่เพียงพอที่จะเรียกใช้โปรแกรมของคุณคุณต้องมีหน่วยความจำเพิ่มเติมแน่นอนโชคดีที่หน่วยความจำราคาถูกจริงๆในทุกวันนี้)
คอมพิวเตอร์มีหน่วยความจำกายภาพจำนวนหนึ่ง แต่ส่วนใหญ่เราต้องการมากกว่านี้ ดังนั้นเราจึงสลับหน่วยความจำบนดิสก์
ทุกครั้งที่เราต้องการหน่วยความจำนั้นจะต้องเปลี่ยนกลับเป็นหน่วยความจำ (สลับชิ้นส่วนอื่น ๆ ออก) มีอัลกอริธึมที่ชาญฉลาดอย่างมากในการลดความล่าช้า แต่บางครั้งเราก็ต้องรอ
บน windows ถ้าคุณดูตัวจัดการงานคุณสามารถแสดงข้อผิดพลาดของหน้าคอลัมน์ นี่แสดงจำนวนครั้งที่แอปพลิเคชันขอหน่วยความจำที่อยู่บนดิสก์และจำเป็นต้องสลับ ข้อบกพร่องของหน้าจำนวนมาก = แอปพลิเคชันช้า
กระบวนการนี้ใช้ในหลายระดับ สรุปจากเร็วไปช้า:
cat /proc/pid/smaps
หากคุณไม่ต้องการใช้ swap อย่าใช้ swap partition (ใส่เครื่องหมายคอมเม้นในบรรทัด/etc/fstab
) แต่จะป้องกันไม่ให้เริ่มกระบวนการใหม่และจะทำให้ malloc ล้มเหลวหากคุณใช้หน่วยความจำกายภาพหมด ไม่ใช่ความคิดที่ดีโดยทั่วไป ... ไม่ค่อยปลอดภัยและไม่มีประโยชน์มากนักเนื่องจากระบบปฏิบัติการจะเก็บหน้าร้อนไว้ในหน่วยความจำและจะเปลี่ยนเป็นดิสก์ที่ไม่ได้ใช้งานเมื่อเร็ว ๆ นี้
อีกวิธีคือการแฮ็คฐานข้อมูลของคุณดังนั้นมันจึงล็อคหน้าเว็บไว้ในหน่วยความจำ (ฉันรู้ว่าสามารถทำได้ แต่ฉันไม่สามารถบอกคุณได้ในขณะนี้ว่าอย่างไร) แต่อย่างไรก็ตามมันเหมือนกันว่าฐานข้อมูลของคุณจะใช้การแลกเปลี่ยนของตัวเอง กลไกการแคช
หากต้องการทราบว่า swap คืออะไรและหน่วยความจำเสมือนทำงานอย่างไรฉันขอแนะนำให้คุณดูการบรรยายของระบบปฏิบัติการบางที MIT MIT Courseware อาจช่วยคุณได้
ฉันพบคำตอบบางส่วนแล้ว หน่วยความจำ Swap เป็นพื้นที่ในฮาร์ดดิสก์ของคอมพิวเตอร์ของคุณที่ระบบปฏิบัติการจะใช้เพื่อใส่ข้อมูลที่อยู่บน RAM เพื่อให้ว่างสำหรับแอปพลิเคชันอื่น สิ่งนี้ควรทำเมื่อระบบต้องการหน่วยความจำสำหรับกระบวนการใหม่และไม่มีดังนั้นเราจะเห็นได้ว่าหากระบบของเรามี RAM มากมายมันอาจจะไม่ต้องการหน่วยความจำ SWAP
UPDATE
หากต้องการทราบว่าพื้นที่สวอป (หรือหน่วยความจำเสมือน) อยู่ที่ไหนคุณสามารถไปที่ Task Manger (CTRL + ALT + DEL) และเปิดจาก VIEW -> COLUMNS -> VIRTUAL MEMORY ตอนนี้เพียงแค่คำนวณความแตกต่างระหว่างการใช้หน่วยความจำและหน่วยความจำเสมือน นี่คือคำแนะนำวิธีการดูว่าคุณใช้ Vista หรือไม่: http://www.ehow.com/how_5067693_increase-swap-space.html
Swap เป็นพื้นที่ว่างในฮาร์ดดิสก์ที่ใช้เป็น RAM มันคือ (พูดค่อนข้าง)ช้ามากแต่หยุดคอมพิวเตอร์จากการล้มเมื่อพวกเขาพยายามที่จะจัดการกับข้อมูลเพิ่มเติมแล้ว RAM ของพวกเขาสามารถจัดการ
หากต้องการหยุดกระบวนการไม่ให้ใช้ swap ให้ติดตั้ง RAM เพิ่มเติม
หากคุณไม่ต้องการให้กระบวนการของคุณใช้หน่วยความจำ swap ให้ปิดการใช้งานหน่วยความจำแบบ swap ทั้งหมด น่าเสียดายที่หากคุณมีหน่วยความจำไม่เพียงพอเคอร์เนล Linux จะฆ่ากระบวนการที่กำลังทำงานอยู่บางส่วนเพื่อเพิ่มหน่วยความจำให้ใช้งานได้
หากคุณมี RAM เพียงพอสำหรับระบบของคุณคุณสามารถไปได้โดยไม่ต้องเปลี่ยนหน่วยความจำ
ฉันมีแล็ปท็อปที่มี RAM 768Mb ซึ่งไม่ได้ใช้หน่วยความจำ swap มันดีพอสำหรับความต้องการของฉัน ฉันมีเซิร์ฟเวอร์ที่มี 256MB RAM และไม่ได้ใช้หน่วยความจำสลับ มันรันเซิร์ฟเวอร์เสมือน 8 เซิร์ฟเวอร์โดยใช้การจำลองเสมือน OpenVZ โดยไม่มีปัญหา
ดังนั้นขึ้นอยู่กับคุณหากคุณต้องการหน่วยความจำสลับ