Hướng dẫn sử dụng lệnh vmstat Linux cho người mới bắt đầu (5 ví dụ)

theanh

Administrator
Nhân viên
Nếu bạn đang tìm kiếm một tiện ích dòng lệnh mà bạn có thể sử dụng để truy cập thông tin về các quy trình, hoạt động của CPU, bộ nhớ, v.v., bạn sẽ vui mừng khi biết rằng vmstat thực hiện điều này cho bạn.

Trong bài viết này, chúng ta sẽ thảo luận về những điều cơ bản của công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ trong bài viết này đã được thử nghiệm trên máy Ubuntu 20.04 LTS, nhưng nó cũng sẽ hoạt động trên CentOS và Debian.

Lệnh vmstat của Linux​

Lệnh vmstat trong Linux báo cáo số liệu thống kê bộ nhớ ảo. Sau đây là cú pháp của nó:
Mã:
vmstat [tùy chọn] [trì hoãn [đếm]]
Và đây là cách trang hướng dẫn của công cụ giải thích về nó:
Mã:
vmstat báo cáo thông tin về các tiến trình, bộ nhớ, phân trang, khối IO,
 bẫy, đĩa và hoạt động của CPU.

 Báo cáo đầu tiên được tạo ra sẽ đưa ra mức trung bình kể từ lần khởi động lại cuối cùng. Các báo cáo bổ sung cung cấp thông tin về thời gian lấy mẫu có độ trễ về chiều dài.
 Các báo cáo về quy trình và bộ nhớ đều diễn ra tức thời trong cả hai trường hợp.
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp có thể giúp bạn hiểu rõ hơn về cách lệnh vmstat hoạt động:

Câu hỏi 1. Sử dụng vmstat như thế nào?​

Đối với cách sử dụng cơ bản, chỉ cần thực thi 'vmstat' mà không có bất kỳ tùy chọn nào.
Mã:
vmstat
Ví dụ, trong trường hợp của tôi, lệnh trên tạo ra đầu ra sau:
Mã:
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 401160 100252 1307468 0 0 5 17 49 70 0 0 100 0 0
Như hàng đầu tiên chỉ ra, đầu ra được chia thành sáu phần. Trang hướng dẫn sử dụng của công cụ chứa thông tin chi tiết về các giá trị này. Sau đây là đoạn trích:
Mã:
Procs
 r: Số lượng tiến trình có thể chạy (đang chạy hoặc đang chờ thời gian chạy).
 b: Số lượng tiến trình ở chế độ ngủ không bị gián đoạn.

 Memory
 swpd: lượng bộ nhớ ảo được sử dụng.
 free: lượng bộ nhớ nhàn rỗi.
 buff: lượng bộ nhớ được sử dụng làm bộ đệm.
 cache: lượng bộ nhớ được sử dụng làm bộ đệm.
 inact: lượng bộ nhớ không hoạt động. (-a tùy chọn)
 active: lượng bộ nhớ đang hoạt động. (-a option)

 Swap
 si: Lượng bộ nhớ được hoán đổi từ đĩa (/giây).
 so: Lượng bộ nhớ được hoán đổi sang đĩa (/giây).

 IO
 bi: Các khối được nhận từ một thiết bị khối (khối/giây).
 bo: Các khối được gửi đến một thiết bị khối (khối/giây).

 System
 in: Số lần ngắt mỗi giây, bao gồm cả xung nhịp.
 cs: Số lần chuyển đổi ngữ cảnh mỗi giây.

 CPU
 Đây là phần trăm thời gian CPU tổng thể.
 us: Thời gian dành cho việc chạy mã không phải hạt nhân. (thời gian của người dùng, bao gồm cả thời gian nice)
 sy: Thời gian dành cho việc chạy mã hạt nhân. (thời gian của hệ thống)
 id: Thời gian dành cho việc nhàn rỗi. Trước Linux 2.5.41, điều này bao gồm thời gian chờ IO.
 wa: Thời gian dành cho việc chờ IO. Trước Linux 2.5.41, bao gồm trong chế độ nhàn rỗi.
 st: Thời gian bị đánh cắp từ máy ảo. Trước Linux 2.6.11, không xác định.

Câu hỏi 2. Làm thế nào để vmstat tự động cập nhật đầu ra của nó?​

Theo mặc định, vmstat tạo ra đầu ra một lần. Tuy nhiên, nếu bạn muốn vmstat tự động cập nhật đầu ra của nó, thì bạn có thể thực hiện điều đó bằng cách chỉ định một giá trị số làm đầu vào cho lệnh.

