Sử dụng lệnh vmstat trên Linux, macOS giúp cho bạn biết hết những số liệu thống kê về bộ nhớ ảo RAM, nó ảnh hưởng đến việc sử dụng bộ nhớ vật lý, CPU và tài nguyên ổ cứng của hệ thống... như thế nào.
Máy tính được trang bị một lượng bộ nhớ vật lý hữu hạn, gọi Random Access Memory (RAM). RAM này cần được quản lý bởi kernel, chia sẻ giữa hệ điều hành và bất kỳ ứng dụng nào đang chạy. Nếu những nhu cầu kết hợp này đòi hỏi nhiều bộ nhớ hơn so với cài đặt vật lý trong máy tính, thì kernel có thể làm gì?
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 chúng 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.
Linux kernel có thể ghi nội dung của một khối bộ nhớ vào phần không gian hoán đổi này và giải phóng vùng RAM đó để sử dụng cho một tiến trình khác. Bộ nhớ có thể được lấy ra từ không gian hoán đổi và khôi phục vào RAM khi cần thiết gọi là paged out.
Tất nhiên, tốc độ truy cập cho bộ nhớ paged out chậm hơn so với bộ nhớ được giữ trong RAM. Và đó không phải là sự đánh đổi duy nhất. Trong khi bộ nhớ ảo cung cấp cho Linux một cách để quản lý nhu cầu bộ nhớ, thì việc sử dụng bộ nhớ ảo sẽ tăng gánh nặng ở những phần khác trên máy tính.
Ổ cứng của bạn phải thực hiện đọc và ghi nhiều hơn. Kernel và CPU phải thực hiện nhiều công việc hơn khi swap in (di chuyển dữ liệu từ không gian hoán đổi sang bộ nhớ chính) và swap out (di chuyển nội dung bộ nhớ chính sang ổ đĩa hoán đổi, khi không gian bộ nhớ chính bị đầy) bộ nhớ, cũng như giữ cho tất cả các đĩa quay để đáp ứng nhu cầu bộ nhớ của nhiều tiến trình khác nhau.
Linux cung cấp một cách để bạn giám sát tất cả các hoạt động này dưới dạng lệnh vmstat, báo cáo về số liệu thống kê bộ nhớ ảo.
Nếu bạn gõ lệnh vmstat không có tham số, nó sẽ hiển thị cho bạn 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ừ khi máy tính được khởi động lại lần cuối. Những số liệu này không phải là các giá trị ở thời điểm hiện tại.
vmstat
Một bảng giá trị ngắn được hiển thị.
Có các cột Procs, Memory, Swap, IO, System và CPU. Cột cuối cùng (cột ngoài cùng bên phải) chứa dữ liệu liên quan đến CPU.
Dưới đây là danh sách các mục dữ liệu trong mỗi cột.
Procs
Memory
Swap
IO
System
CPU
Bạn có thể yêu cầu vmstat cung cấp cập nhật thường xuyên cho những số liệu này bằng cách sử dụng giá trị delay. Giá trị delay được cung cấp trong vài giây. Để cập nhật số liệu thống kê cứ sau 5 giây, hã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. Bạn cần phải nhấn Ctrl+C để dừng việc này.
Sử dụng giá trị delay quá thấp sẽ gây thêm áp lực cho hệ thống. Nếu bạn cần có các bản cập nhật nhanh để cố gắng chẩn đoán sự cố, bạn nên sử dụng giá trị count cũng như giá trị delay.
Giá trị count cho vmstat cho biết có bao nhiêu lần cập nhật cần thực hiện trước khi thoát và đưa bạn trở lại Command Prompt. Nếu bạn không cung cấp giá trị count, vmstat sẽ chạy cho đến khi nó bị 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 4 lần cập nhật, hãy sử dụng lệnh sau:
vmstat 5 4
Sau 4 lần cập nhật, vmstat sẽ dừng lại.
Bạn có thể chọn hiển thị số liệu thống kê bộ nhớ và hoán đổi theo kilobyte hoặc megabyte bằng tùy chọn -S (ký tự đơn vị). Tùy chọn này phải được theo sau bởi một trong các đơn vị k, K, m hoặc M. Chúng đại diện cho:
vmstat 10 -S M
Số liệu thống kê bộ nhớ và hoán đổi hiện được hiển thị bằng megabyte. Lưu ý rằng tùy chọn -S không ảnh hưởng đến thống kê khối IO. Chúng luôn được hiển thị trong các khối.
Nếu bạn sử dụng tùy chọn -a (active), các cột bộ nhớ buff và cache được thay thế bằng các cột “inact” và “active”. Như bạn có thể đoán, những cột này cho thấy lượng bộ nhớ không hoạt động và hoạt động.
Để xem hai cột này thay vì cột buff và cache, hãy bao gồm tùy chọn -a, như được hiển thị:
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ị).
Switch -f hiển thị số lượng fork đã xảy ra kể từ khi máy tính được khởi động. (Fork là hoạt động mà một tiến trình tạo ra một bản sao của chính nó).
Nói cách khác, điều này cho thấy số lượng tác vụ đã được khởi chạy (và phần lớn trong số chúng đã đó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 con số này. Mỗi khi một tác vụ hoặc tiến trình sinh ra hoặc nhân bản một nhiệm vụ mới, con số này sẽ tăng lên.
vmstat -f
Kernel có tính năng quản lý bộ nhớ riêng để quản lý hệ điều hành và tất cả các ứng dụng.
Như bạn có thể tưởng tượng, kernel đang cấp phát 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.
Bộ nhớ được cấp phát, sử dụng và không còn cần thiết cho một loại đối tượng dữ liệu kernel cụ thể, có thể được sử dụng lại cho một đối tượng dữ liệu khác cùng loại mà không cần bộ nhớ được giải phóng và cấp phát lại. Hãy tưởng tượng slab đã được cấp phát trước và thực hiện đo lường các phân đoạn RAM cho nhu cầu riêng của kernel.
Để xem số liệu thống kê cho các slab, sử dụng tùy chọn -m (slab). Bạn cần sử dụng sudo và sẽ được nhắc nhập mật khẩu. Vì đầu ra có thể khá dài, bạn nên dùng thêm tùy chọn less.
sudo vmstat -m | less
Đầu ra có 5 cột, bao gồm:
- 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 này. - 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 này.
Để thoát khỏi chế độ less, nhấn q.
Để hiển thị một trang của bộ đếm sự kiện và thống kê bộ nhớ, hãy sử dụng tùy chọn -s (stats). Lưu ý rằng, chữ s viết thường
vmstat -s
Mặc dù số liệu thống kê được báo cáo phần lớn giống như thông tin được tạo ra từ lệnh vmstat mặc định, một số dữ liệu trong đó đượ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. Còn tùy chọn -s (stats) liệt kê các thống kê này một cách riêng biệt.
Tùy chọn -s (stats) liệt kê các thống kê này một cách riêng biệt.
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, có 3 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.
Đây là ý nghĩa của các cột:
Reads
Writes
IO
Để hiển thị nhanh số liệu thống kê tóm tắt cho hoạt động của ổ đĩa, hãy sử dụng tùy chọn -D (disk-sum). Lưu ý chữ D được viết hoa.
vmstat -D
Hiển thị số liệu thống kê ổ đĩa tóm tắt
Số lượng ổ đĩa có thể trông cao bất thường. Máy tính được sử dụng làm ví dụ 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 file pseudo-filesystem squashfs được tạo ra sẽ gắn vào thiết bị /dev/loop.
Điều khó chịu là các mục thiết bị này được tính là thiết bị ổ cứng bởi nhiều lệnh và tiện ích Linux.
Để 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, đây 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, ghi ổ đĩa vào và từ phân vùng đó, cũng như số lượng các sector có trong các hành động đọc và ghi ổ đĩa.
Việc tìm hiểu sâu một vấn đề nào đó luôn được khuyến khích. Đôi khi bạn sẽ cố gắng giải quyết vấn đề hoặc không quan tâm đến nó nữa (vì bạn chỉ muốn biết máy tính của mình hoạt động thế nào thôi).
Chúng tôi hi vọng rằng sau khi đọc xong bài viết hướng dẫn cách sử dụng lệnh vmstat trên Linux, macOS trên đây, bạn đã biết làm thế nào để truy cập lệnh này và ý nghĩa của nó như thế nào. Đừng quên ghé thăm Blog của chúng tôi thường xuyên nhé.
Nguồn bài: Quantrimang
Tips: Tham gia Channel Telegram KDATA để không bỏ sót khuyến mãi hot nào