คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 2: Memory Utilization

Most Recent

Seo Services
บทความนี้จะอธิบายถึงการตรวจสอบประสิทธิภาพการทำงานของ memory บน Linux สำหรับคำสั่งที่จะนำมาใช้ในการตรวจสอบได้แก่ ps, free, vmstat, sar, top และ slabtop  นอกจากนี้จะพูดถึงไฟล์ /proc/meminfo และ /proc/slabinfo

ก่อนอื่นขอพูดถึงไฟล์ที่เกี่ยวกับการแสดงผลการใช้งาน memory เป็นลำดับแรก

/proc/meminfo

ไฟล์นี้จะแสดงรายละเอียดเกี่ยวกับขนาด memory และ swap ที่ถูกใช้ไปและที่เหลือในระบบ รวมถึง shared memory และ buffer ที่ใช้งานโดย kernel
สามารถดูข้อมูลในไฟล์นี้ได้ ด้วยคำสั่ง cat หรือ more แล้วแต่ผู้ใช้งานสดวก

# cat /proc/meminfo
# more /proc/meminfo


/proc/slabinfo

ไฟล์นี้จะเก็บข้อมูลเกี่ยวกับการใช้งาน memory บน slab cache level ซึ่ง linux kernel version ที่สูงกว่า 2.2 จะใช้ slab pools ในการจัดการ memory
นอกจากการใช้คำสั่ง cat หรือ more ในการดูข้อมูล เราสามารถใช้คำสั่ง /usr/bin/slabtop ในการแสดงข้อมูล kernel slab cache แบบ real-time

# slabtop


  • OBJS — จำนวนรวมทั้งหมดของ objects (memory blocks) รวมทั้งที่ใช้งานอยู่ (allocated) และที่ยังไม่ถูกใช้งาน (spare) 
  • ACTIVE — จำนวนของ objects (memory blocks) ที่ใช้งานอยู่ (allocated) 
  • USE — เปอร์เซ็นต์ของ objects ที่ใช้งานอยู่  ((ACTIVE/OBJS)(100))
  • OBJ SIZE — ขนาดของ objects 
  • SLABS — จำนวนทั้งหมดของ slabs 
  • OBJ/SLAB — จำนวน objects ที่อยู่ใน slab 
  • CACHE SIZE — ขนาด cache ของ slab  
  • NAME — ชื่อของ slab 

คำสั่งที่ใช้ในการตรวจสอบการใช้งาน memory

free

คำสั่งนี้แสดงรายละเอียดเกี่ยวกับขนาด memory และ swap ที่ถูกใช้ไปและที่เหลือในระบบ


  • total           คือ จำนวน memory / swap ทั้งหมด
  • used           คือ ส่วนที่ memory / swap ใช้งานอยู่
  • free            คือ ส่วนที่ memory / swap ที่ยังไม่ถูกใช้งาน
  • share          คือ ส่วนที่นำ memory มาใช้แทน disk
  • buff/cache  คือ ส่วนของ memory ที่ถูกใช้งานโดย buffer และ cache
  • available    คือ  จำนวน memory ที่ว่างอยู่สำหรับใช้ในการ เริ่มใช้งาน application ใหม่ โดยไม่ต้อง swapping


ตัวอย่างการแสดงการใช้งาน memory  โดยค่า default มีหน่วยเป็น kilobytes:

# free


ตัวอย่างการแสดงการใช้งาน memory  โดยค่าที่แสดงได้คำนวนเป็นค่าที่ง่ายต่อการอ่าน เช่น
                B = bytes
                K = kilos
                M = megas
                G = gigas
                T = teras

# free -h



ps

คำสั่ง ps เป็นคำสั่งที่อยู่ใน package procps ใช้สำหรับแสดงการประมวลผลต่างๆ (process) ที่กำลังทำงานอยู่ในระบบ

การแสดงรายการ process โดยอ้างอิง % Memory utilization ด้วยคำสั่ง ps มีหลายรูปแบบที่จะแสดง process ที่ใช้งาน memory สูงสุด 10 process ดังตัวอย่างด้านล่าง

# ps avx | sort -nrk 9,9 | head


