สำนักวิทยบริการและเทคโนโลยีสารสนเทศ (สวส.)

Office of Academic Resources and Information Technology

การคืน RAM ให้กับ Linux

      RAM บน Linux หมด = เขียนลง SWAP คือยังทำงานได้ต่อ  ใน Linux  หลังจาก BOOT เข้า OS แล้ว Linux จะฮวบ RAM ไปเกือบหมด  เพราะ Linux จะบริหารจัดการ RAM ให้หมดเอง ฉะนั้นจึงไม่ต้องสงสัยทำใมเวลาเปิด โปรแกรมบน Linux แล้วมันเปิดเร็ว  แล้วกรณีที่ RAM หมดไปจากระบบจริงๆ Linux จะใช้ SWAP แทนครับ  แล้วเวลาสั่ง $free คุณอาจคิดว่า RAM นั้นมันใช้ได้แค่นี้เองหรอ แต่ความจริงแล้ว ก็ใช่ครับ เพราะ Linux ได้คำนวน RAM ที่จะใช้ในแต่ละ Application ไว้แล้ว
    ลองสั่ง free -m แล้วเอามาแปะไว้ให้ช่วยกันวิเคราะห์
อาการปกติของ Cache Proxy Server คือ ใช้ RAM ในการทำ Hot Object ครับ ลองตรวจสอบขนาด cache_dir ดูครับ ถ้าตั้งไว้เยอะมาก ก็จำเป็นต้องใช้ RAM เยอะด้วยเช่นกัน แต่ถ้ากังวลเรื่อง RAM ไม่คืนนี่ ลอง
 
# sync
# echo 1 > /proc/sys/vm/drop_caches
 
ผลการใช้คำสั่งก็ออกดังรูป  ลองเปรียบเทียบกับรูปด้านบนดูนะครับ ความเปลี่ยนแปลงเป็นอย่างไร
 
ส่วนวิธีการจริงๆที่ดูว่า RAM นั้นได้หมดไปแล้ว ให้ดูที่ SWAP ครับ ถ้า SWAP ขึ้นแสดงว่า RAM หมดจริงๆ  แต่ทุกๆวันนี้ SWAP ก็แทบไม่กระดิกอยู่แล้ว ถ้า SWAP ใช้ไป 50 -100 MB ก็ไม่ใช่เรื่องผิดปกติครับ
แต่ถ้าอยาก Clear SWAP ก็ใช้คำสั่งนี้ครับ
 
$ swapoff -a
$ swapon -a
 
   RAM จริงมันจะเหลือไม่มากหรอกครับ เหลือนิดเดียวเอง แต่ Cache นี่สิ มันไปกองไว้บานเลยครับ เหมือนการจับจองพื้นที่เอาไว้เพื่อพร้อมใช้งานครับ  ดูดีๆ Process ค้างคือแข็งตัว แล้วมันก็แตก Process ใหม่ทำงานไปเรื่อยๆ มันเป็นแบบนี้ Memory Cache (Swap, Ram) จะหมด (ปกติจะมีเป็นสองเท่าของหน่วยความจำจริง) หาก Swap, Ram หมดนั้นหมายความว่า Kernel มีปัญหาแล้วครับ หรือไม่ตัว Application เองก็มีปัญหาครับ
 
สรุปแล้วคือ ที่ RAM หายไป Linux เอาไปทำ Cache ครับ