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
# echo 1 > /proc/sys/vm/drop_caches
ผลการใช้คำสั่งก็ออกดังรูป ลองเปรียบเทียบกับรูปด้านบนดูนะครับ ความเปลี่ยนแปลงเป็นอย่างไร
ส่วนวิธีการจริงๆที่ดูว่า RAM นั้นได้หมดไปแล้ว ให้ดูที่ SWAP ครับ ถ้า SWAP ขึ้นแสดงว่า RAM หมดจริงๆ แต่ทุกๆวันนี้ SWAP ก็แทบไม่กระดิกอยู่แล้ว ถ้า SWAP ใช้ไป 50 -100 MB ก็ไม่ใช่เรื่องผิดปกติครับ
แต่ถ้าอยาก Clear SWAP ก็ใช้คำสั่งนี้ครับ
$ swapoff -a
$ swapon -a
$ swapon -a
RAM จริงมันจะเหลือไม่มากหรอกครับ เหลือนิดเดียวเอง แต่ Cache นี่สิ มันไปกองไว้บานเลยครับ เหมือนการจับจองพื้นที่เอาไว้เพื่อพร้อมใช้งานครับ ดูดีๆ Process ค้างคือแข็งตัว แล้วมันก็แตก Process ใหม่ทำงานไปเรื่อยๆ มันเป็นแบบนี้ Memory Cache (Swap, Ram) จะหมด (ปกติจะมีเป็นสองเท่าของหน่วยความจำจริง) หาก Swap, Ram หมดนั้นหมายความว่า Kernel มีปัญหาแล้วครับ หรือไม่ตัว Application เองก็มีปัญหาครับ
สรุปแล้วคือ ที่ RAM หายไป Linux เอาไปทำ Cache ครับ