# ps avx --sort -rss | head -11


# ps aux | sort -nrk 4,4 | head


# ps aux --sort -%mem | head -11


vmstat

เป็นคำสั่งที่ใช้แสดงรายงานเกี่ยวกับสถิติการทำงานของ virtual memory
ตัวอย่างการแสดงผล Memory utilization ด้วยคำสั่ง vmstat โดยแสดงผลทุกๆ 3 วินาทีเป็นจำนวน 5 ครั้ง

  •      swpd               คือ จำนวน virtual memory ที่ใช้
  •      free                  คือ จำนวน memory ที่ยังไม่ถูกใช้งาน
  •      buff                 คือ จำนวน memory ที่ใช้เป็น buffer
  •      cache               คือ จำนวน memory ที่ใช้เป็น cache
  •      si  - swap in     คือ จำนวน memory ที่โยกกลับมาจาก disk (หน่วยต่อวินาที)
  •      so - swap out   คือ จำนวน memory ที่สลับไปใช้งานยัง disk (หน่วยต่อวินาที)

ค่าที่แสดงมีหน่วยเป็น kilobytes 

# vmstat 3 5



sar

รูปแบบคำสั่งในการแสดงผล Memory utilization

sar -r interval [count]

ตัวอย่าง เช่น แสดงผล Memory utilization ทุกๆ 2 วินาที จำนวน 5 ครั้ง

# sar -r 2 5


ในกรณีที่ต้องการจะดูข้อมูลย้อนหลัง ไฟล์ที่จัดเก็บจะอยู่ที่ /var/log/sa โดยไฟล์ของวันที่ 1 คือ sa01, ...
ตัวอย่างถ้าเราต้องการจะดู Memory utilization ในวันที่ 19 สามารถดูได้โดยใช้คำสั่งดังนี้

# cd /var/log/sa
# sar -r -f sa19 | more


top

แสดงรายละเอียด process เรียงตามการใช้งาน memory โดยการกด M หลังจากการทำงานคำสั่ง top โดยดูในคอลัมน์ %MEM

# top
กด M


นอกจากนี้สามารถดูภาพรวมการใช้งาน memory ดังภาพด้านล่าง



การมี memory จำนวนมากเป็นสิ่งที่ application/buffer ต้องการ โดยที่ kernel จะมองหาพื้นที่จาก cache memory page และหาพื้นที่ที่ใหญ่พอให้พอดีกับความต้องการของ malloc โดยจะทำการ clear ข้อมูลใน memory และจัดสรร cache ให้กับ application ที่ต้องการ
Linux kernel จะใช้ active และ inactive memory ของระบบเพื่อจัดการ memory resource ถ้าเครื่องใช้งาน resource หนักมาก ทำให้ memory มีไม่เพียงพอที่จะใช้ในการ load application หรือใช้ memory swap หนักเกินไป ดูได้จากค่า si (swap in) และ so (swap out) จากคำสั่ง vmstat

การวิเคราะห์

จากคำสั่ง vmstat

  • ถ้า swap out (ค่า so) มีค่ามากกว่า 0 แสดงว่าจำนวน memory มีไม่เพียงพอสำหรับการใช้งาน


จากคำสั่ง free

  • ถ้ามีค่า used ในส่วนของ swap แสดงว่าเคยมีอาการที่ memory ไม่พอใช้ แล้วยืมเนื้อที่จาก disk ใช้งาน ดังนั้นค่านี้ยิ่งน้อยยิ่งดี ถ้าเป็น 0 แสดงว่ายังไม่เคยใช้ memory หมดเลย
  • หากค่า used ในส่วนของ swap มีค่าสูง และ free memory เหลือน้อย แสดงว่า memory ไม่พอใช้ ให้เพิ่ม memory เป็นจำนวนที่มากกว่าค่า used ของ swap 



หวังว่าบทความนี้คงมีส่วนช่วยในการวิเคราะห์ไม่มากก็น้อย

วิสูจน์ อมตาริยกุล

คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 2: Memory Utilization คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 2: Memory Utilization Reviewed by Wisoot Amatariyakul on 8:57 PM Rating: 5

No comments:

Powered by Blogger.