พื้นที่ Swap บน Linux
Swap คือพื้นที่บนดิสก์ที่ Linux kernel ใช้เป็นส่วนขยายของหน่วยความจำ โดยจะย้ายหน้าหน่วยความจำที่ไม่ได้ใช้งานบ่อยไปไว้ที่นั่นเพื่อให้ RAM ว่างสำหรับงานที่กำลังทำอยู่ พื้นที่นี้อาจเป็นพาร์ทิชันเฉพาะหรือไฟล์ swap ก็ได้ ซึ่งสามารถตรวจสอบได้ด้วยคำสั่ง free -h และ swapon --show
1ทำไม Swap ถึงยังคงมีประโยชน์
แม้จะมี RAM จำนวนมาก แต่ Swap ช่วยให้ kernel ย้ายหน้าหน่วยความจำที่ไม่ได้ใช้งานออกจาก RAM และเป็นบัฟเฟอร์ก่อนที่ out-of-memory killer จะหยุดการทำงานของโปรเซส อย่างไรก็ตาม หากมีการสลับข้อมูล (swapping) อย่างหนักและต่อเนื่อง แสดงว่าเครื่องต้องการ RAM เพิ่มขึ้นหรือต้องลดภาระงานลง
2Swappiness
การตั้งค่า kernel ที่ชื่อ vm.swappiness (ค่า 0-200 ค่าเริ่มต้นคือ 60) มีผลต่อความเต็มใจของ kernel ในการสลับข้อมูลเมื่อเทียบกับการล้างไฟล์แคช ค่าที่ต่ำกว่าจะช่วยเก็บหน่วยความจำของแอปพลิเคชันไว้ใน RAM ได้นานขึ้น สามารถอ่านค่าได้ด้วย sysctl vm.swappiness และตั้งค่าถาวรได้ในไฟล์ภายใต้ /etc/sysctl.d/
3ไฟล์ Swap
ไฟล์ swap จะถูกสร้างขึ้น จัดรูปแบบด้วย mkswap เปิดใช้งานด้วย swapon และเพิ่มลงใน /etc/fstab เพื่อให้ใช้งานได้หลังรีบูต โดยไฟล์ต้องมีสิทธิ์การเข้าถึงเป็น 600
วิธีเพิ่มไฟล์ swap ขนาด 2 GB
- สร้างไฟล์:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 - จำกัดการเข้าถึง:
sudo chmod 600 /swapfile - จัดรูปแบบไฟล์:
sudo mkswap /swapfile - เปิดใช้งาน:
sudo swapon /swapfile - ตั้งค่าให้ถาวร: เพิ่มบรรทัด '/swapfile none swap sw 0 0' ลงใน
/etc/fstab - ตรวจสอบ:
swapon --showและfree -h
ข้อควรระวัง
- บน Btrfs ไฟล์ swap ต้องการการเตรียมการพิเศษ (ห้ามใช้ copy-on-write) โปรดปฏิบัติตามคู่มือของ Linux distribution ของคุณ
- ข้อผิดพลาดใน
/etc/fstabอาจทำให้ระบบไม่สามารถบูตได้: โปรดตรวจสอบบรรทัดที่เพิ่มก่อนทำการรีบูต
บทความที่เกี่ยวข้อง
- df (disk free)วิธีอ่านผลลัพธ์จากคำสั่ง df, เหตุผลที่ Use% อาจถึง 100% ก่อนที่ Avail จะเป็นศูนย์สำหรับผู้ใช้ทั่วไป และวิธีตรวจสอบ inode ด้วย df -i
- systemd units และ systemctlsystemd unit คืออะไร ประเภทของ unit ที่พบบ่อย รวมถึงวิธีการเริ่ม หยุด เปิดใช้งาน และตรวจสอบบริการต่างๆ ด้วย systemctl
- การใช้งานดิสก์ด้วย du และ ncduวิธีค้นหาว่าสิ่งใดทำให้ดิสก์ Linux เต็มด้วย du และ ncdu แบบโต้ตอบ พร้อมตัวเลือกที่จำกัดการทำงานอยู่ภายในระบบไฟล์เดียว
แหล่งอ้างอิง
- swapon(8) man7.org
- mkswap(8) man7.org
- free(1) man7.org
- เอกสารสำหรับ /proc/sys/vm (kernel.org) kernel.org
ตรวจสอบล่าสุด: