การสั่งให้ linux ทำการ clear cache ใน RAM
(1/1)
Mr.Alexa:
เวลาเราเข้าไปใน webconfig ของ ClarkConnect เราจะเห็นว่า RAM ถูกใช้เกิน 90% เสมอ
บางท่านจึงเกิดคำถามว่าเรา "เราจะสามารถ clear RAM ได้ไหม?"
คำตอบก็คือ ได้ครับ โดยใช้คำสั่งต่อไปนี้
-----------------------------------------
คำสั่งต่อไปนี้ใช้สั่งให้ kernel ทำการ clear caches ซึ่งมี dentries และ inodes จาก memory หรือ RAM
คำสั่งให้ free pagecache:
echo 1 > /proc/sys/vm/drop_caches
คำสั่งให้ free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
คำสังให้ free pagecache และ dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
คำสั่งนี้เป็น non-destructive operation
ดังนั้น user ควรจะรันคำสั่ง "sync" ก่อนที่จะทำการ clear cache เพื่อให้มั่นใจว่า cache object ทั้งหมดฟรี (สามารถ clear ได้)
---------------------------------------------
ข้อควรรู้ :
- คำสั่งนี้จะเหมาะสำหรับ กรณีที่มีการวัด หรือทดสอบ benchmarks เสียมากกว่า
- linux kernel มีกระบวนการในการจัดการ cache ที่ดีอยู่แล้ว หากไม่จำเป็นไม่ควรเคลียร์แคชใน RAM ทิ้งบ่อย ๆ เพราะจะทำให้สิ้นเปลืองเวลาในการโหลดข้อมูลเข้า cache ใหม่บ่อย ๆ
โดยปกติแล้ว หลักการทำงานของ OS จะพยายามลด access time ใน harddisk
ข้อมูลใดที่ถูกเรียกใช้งานบ่อย ๆ จะถูกเก็บไว้ใน RAM เพื่อที่จะได้ไม่ต้องอ่านเขียน harddisk บ่อย ๆ
แล้วอีกประการหนึ่งคือ RAM ทำงานได้เร็วกว่า harddisk + อยู่ใกล้ CPU มากกว่าอีกด้วย, การประมวลผลข้อมูลย่อมมีประสิทธิภาพมากกว่า
OS เค้าออกแบบมาดีแล้ว ถ้าไม่จำเป็น เราควรปล่อยให้ OS จัดการ manage ข้อมูลด้วยตัวของมันเองจะดีกว่า
ข้อมูลใดไม่ถูกใช้นาน ๆ เดี๋ยวมันก็จะถูกแทนที่ด้วยข้อมูลที่ถูกใช้บ่อย ๆ ไปเอง
---------------------------------------------
ถ้าจำเป็นต้อง clear จริง ๆ อาจจะด้วยเหตุผล
- ลักษณะงานที่ทำอยู่
- ใช้ ๆ ไปแล้วรู้สึกว่าเครื่องอืด ๆ (ควรจับเวลาเฉลี่ยว่า นานกี่ ชั่วโมง แล้วเครื่องเริ่มอืด)
- อื่น ๆ
ก็สามารถรันคำสั่งเพื่อ clear cache ใน RAM ได้ ดังนี้
sync; echo 3 > /proc/sys/vm/drop_caches
nisai2519:
มีประโยชน์มาเลยครับ ขอบคุณมากครับในความรู้ หรือ บนความนี่ :-*
นำร่อง
[0] ดัชนีข้อความ