Unix, Linux: vmstat command

vmstat เป็นคำสั่งที่ไว้แสดงรายงาน CPU activity, memory, paging รวมๆ ก็คือไว้สำหรับดู performance ของระบบนะเอง

parameter โดยทั่้วไปของ vmstat ก็ีมี
interval หมายถึงระยะเวลาห่างแต่ละที่จะให้แสดงผล
count หมายถึงให้แสดงทั้งหมดกี่ครั้ง

ถ้าเราใช้คำสั่ง vmstat เฉยๆ โดยไม่มี parameter ต่อท้ายเลย จะหมายถึงแสดงค่าเฉลี่ยของทั้งหมดตั้งแต่เครื่องทำงานมา

$ vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 0 79744 255584 861836 0 0 0 2 1 1 1 1 98 0

ถ้าเราใส่ parameter ตัวเดียวหมายถึง จะหมายถึง interval คือ vmstat จะแสดงผลไปเรื่อยๆ (สามารถ ctrl+c ออกมา) โดยบรรทัดแรกยังแสดงค่าเฉลี่ยของระบบ ส่วนข้อมูลบรรทัดถัดไปจะเป็นข้อมูลของระบบ ณ ขณะนั้น ซึ่งจะห่างกันเท่ากับ interval เช่นตัวอย่างด้านล่าง แ่ต่ละครั้งจะแสดงห่างกัน 2 วินาที

$ vmstat 2

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 78876 255584 861844 0 0 0 2 1 1 1 1 98 0
0 0 0 79068 255584 861848 0 0 0 0 63 297 0 0 100 0
0 0 0 79116 255584 861848 0 0 0 0 27 308 0 0 100 0
0 0 0 79116 255584 861848 0 0 0 18 15 301 0 0 100 0
...

ถ้าเราใส่ parameter 2 ตัวก็หมายถึงให้แสดงผลกี่ครั้งเช่น ตัวอย่างด้านล่างให้แสดงผลทุกๆ 2 วินาที และแสดงผลแค่ 5 ครั้ง (รวมที่แสดงค่าเฉลี่ยของระบบด้วย)

$ vmstat 2 5

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 79412 255584 861852 0 0 0 2 1 1 1 1 98 0
0 0 0 79480 255584 861852 0 0 0 10 6 275 0 0 100 0
0 0 0 79480 255584 861852 0 0 0 0 3 272 0 0 100 0
0 0 0 79480 255584 861852 0 0 0 0 3 276 0 0 100 0
0 0 0 79480 255584 861856 0 0 0 0 143 389 3 1 96 0

การอ่านผล

kthr - kernel thread
r - runnable thread คือจำนวนเฉลี่ยของ thread ที่สามารถทำงานได้ ถ้ามีมากกว่าจำนวน CPU ก็แปลว่า thread ที่เหลืออยู่ในสถานะ waiting กำลังรอ CPU ว่าง ซึ่งถ้าจำนวน thread ที่ waiting ว่างๆ มีจำนวนมาก ก็แสดงว่า performance ต่ำ (ก็แปลว่า user อาจจะกำลังรอผลการทำงานของ CPU อยู่ก็ได้)
b - blocked thread คือ thread ที่กำลังรออะไรสักอย่าง อาจจะเป็น filesystem, I/O, memory load ถ้าเยอะๆ ก็แสดงว่า performance ม่ะดี
p - thread ที่รอ I/O แต่ไม่รวมถึง filesystem เช่นเดียวกัน ยิ่งมากยิ่งไม่ดี

cpu - CPU time

us - user mode เปอร์เซนเวลาที่ CPU ใช้ในการทำงานใน user mode ซึ่งเป็นเวลาที่ CPU ทำงานกะ application ที่ไม่ต้องการ kernel resource ในการคำนวณ จัดการ memory หรือการเก็บค่าตัวแปร
sy - system (kernel) mode เปอร์เซนเวลาที่ CPU ใช้ในการทำงานกับ kernel resource เช่นการเรียก system ให้ทำงานอ่านหรือเขียนไฟล์
id - idle คือเปอร์เซนเวลาที่ CPU ไม่มีอะไร และไม่มี pending local disk I/O
wa - คล้ายกับ id แต่ว่า รวมที่มี pending local disk I/O ด้วย


Reference:
IBM System Information Center - vmstat command

No comments:

Post a Comment