Home » Tìm nguyên nhân hệ điều hành bị chậm bằng vmstat

Tìm nguyên nhân hệ điều hành bị chậm bằng vmstat

by tuanlp

 💡 Khi hệ điều hành Windows bị chậm, thông thường, bạn sẽ mở Task Manager lên, xem CPU, RAM có bị đầy hay không. Trên Linux cũng có nhiều công cụ có chức năng tương tự như vậy, như top, vmstat, iostat, …

Phân tích

Hệ thống bị chậm thường có thể xuất phát từ nhiều nguyên nhân. Thông thường, nguyên nhân thường xuất phát từ 1 trong 3 thành phần: CPU, RAM (Memory), và đĩa cứng. Khi thấy hệ thống bị chậm, bạn cần khoanh vùng xem thành phần nào đang có vấn đề, để hạn chế những thao tác thừa thãi, không cần thiết, tập trung vào những hành động thực sự giúp cải thiện hệ thống.

Lệnh vmstat là một trong số các lệnh hữu dụng nhất đối với một người System Admin. Nó thường được sử  dụng trong các tình huống mà người quản trị muốn biết nhanh tải hoạt động trên máy chủ đang như thế nào.

Hướng dẫn sử dụng

Lệnh vmstat hiển thị thông tin về hiệu năng thời điểm hiện tại (các thông tin liên quan đến CPU, Disk I/O, Memory, Swap). Câu lệnh và kết quả hiển thị sẽ trông giống như sau:

# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 860944   1380 9701128    0    0     0   124    1    0  0  0 99  0  1

Kết quả trả ra có nhiều thông số, bạn có thể nhìn nhanh vào các thông số sau để khoanh vùng vấn đề như sau:

  • Nếu chỉ số wa (time wait for I/O) mà cao, hệ thống của bạn đang gặp vấn đề liên quan đến I/O. Chúng ta sẽ sử dụng các câu lệnh kiểm tra chi tiết về I/O để phân tích sâu hơn.
  • Nếu chỉ số b (process sleeping) luôn lớn hơn 0 và chỉ số us (chỉ số sử dụng CPU của user) hoặc chỉ số sy (chỉ số sử dụng CPU của system) cao, hệ thống có thể đang gặp vấn đề với CPU. Chúng ta sẽ sử dụng các câu lệnh phân tích CPU để kiểm tra sâu hơn.
  • Nếu chỉ số si (swapped in to disk) và chỉ số so (swapped out to disk) luôn lớn hơn 0 bạn có thể đang gặp vấn đề với Memory. Chúng ta sẽ sử dụng các câu lênh kiểm tra chi tiết hơn liên quan đến Memory.

Để tránh trường hợp bạn phải gõ lệnh vmstat thủ công liên tục trong quá trình giám sát, bạn có thể sử dụng lệnh sau:

# vmstat <thời gian lặp lại> <Số lần sẽ hiển thị

Ví dụ: Lệnh sau sẽ hiển thị kết quả lệnh vmstat sau mỗi 2 giây, kết thúc sau 5 kết quả.

# 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 st
 1  0      0 860140   1380 9702400    0    0     0   124    1    0  0  0 99  0  1
 0  0      0 859868   1380 9702400    0    0     0     8 3594 6897  0  0 99  0  0
 1  0      0 859884   1380 9702400    0    0     0    16 3690 6923  0  0 99  0  1
 0  0      0 860008   1380 9702400    0    0     0     0 3463 6780  0  0 99  0  0
 0  0      0 859912   1380 9702420    0    0     0  8224 3857 7127  2  0 98  0  0

Bạn có thể bỏ qua tham số thứ 2 để câu lệnh vmstat sẽ chạy liên tục sau thời gian lặp lại

# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 859036   1380 9702992    0    0     0   124    1    0  0  0 99  0  1
 0  0      0 859468   1380 9703012    0    0     0    18 3451 6832  0  0 99  0  0
 1  0      0 859388   1380 9703012    0    0     0     8 3318 6687  0  0 99  0  0
 1  0      0 859404   1380 9703012    0    0     0   139 3430 6746  0  0 100  0  0
 0  0      0 859436   1380 9703012    0    0     0     0 3441 6885  0  0 99  0  0
--MORE--

Bạn cũng có thể thêm option -t để kết quả có cột thời gian

You may also like