Các hệ điều hành như Linux, Unix-like và macOS sử dụng bộ nhớ ảo để quản lí dung lượng của bộ nhớ vật lí, CPU và ổ đĩa. Nhiều khi người dùng muốn xác định mức dung lượng sử dụng của các thành phần trên mà lại loay hoay không biết làm sao. Taimienphi.vn hôm nay sẽ chỉ cho bạn một cách để giám sát thống kê tất cả các hoạt động này bằng lệnh vmstat.
Sử dụng lệnh vmstat trên Linux
1. Bộ nhớ ảo
Máy tính được trang bị một lượng bộ nhớ vật lý hữu hạn gọi là bộ nhớ truy cập ngẫu nhiên (RAM). Bộ nhớ này được quản lý bởi kernel và được chia sẻ giữa hệ điều hành với bất kỳ ứng dụng nào đang chạy.
Các hệ điều hành Linux và giống như Unix như macOS có thể sử dụng không gian trên ổ cứng để giúp quản lý nhu cầu bộ nhớ. Một khu vực dành riêng cho không gian ổ cứng được gọi là "không gian hoán đổi", có thể được sử dụng như một phần mở rộng của RAM. Đây là bộ nhớ ảo.
Lệnh vmstat => Cách sử dụng lệnh vmstat trên Linux
Lệnh vmstat đưa ra thống kê dữ liệu củabộ nhớ vật lí, CPU và ổ đĩa cứng.
Nếu bạn gõ lệnh vmstat không có tham số, nó sẽ hiển thị một tập hợp các giá trị. Các giá trị này là mức trung bình cho mỗi thống kê kể từ lần khởi động cuối cùng của máy tính.
vmstat
Sau khi gõ câu lệnh như trên, màn hình sẽ xuất hiện một bảng giá trị ngắn .
chạy lệnh
Bảng bao gồm các cột là procs, memory, swap, io, system và CPU. Cột ngoài cùng bên phải chứa dữ liệu liên quan đến CPU.
Dưới đây là chú thích các mục dữ liệu ở các cột.
Procs
- r: Số lượng các tiến trình có thể chạy được. Đó có thể là các tiến trình đã chạy ,đang chạy hoặc đang chờ đợt chạy CPU tiếp theo. dùng process không dùng là tiến trình
- b: Số lượng các tiến trình trong trạng thái sleep không bị gián đoạn. Thực chất thì những tiến trình này không "sleep" mà nó đang thực hiện chặn một system call và không bị gián đoạn cho đến khi hoàn thành tiến trình hiện tại. Thông thường, tiến trình này diễn ra khi driver đang chờ một số tài nguyên rảnh rỗi. Bất kỳ sự gián đoạn nào cho quy trình đó đều được xử lý khi quy trình tiếp tục hoạt động như bình thường.
Memory
- swpd: dung lượng bộ nhớ ảo được sử dụng hay dung lượng bộ nhớ bị hoán đổi.
- free: dung lượng bộ nhớ hiện không sử dụng.
- buff: dung lượng bộ nhớ được sử dụng làm buffer => bộ nhớ đệm.
- cache: dung lượng bộ nhớ được sử dụng làm cache => bộ nhớ cache.
Swap
- si: Lượng bộ nhớ ảo được swap in từ không gian trao đổi.
- so: Lượng bộ nhớ ảo được swap out vào không gian trao đổi.
IO
- bi: Khối nhận được từ một thiết bị khối. Số lượng khối dữ liệu được sử dụng để trao đổi bộ nhớ ảo trở lại RAM.
- bo: Khối gửi đến một thiết bị khối. Số lượng khối dữ liệu được sử dụng để trao đổi - bộ nhớ ảo ra khỏi RAM và vào không gian trao đổi.
- block giữ nguyên không dịch là khối
System
- in: Số lượng các gián đoạn mỗi giây.
- cs: Số lượng context switch mỗi giây. Context Switch là khi kernel hoán đổi từ xử lý chế độ hệ thống sang xử lý chế độ người dùng.
- Context Switch là quá trình ....
CPU
- us: Thời gian chạy code không phải kernel.
- sy: Thời gian chạy code kernel.
- id: Thời gian rảnh rỗi.
- wa: Thời gian chờ đầu vào hoặc đầu ra.
- st: Thời gian từ một máy ảo. Đây là thời gian một máy ảo phải chờ hệ thống giám sát máy ảo hypervisor hoàn thành việc phục vụ các máy ảo khác trước khi nó có thể quay lại và hoạt động vào máy ảo này => xem lại đoạn này
- hypervisor: phần mềm giám sát máy ảo
2. Sử dụng khoảng thời gian thống kê
Bạn có thể yêu cầu vmstat cập nhật thường xuyên các số liệu thống kê bằng việc sử dụng giá trị delay. Giá trị này được cung cấp trong vài giây. Để cập nhật số liệu thống kê cứ sau 5 giây, sử dụng lệnh sau:
vmstat 5
Cứ sau 5 giây vmstat sẽ thêm một dòng dữ liệu khác vào bảng. Để dừng việc này, nhấn Ctrl + C.
3. Sử dụng giá trị count
Việc sử dụng giá trị delay quá thấp sẽ gây sự tắc nghẽn cho hệ thống của bạn. Nếu muốn cập nhật nhanh hơn, sử dụng giá trị count.
Giá trị count cho vmstat cho biết có bao nhiêu cập nhật cần thực hiện trước khi thoát và đưa bạn trở lại dấu nhắc lệnh. Nếu bạn không cung cấp giá trị count, vmstat sẽ chạy cho đến khi nó được dùng bởi tổ hợp phím Ctrl + C.
Để vmstat cung cấp một bản cập nhật cứ sau 5 giây, nhưng chỉ trong bốn lần cập nhật, sử dụng lệnh sau:
vmstat 5 4
Sau bốn lần cập nhật, vmstat sẽ dừng lại.
4. Thay đổi đơn vị
Để cập nhật hiển thị số liệu thống kê bộ nhớ và hoán đổi theo đơn vị kilobyte hoặc megabyte ,sử dụng tùy chọn -S (ký tự đơn vị). Tùy chọn này phải được theo sau bởi các chữ k, K, m hoặc M. Cụ thể chúng đại diện cho:
- k: 1000 byte
- K: 1024 byte
- m: 1000000 byte
- M: 1048576 byte
Để cập nhật số liệu thống kê bộ nhớ và hoán đổi cứ sau 10s theo megabyte, nhấp lệnh sau:
vmstat 10 -S M
5. Hiển thị bộ nhớ hoạt động và không hoạt động
Nếu bạn sử dụng tùy chọn -a (active), các cột bộ nhớ buff và bộ nhớ cache được thay thế bằng các cột "inact" và "active".
Để xem hai cột này thay vì cột buff và cột cache, hãy bao gồm tùy chọn -a, như câu lệnh sau:
vmstat 5 -a -S M
Các cột "inact" và "active" bị ảnh hưởng bởi tùy chọn -S (ký tự đơn vị).
Đếm số lượng Fork
Switch -f hiển thị số lượng fork đã xảy ra kể từ khi máy tính được khởi động.
Nói cách khác, lệnh này cho thấy số lượng tác vụ đã được khởi chạy (phần lớn trong số chúng đã bị đóng lại) kể từ khi hệ thống được khởi động. Mỗi quá trình khởi chạy từ dòng lệnh sẽ tăng lên. Khi một nhiệm vụ hoặc tiến trình mới phát sinh con số này lại tiếp tục tăng.
vmstat -f
Màn hình fork không cập nhật.
Hiển thị Slabinfo
Kernel có hệ thống quản lý bộ nhớ riêng cho hệ điều hành và tất cả các ứng dụng.
Kernel sẽ phân bổ và giải phóng bộ nhớ nhiều lần cho nhiều loại đối tượng dữ liệu khác nhau mà nó phải xử lý. Để làm cho việc này hiệu quả nhất có thể, nó sử dụng một hệ thống gọi là slab. Đây là một hình thức ghi lại cache.
Để xem số liệu thống kê cho các slab, sử dụng tùy chọn -m (slabs). Lúc này bạn cần dụng sudo và nhập mật khẩu. Vì đầu ra có thể khá dài, nên chuyển nó qua less.
sudo vmstat -m | less
Đầu ra có năm cột. Đó là:
- Cache: Tên của cache.
- num: Số lượng các đối tượng hiện đang hoạt động trong cache này.
- total: Tổng số đối tượng có sẵn trong cache.
- size: Kích thước của từng đối tượng trong cache.
- pages: Tổng số trang bộ nhớ có (ít nhất) một đối tượng hiện được liên kết với cache.
Nhấn q để thoát khỏi chế độ less.
6. Hiển thị bộ đếm thời gian và thống kê bộ nhớ
Để hiển thị một trang của bộ đếm thời gian và thống kê bộ nhớ, hãy sử dụng tùy chọn -s (stats). Lưu ý chữ "s" viết thường.
vmstat -s
Mặc dù phần lớn số liệu thống kê được báo cáo giống như thông tin tạo ra đầu ra vmstat mặc định, một số dữ liệu trong chúng vẫn được phân chia chi tiết hơn.
Ví dụ, đầu ra mặc định kết hợp cả thời gian CPU của user nice và non-nice vào cột us. Màn hình -s (stats) liệt kê các thống kê này một cách riêng biệt.
7. Hiển thị thống kê ổ đĩa
Bạn có thể có được một danh sách thống kê ổ đĩa tương tự bằng cách sử dụng tùy chọn -d (disk).
vmstat -d | less
Đối với mỗi đĩa, ba cột được hiển thị, đó là reads, writes và IO.
IO là cột ngoài cùng bên phải. Lưu ý rằng cột sec trong IO được đo bằng giây nhưng thống kê dựa trên thời gian trong cột reads và writes được đo bằng mili giây.
Ý nghĩa của các cột:
Reads
- total: Tổng số lần đọc ổ đĩa.
- merged: Tổng số lần đọc được nhóm.
- sectors: Tổng số các sector đã được đọc.
- ms: Tổng số thời gian tính bằng mili giây đã được sử dụng để đọc dữ liệu từ ổ đĩa.
Writes
- total: Tổng số lần ghi ổ đĩa.
- merged: Tổng số các lần ghi được nhóm lại.
- sectors: Tổng số các sector được ghi.
- ms = Tổng số thời gian tính bằng mili giây đã được sử dụng ghi dữ liệu vào ổ đĩa.
IO
- cur: Số lượng lần đọc và ghi hiện tại.
- sec: Thời gian tính bằng giây cho bất kỳ việc đọc hoặc ghi nào đang thực hiện.
8. Hiển thị số liệu ổ ghi tóm tắt
Để xem hiển thị nhanh số liệu ổ ghi tóm tắt , sử dụng tùy chọn -D (disk-sum). Lưu ý chữ "D" viết hoa.
vmstat -D
Số lượng ổ đĩa có thể lên cao bất thường. Máy tính được sử dụng trong bài viết này đang chạy Ubuntu. Với Ubuntu, mỗi khi bạn cài đặt một ứng dụng từ Snap, một hệ thống tập tin pseudo-filesystem squashfs được tạo ra sẽ gắn vào một thiết bị / dev / loop.
9. Hiển thị thống kê phân vùng
Để xem số liệu thống kê liên quan đến một phân vùng cụ thể, hãy sử dụng tùy chọn -p (partition) và cung cấp định danh phân vùng làm tham số dòng lệnh.
Ở đây chúng ta sẽ xem xét phân vùng sda1. Chữ số một cho biết đây là phân vùng đầu tiên trên thiết bị sda, nó là ổ cứng chính cho máy tính này.
vmstat -p sda1
Thông tin trả về cho thấy tổng số lần đọc và ghi ổ đĩa vào và từ phân vùng đó và số lượng các lĩnh vực có trong các hành động đọc và ghi ổ đĩa.
Với các phân tích ở trên bạn đã biết cách dùng lệnh Vmstat trên Linux , bây giờ hãy bắt tay vào thực hiện xem thống kê dung lượng sử dụng cho bộ nhớ thực, CPU và ổ đĩa ngay nào.
https://thuthuat.taimienphi.vn/su-dung-lenh-vmstat-tren-linux-55846n.aspx
Trên đây là một số cách sử dụng lệnh vmstat trên Linux. Hy vọng bài viết của Taimienphi.vn đã cung cấp cho bạn các thông tin hữu ích. Ngoài ra nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần giải đáp như danh sách các lệnh Linux cơ bản cho người mới dùng ..., bạn đọc có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết nhé.