ค้นหาเว็บไซต์

วิธีล้างแคชหน่วยความจำ RAM, บัฟเฟอร์และ Swap บน Linux


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

ในบทความนี้ เราจะสำรวจวิธีการล้างแคชหน่วยความจำ RAM บัฟเฟอร์ และพื้นที่สว็อปบนระบบ Linux เพื่อเพิ่มประสิทธิภาพโดยรวม

ทำความเข้าใจแคชหน่วยความจำ RAM บัฟเฟอร์ และพื้นที่สว็อป

มาสำรวจแคชหน่วยความจำ RAM บัฟเฟอร์ และพื้นที่สว็อปบนระบบ Linux กัน

แคชหน่วยความจำ RAM

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

กันชน

เช่นเดียวกับแคช บัฟเฟอร์จะเก็บข้อมูลไว้ชั่วคราวแต่มีจุดประสงค์ที่แตกต่างกัน บัฟเฟอร์จัดเก็บข้อมูลที่มีการถ่ายโอนระหว่างส่วนประกอบต่างๆ เช่น CPU และฮาร์ดดิสก์ ช่วยให้การสื่อสารราบรื่น อย่างไรก็ตาม ข้อมูลที่บัฟเฟอร์มากเกินไปอาจเป็นอุปสรรคต่อความเร็วของระบบได้

สลับพื้นที่

พื้นที่สว็อป คือพื้นที่ที่จัดสรรบนฮาร์ดดิสก์ซึ่งทำหน้าที่เป็นหน่วยความจำเสมือนเมื่อ RAM จริงหมด แม้ว่าจะป้องกันระบบล่มเนื่องจากหน่วยความจำเหลือน้อย แต่ก็อาจทำให้ระบบช้าลงได้หากใช้งานมากเกินไป

การล้างแคช บัฟเฟอร์ และ Swap Space ใน Linux

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

วิธีล้างแคชหน่วยความจำ RAM ใน Linux

ระบบ Linux ทุกระบบมีสามตัวเลือกในการล้างแคชโดยไม่รบกวนกระบวนการหรือบริการใดๆ

กำลังล้างแคชเพจ

1. หากต้องการล้าง PageCache เท่านั้น คุณสามารถใช้คำสั่งต่อไปนี้ ซึ่งจะล้าง PageCache โดยเฉพาะ ซึ่งจะช่วยเพิ่มทรัพยากรหน่วยความจำ

sudo sync; echo 1 > /proc/sys/vm/drop_caches

การล้างฟันปลอมและไอโหนด

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

sudo sync; echo 2 > /proc/sys/vm/drop_caches

การล้าง PageCache, Dentries และ Inodes

3. หากต้องการล้าง pagecache, dentries และ inodes คุณสามารถใช้คำสั่งต่อไปนี้ ซึ่งจะซิงค์ ระบบไฟล์และล้างเพจแคช ฟันปลอม และไอโหนด ซึ่งช่วยเพิ่มหน่วยความจำและปรับปรุงประสิทธิภาพของระบบ

sudo sync; echo 3 > /proc/sys/vm/drop_caches 

ต่อไปนี้เป็นคำอธิบายของแต่ละส่วนของคำสั่งข้างต้น:

  • sudo ใช้เพื่อรันคำสั่งในฐานะ superuser
  • sync จะล้างบัฟเฟอร์ระบบไฟล์
  • <รหัส>"; ” อัฒภาคใช้เพื่อแยกคำสั่งหลายคำสั่งในบรรทัดเดียว
  • คำสั่ง echo 3 > /proc/sys/vm/drop_caches ใช้เพื่อลบแคชของเพจ ซึ่งเป็นพื้นที่เก็บข้อมูลชั่วคราวสำหรับไฟล์ที่เข้าถึงล่าสุด

หมายเหตุ: ไฟล์ drop_caches จะควบคุมว่าควรล้างข้อมูลแคชประเภทใด และค่าต่างๆ จะเป็นดังนี้:

  • 1 – ล้างเฉพาะแคชของหน้า
  • 2 – ล้างช่องว่างและ inodes
  • 3 – ล้างแคชของหน้า dentries และ inodes

ตามที่กล่าวไว้ในเอกสารเคอร์เนล การเขียนไปที่ drop_caches จะล้างแคชโดยไม่ฆ่าแอปพลิเคชัน/บริการใดๆ คำสั่ง echo ทำหน้าที่เขียนลงในไฟล์

หากคุณต้องล้างแคชของดิสก์ คำสั่งแรกจะปลอดภัยที่สุดในองค์กรและการใช้งานจริงเป็น “...echo 1 > …. ” จะล้างเฉพาะ PageCache เท่านั้น

ไม่แนะนำให้ใช้ตัวเลือกที่สามด้านบน “...echo 3 > ” ในการใช้งานจริงจนกว่าคุณจะรู้ว่าคุณกำลังทำอะไรอยู่ เนื่องจากจะล้าง pagecache, ฟันปลอม และ ไอโนเดส

วิธีล้าง Swap Space ใน Linux

หากต้องการล้างพื้นที่สว็อป คุณสามารถใช้คำสั่ง swapoff พร้อมด้วยตัวเลือก -a ซึ่งจะปิดการใช้งานพาร์ติชั่นสว็อปทั้งหมด

sudo swapoff -a

จากนั้นให้ย้อนกลับโดยรันคำสั่งต่อไปนี้ ซึ่งจะเปิดใช้งานพาร์ติชั่นสลับทั้งหมด

sudo swapon -a

แนะนำให้ฟรีบัฟเฟอร์ แคช และสลับใน Linux หรือไม่

โดยทั่วไป ไม่ใช่ความคิดที่ดีที่จะเพิ่ม บัฟเฟอร์ และ แคช ด้วยตนเองใน Linux ที่อาจใช้โดยเคอร์เนล Linux ซึ่งได้รับการออกแบบมาเพื่อจัดการทรัพยากรเหล่านี้อย่างมีประสิทธิภาพ และการล้างข้อมูลด้วยตนเองอาจขัดขวางประสิทธิภาพของระบบได้

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

ในทำนองเดียวกัน การล้างพื้นที่สว็อปใน Linux โดยทั่วไปไม่ใช่แนวทางปฏิบัติตามปกติหรือที่แนะนำภายใต้สถานการณ์ปกติ

การเพิ่มประสิทธิภาพหน่วยความจำอัตโนมัติ

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

เปิดการกำหนดค่า crontab

crontab -e

เพิ่มบรรทัดต่อไปนี้เพื่อล้างแคช บัฟเฟอร์ และพื้นที่สลับทุกวันเวลาเที่ยงคืน:

0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches
0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches
0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches
0 0 * * * sudo swapoff -a && sudo swapon -a

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดเวลางานด้วย cron คุณอาจต้องการอ่านบทความของเราที่ชื่อ '11 Cron Scheduling Jobs'

แนะนำให้ล้างแคช RAM บนเซิร์ฟเวอร์การผลิต Linux หรือไม่

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

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

บทสรุป

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

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