Giá trị số này hoạt động như độ trễ (tính bằng giây) sau đó đầu ra được cập nhật. Ví dụ:
Mã:
vmstat 3
Theo cách này, đầu ra vmstat sẽ được làm mới sau mỗi 3 giây.
Mã:
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 410928 100276 1307480 0 0 5 17 49 70 0 0 100 0 0
0 0 0 410920 100284 1307480 0 0 0 181 108 143 0 0 100 0 0
0 0 0 410920 100292 1307480 0 0 0 7 92 132 0 0 100 0 0
0 0 0 410920 100292 1307480 0 0 0 0 87 124 0 0 100 0 0
...
...
...

Câu hỏi 3. Làm thế nào để vmstat hiển thị slabinfo?​

Đối với slabinfo, bạn cần sử dụng tùy chọn dòng lệnh -m. Lưu ý rằng hạt nhân bản phân phối Linux của bạn cần hỗ trợ slabinfo để tùy chọn này hoạt động. Nếu có hỗ trợ, thì bạn cần chạy lệnh với quyền sudo.
Mã:
sudo vmstat -m
Ví dụ, trong trường hợp của tôi, đây là một đoạn trích của đầu ra được tạo ra:
Mã:
Số bộ nhớ đệm Tổng kích thước Trang
ufs_inode_cache 0 0 808 40
qnx4_inode_cache 0 0 680 48
hfsplus_attr_cache 0 0 3840 8
hfsplus_icache 0 0 896 36
hfs_inode_cache 0 0 832 39
minix_inode_cache 0 0 672 48
ntfs_big_inode_cache 0 0 960 34
ntfs_inode_cache 0 0 296 55
jfs_ip 0 0 1280 25
xfs_dqtrx 0 0 528 31
xfs_dquot 0 0 496 33
xfs_buf 0 0 384 42
xfs_rui_item 0 0 696 47
xfs_rud_item 0 0 176 46
xfs_inode 0 0 1024 32
xfs_efd_item 0 0 440 37
xfs_buf_item 0 0 272 30
xfs_trans 0 0 232 35
xfs_da_state 0 0 480 34
xfs_btree_cur 0 0 224 36
...
...
...

Câu hỏi 4. Làm thế nào để vmstat báo cáo số liệu thống kê tóm tắt hoạt động của đĩa?​

Sử dụng tùy chọn dòng lệnh -D cho việc này.
Mã:
vmstat -D
Đây là kết quả đầu ra mà lệnh này tạo ra trên hệ thống của tôi:
Mã:
10 đĩa
 2 phân vùng
 Tổng cộng 15066 lượt đọc
 5937 lượt đọc được hợp nhất
 1272794 sector được đọc
 20063 milli lượt đọc
 155026 lượt ghi
 103687 lượt ghi được hợp nhất
 4602472 sector được ghi
 105279 milli lượt ghi
 0 IO đang tiến hành
 126 milli IO đã chi

Câu 5. Làm thế nào để vmstat thêm dấu thời gian vào mỗi dòng đầu ra?​

Để đảm bảo lệnh vmstat thêm dấu thời gian vào mỗi dòng đầu ra, hãy sử dụng dòng lệnh -t:
Mã:
vmstat -t
Mã:
$ vmstat 2 -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st UTC
2 0 0 410116 100432 1308160 0 0 5 17 49 70 0 0 100 0 0 2020-05-08 09:40:05
0 0 0 410116 100432 1308160 0 0 0 88 100 136 0 0 100 0 0 2020-05-08 09:40:07
0 0 0 410116 100440 1308160 0 0 0 18 90 139 0 0 100 0 0 2020-05-08 09:40:09
0 0 0 410116 100440 1308160 0 0 0 0 93 126 0 0 100 0 0 2020-05-08 09:40:11
0 0 0 410368 100448 1308160 0 0 0 10 107 144 0 0 100 0 0 2020-05-08 09:40:13
0 0 0 410368 100448 1308160 0 0 0 0 86 122 0 0 100 0 0 2020-05-08 09:40:15
0 0 0 410368 100448 1308160 0 0 0 0 101 135 0 0 100 0 0 2020-05-08 09:40:17
Các mục được tô sáng hiển thị dấu thời gian có trong mỗi dòng.

Kết luận​

Tùy thuộc vào loại công việc bạn làm trên Dòng lệnh Linux, lệnh vmstat có thể chứng minh là thực sự hữu ích. Ngoài các tùy chọn được thảo luận ở đây, còn có rất nhiều tùy chọn dòng lệnh khác mà công cụ này cung cấp. Truy cập vào đây để tìm hiểu thêm.
 
Back
Bên trên