Giám sát hiệu năng hệ thống Linux với vmstat

vmstat là một công cụ thập thập và báo cáo dữ liệu về tài nguyên sử dụng memory, swap và processer trong thời gian thực. vmstat có thể được sử dụng để xác định các vấn đề liên quan đến hiệu suất, memory sử dụng.

Sử dụng vmstat

Sử dụng lệnh vmstat để chạy chương trình. Kết quả đầu ra 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
 0  0   3532 148760  50700 1397880    0    0     1     2    6    6  3  1 97  0

Dữ liệu đầu ra cung cấp một cái nhìn khái quát về mức dùng memory và system usage kể từ lần khởi động lại lần cuối. Để xem thống kê trong một khoảng thời gian có thể dùng lệnh sau:

vmstat [interval] [count]

Trong ví dụ này, chúng ta lấy report interval s/lần và số lần lấy report là count lần. (Mỗi dòng là một lần).

vmstat thường chạy với khoảng thời gian 1s trong một vài giây tùy thuộc vào loại sự cố mà quản trị viên đang cố gắng chuẩn đoán. Ví dụ sau minh họa lấy report 1s/lần và số lần lấy report là 20 lần:

$ vmstat 1 20 
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   3996 168488  57100 1368636    0    0     1     2    0    0  3  1 97  0
 0  0   3996 168604  57100 1368728    0    0     0     0  144  303  1  0 100  0
 0  0   3996 168604  57100 1368984    0    0   256     0  162  464  1  0 99  0
 0  0   3996 168604  57100 1368972    0    0     0     0  239  638  3  0 97  0
 0  0   3996 168604  57100 1368952    0    0     0     0  242  529  1  1 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  148  430  1  0 99  0
 1  0   3996 168604  57100 1368952    0    0     0     0  222  451  6  0 94  0
 0  0   3996 168604  57100 1368952    0    0     0     0  141  270  2  0 98  0
 0  0   3996 168604  57100 1368952    0    0     0     0  166  450  1  0 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  133  410  0  0 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  196  398  0  0 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  187  510  1  0 100  0
 0  0   3996 168604  57108 1368952    0    0     0    16  263  677  2  0 97  1
 0  0   3996 168604  57108 1368952    0    0     0     0  205  431  1  0 98  0
 0  0   3996 168604  57108 1368964    0    0     0     0  179  467  1  0 98  0
 0  0   3996 168604  57108 1368964    0    0     0     0  169  446  2  0 98  0
 0  0   3996 168604  57108 1368964    0    0     0     0  202  365  2  0 98  0
 0  0   3996 168604  57108 1369208    0    0   256     0  226  458  2  1 96  0
 0  0   3996 168604  57108 1369208    0    0     0    40  202  501  2  0 98  0
 0  0   3996 168604  57108 1369220    0    0     0     0  154  295  2  0 98  0

Bạn có thể chạy vmstat mà không có đối số count nếu bạn muốn xem báo cáo về trạng thái của hệ thống trong thời gian thực. Ví dụ trong trường hợp sau là khoảng 30s:

$ vmstat 30 
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   3996 167868  57108 1369788    0    0     1     2    0    0  3  1 97  0
 0  0   3996 167860  57108 1369920    0    0     0     0  274  604  2  0 98  0
 0  0   3996 167860  57108 1369928    0    0     0     0  196  481  1  0 98  0
 0  0   3996 167860  57116 1369908    0    0     0    12  164  414  1  1 97  1
 0  0   3996 167860  57116 1369892    0    0     0     0  168  320  0  0 100  0
 0  0   3996 167860  57116 1369884    0    0     0     0  142  398  1  0 99  0
 0  0   3996 167860  57116 1369880    0    0     0     0  175  450  1  1 98  0
^C

Bạn có thể định hướng đầu ra vào một tập tin để ghi nhật ký thay vì để nó chạy vô tận trong một phiến kết nối nền. Để dừng tiến trình vmstat, gõ ký tự ^C hoặc nhấn Control + C như trên.

Mặc định, vmstat hiển thị thống kê memory theo kilobytes, vmstat xem xét 1 kilobyte bằng 1024 byte. Để xem các báo cáo hiển thị theo 1 kilobyte bằng 1000 byte, ta thêm -S -k

$ vmstat -S k 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   4091 150192  58982 1422041    0    0     1     2    0    0  3  1 97  0
 0  0   4091 150183  58982 1422381    0    0   256     0  201  518  1  0 99  0
 2  0   4091 150183  58982 1422356    0    0     0     0  638 1356  7  1 92  0
 0  0   4091 150183  58982 1422360    0    0     0     0  859 1087  5  2 93  0
 0  0   4091 150183  58982 1422331    0    0     0     0  404 1100  2  0 97  0
 0  0   4091 150183  58982 1422331    0    0     0     0  281  601  2  0 97  0
 0  0   4091 150183  58982 1422327    0    0     0     0  279  468  3  0 97  0
 0  0   4091 150183  58982 1422331    0    0     0     0  250  572  3  0 97  0
 0  0   4091 150183  58990 1422323    0    0     0    16  280  598  4  0 95  1
 0  0   4091 150183  58998 1422319    0    0     0    52  270  451  3  0 96  1

