Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

จัดการ Buffer และ Cache ใน Linux: เมื่อไหร่และวิธีการล้างให้ถูกต้อง

ผู้ใช้บางคนต้องการล้าง buffer และ cache ของ Linux เพราะคิดว่ามันกิน RAM มากเกินไป — มักมาจากพฤติกรรม Windows/macOS ที่ไม่ cache ระดับนี้ แต่จริงๆ แล้วการล้าง cache แบบไม่จำเป็น อาจทำให้ประสิทธิภาพลดลง เพราะ Linux cache อย่าง 적극เพื่อความเร็ว

อย่างไรก็ตาม การ ซิงโครไนซ์ RAM กับดิสก์ (synchronize) คือสิ่งที่ควรทำ — มักเข้าใจผิดว่าคือ "ล้าง cache" แต่จริงๆ แล้วคือการให้ข้อมูลใน RAM และดิสก์ตรงกัน

วิธีที่ 1: ใช้คำสั่ง sync (แนะนำให้ใช้วิธีนี้เป็นหลัก)

คำสั่ง sync จะเขียนข้อมูลที่รออยู่ใน memory buffer (dirty pages) ลงดิสก์/SSD จริง ๆ ทำให้ข้อมูลบน RAM และดิสก์สอดคล้องกัน หากระบบดาวน์ทันที ข้อมูลก็จะเป็นปัจจุบัน

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

วิธีที่ 2: ล้าง Buffer/Cache ทั้งหมด (ใช้เฉพาะกรณีพิเศษ)

⚠️ คำเตือน: วิธีที่ 1 แทบจะเพียงพอเสมอ Linux cache เพื่อความเร็วโดยเจตนา การล้าง cache ทั้งหมดจะทำให้ระบบช้าลงชั่วคราว ใช้ได้เฉพาะ:

  • ทำ benchmark ฮาร์ดแวร์/ไฟล์سيستم
  • พัฒนาเครื่องมือวัดประสิทธิภาพ

คำสั่ง (ต้อง root):

free && sync && echo 3 > /proc/sys/vm/drop_caches && free
  • free แสดงหน่วยความจำก่อน/หลัง
  • echo 3 > /proc/sys/vm/drop_caches ล้าง pagecache, dentries, inodes
  • รันด้วย sudo หากเป็นผู้ใช้ทั่วไป

วิธีอื่น: ปิด/เปิด swap ด้วย sudo swapoff -a / sudo swapon -a — ต้อง root เช่นกัน และใช้เฉพาะ benchmarking เท่านั้น

สรุป

ผู้ใช้ทั่วไป: ใช้แค่ sync ก่อนถอดดิสก์ USB หรือก่อนปิดเครื่อง — เพียงพอและปลอดภัยที่สุด


เกี่ยวกับผู้เขียน

Kevin Arrows — MCTS, 10+ ปีประสบการณ์ เฉพาะทางซอฟต์แวร์ ความปลอดภัยไซเบอร์ คลาวด์