Để hiển thị theo megabyte với 1 megabyte = 1000 kilobytes ta thêm -S m

$ vmstat -S m 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      4    169 58   1404    0    0 1     2    0    0  3  1 97  0
 0  0      4    169 58   1405    0    0 0     0  194  508  1  0 98  0
 0  0      4    169 58   1405    0    0 0     0  154  443  0  0 99  0
 0  0      4    169 58   1405    0    0 0     0  192  380  0  0 100  0
 0  0      4    169 58   1405    0    0 0     0  287  766  3  0 97  0
 1  0      4    169 58   1405    0    0 0     0  222  583  1  1 99  0
 0  0      4    169 58   1405    0    0 0    36  166  304  1  0 99  0
 0  0      4    169 58   1405    0    0 0     0  189  473  1  0 99  0
 0  0      4    169 58   1405    0    0 0     0  164  430  1  0 99  0
 0  0      4    169 58   1405    0    0 0     0  186  343  0  0 100  0

Để hiển thị theo megabyte với 1 megabyte = 1024 kilobytes ta thêm -S M

$ vmstat -S M 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      3    162 55   1339    0    0 1     2    0    0  3  1 97  0
 0  0      3    162 55   1339    0    0 0     0  425  700  1  1 98  0
 0  0      3    162 55   1339    0    0 0     0  712  997  1  2 97  0
 0  0      3    162 55   1339    0    0 0    20  479 1079  3  0 96  1
 0  0      3    162 55   1339    0    0 0     0  264  406  2  0 98  0
 0  0      3    162 55   1339    0    0 0     0  273  552  3  0 97  0
 0  0      3    162 55   1339    0    0 0     0  218  467  1  0 99  0
 0  0      3    162 55   1339    0    0 0     0  250  434  1  0 99  0
 0  0      3    162 55   1339    0    0 0     0  200  444  2  0 98  0
 0  0      3    162 55   1339    0    0 0     0  313  771  3  1 96  0

Phân tích đầu ra vmstat

vmstat mô tả trạng thái hiện tạo của một hệ thống Linux. Thông tin về trạng thái hoạt động của một hệ thống rất hữu ích khi xử lý các vấn đề liên quan đến hiệu năng.
Output của lệnh vmstat được hiển thị trong một số trường: Dòng đầu tiên của output là trung bình các thông số khi hệ thống được restart. Chúng ta có thể bỏ qua dòng này vì nó ko hiển thị trạng thái hiên tại của hê thống.

Procs

Dữ liệu proc cáo báo số lượng processing job chờ để chạy và và cho phép bạn xác định xem có process nào làm chậm hệ thống hay không?
Cột r hiển thị tổng số processing jobs chờ để truy cập vào bộ xử lý, cột b hiển thị tổng số processes trong trạng thái ‘sleep’. Những giá trị này thường bằng 0.

Memory

Thông tin hiển trong phần memory cung cấp dữ liệu về mức dùng bộ nhớ, tương tự như lệnh free -m

Cột swpd báo cáo dung lượng bộ nhớ đã được đổi sang swap file hoặc swap partition. Cột free báo cáo dung lượng bộ nhớ còn trống. Cột buff báo cáo dung lượng bộ nhớ được cấp phát đang được sử dụng. Cột cache báo cáo số lượng memory được cấp phép mà có thể được swap tới disk hoặc không được cấp phép nếu tài nguyên được cần cho một task khác.

Swap

Swap báo cáo tỉ lệ memory được gửi đến hoặc lấy ra từ hệ thống swap. Bằng cách bào cáo riêng swap với hoạt động của ổ đĩa, vmstat cho phép bạn xác định có bao nhiêu hoạt động của disk liên quan đến swap.

Cột si báo cáo số memory mà được chuyển từ swap tới memory thực trên giây. Cột so báo cáo số memory được chuyển tới swap từ memory thực trên giây.

I/O

IO báo cáo số lượng input và output hoạt động trên giây trong các hệ số của các block được đọc và được ghi

Cột bi báo cáo số block được nhận (block in) từ một đĩa / giây. Cột bo báo cáo số block được gửi (block out) tới một đĩa / giây

System

System báo cáo số lượng các toán tử hệ thống / giây

Cột in báo cáo số hệ thống ngắt trên / giây, bao gồm các ngắt từ hệ thống đồng hộ. Cột cs báo cáo số lượng các thiết bị chuyển mạch ngữ cảnh mà hệ thống làm theo thứ tự để xử lý tất cả nhiệm vụ.

CPU

Phần cpu báo cáo về việc sử dụng tài nguyên CPU của hệ thống. Hiển thị theo phần trăm.

Cột us báo cáo số lượng thời gian mà processor cần trên các nhiệm vụ không thuộc kernel. Cột sy báo cáo số lượng thời gian mà processor tiêu tốn trên các nhiệm vụ liên quan đến kernel. Cột id báo số lượng thời gian mà processor dành trên idle (Thời gian nhàn rỗi). Cột wa báo cáo số lượng thời gian mà processor dành cho các hoạt động IO để hoàn thành trước khi tiếp tục xử lý các nhiệm vụ khác.

Rate This Article

Leave A Comment?