vmstat và iostat là công cụ dòng lệnh trong sysstat dùng giám sát hiệu năng Linux. vmstat cho cái nhìn tổng quan về hệ thống (CPU, RAM), còn iostat tập trung phân tích sâu hiệu suất I/O của đĩa. Trong bài viết này, mình sẽ hướng dẫn bạn cách kết hợp vmstat và iostat để phân tích nhanh nguyên nhân gây chậm hệ thống và đề xuất hướng giải quyết hiệu quả.
Những điểm chính
- Lý do cần giám sát hiệu năng: Hiểu được tầm quan trọng của việc giám sát để phát hiện điểm nghẽn, ngăn chặn sự cố và tối ưu hóa tài nguyên hệ thống.
- Định nghĩa vmstat: Nắm vững khái niệm, cách cài đặt, sử dụng và ý nghĩa các chỉ số quan trọng của
vmstatđể giám sát tổng quan hiệu suất hệ thống. - Định nghĩa iostat: Nắm vững khái niệm, cách cài đặt, sử dụng và ý nghĩa các chỉ số của
iostatđể giám sát chi tiết hoạt động I/O của ổ đĩa. - Cách kết hợp vmstat và iostat: Biết cách kết hợp thông tin từ hai công cụ, giúp xác định chính xác nguyên nhân gây nghẽn.
- Ví dụ sử dụng thực tế: Học được quy trình từng bước để chẩn đoán sự cố hệ thống chậm, từ việc kiểm tra tổng quan với
vmstatđến xác định ổ đĩa gây lỗi bằngiostat. - Cách sử dụng hiệu quả: Nắm được các mẹo hay để tối ưu hóa việc giám sát, từ tự động hóa, kết hợp đa công cụ đến việc thiết lập baseline.
- Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các tình huống nâng cao như cách xử lý khi
wacao nhưng%utilthấp và tầm quan trọng của việc kết hợp vớitop/htop.
Tại sao cần giám sát hiệu năng hệ thống?
Trong quản trị hạ tầng Linux, việc giám sát hiệu năng thường xuyên giúp đảm bảo tính sẵn sàng và độ tin cậy của dịch vụ. Việc thiết lập quy trình giám sát bài bản mang lại 4 lợi ích quan trọng sau:
- Phát hiện điểm nghẽn: Giám sát hiệu năng giúp bạn nhận diện sớm các nguyên nhân gây suy giảm hiệu năng như thiếu hụt tài nguyên ở CPU, RAM, I/O đĩa hoặc Swap.
- Dự báo và ngăn chặn sự cố: Phân tích xu hướng tiêu thụ tài nguyên giúp quản trị viên chủ động xử lý các vấn đề tiềm ẩn trước khi chúng gây gián đoạn dịch vụ .
- Tối ưu hóa tài nguyên: Đảm bảo phần cứng được sử dụng hiệu quả, tránh lãng phí tài nguyên hoặc tình trạng quá tải cục bộ.
- Cơ sở cho việc mở rộng: Việc giám sát hiệu năng sẽ cung cấp dữ liệu thực tế để bạn ra quyết định nâng cấp phần cứng hoặc mở rộng hạ tầng một cách chính xác.

vmstat là gì?
vmstat (Virtual Memory Statistics) là một công cụ dòng lệnh gọn nhẹ và mạnh mẽ, cung cấp cái nhìn tổng quan về hiệu suất hệ thống. Công cụ này cung cấp báo cáo thông tin về 5 yếu tố quan trọng đó là: Tiến trình, bộ nhớ, phân trang, Block I/O và hoạt động của CPU.
Chức năng chính của vmstat:
- Giám sát hiệu suất: Quan sát hiệu suất hệ thống với các cập nhật liên tục, phù hợp cho việc giám sát trạng thái hoạt động và phát hiện nhanh các điểm nghẽn.
- Cung cấp dữ liệu trực quan: Hiển thị trực quan số lượng tiến trình đang chạy/chờ, mức sử dụng bộ nhớ thực và ảo, các hoạt động phân trang, I/O và tỷ lệ sử dụng các trạng thái CPU (người dùng, hệ thống, nhàn rỗi, chờ I/O).
- Xác định sự cố: Hỗ trợ nhận diện và xác định nguyên nhân gây quá tải thông qua các chỉ số như số tiến trình chạy vượt ngưỡng hoặc CPU sử dụng cao bất thường.

Cách cài đặt và sử dụng vmstat
vmstat nằm trong gói công cụ giám sát hệ thống tiêu chuẩn sysstat. Bạn có thể cài đặt thông qua trình quản lý gói mặc định như sau:
sudo apt install sysstat # Debian/Ubuntu
sudo yum install sysstat # CentOS/RHELĐể hiển thị phần “help” – danh sách cú pháp, các tùy chọn, ý nghĩa tham số trên terminal, bạn thực hiện lệnh sau:
vmstat -h 
Để xem thống kê trung bình kể từ lần khởi động cuối cùng của hệ thống, bạn thực thi lệnh sau:
vmstat
Để theo dõi hiệu năng theo thời gian thực, bạn sử dụng tham số thời gian trễ (delay) và số lần lặp (count). Ví dụ, để cập nhật mỗi 1 giây và lặp lại 10 lần, bạn thực thi lệnh:
vmstat 1 10 # mỗi 1 giây, 10 dòng
Phân tích các chỉ số
Phân tích các chỉ số quan trọng của vmstat:
| Nhóm | Cột | Ý nghĩa kỹ thuật |
|---|---|---|
| Procs | r | Run queue: Số lượng tiến trình đang chờ CPU xử lý. |
b | Blocked: Số lượng tiến trình đang bị chặn. | |
| Memory | swpd | Dung lượng bộ nhớ ảo (Swap) đã sử dụng (KB). |
free | Dung lượng RAM vật lý còn trống (KB). | |
| Swap | si | Swap In: Dữ liệu được đọc từ đĩa vào bộ nhớ swap (KB/s). |
so | Swap Out: Dữ liệu được ghi từ RAM xuống đĩa swap (KB/s). | |
| IO | bi | Blocks In: Số khối (blocks) nhận được từ thiết bị block (đọc đĩa). |
bo | Blocks Out: Số khối gửi đến thiết bị block (ghi đĩa). | |
| System | in | Số lượng ngắt (interrupts) mỗi giây. |
cs | Số lượng chuyển ngữ cảnh (context switches) mỗi giây. | |
| CPU | us | User time: % CPU dành cho các tiến trình người dùng (non-kernel). |
sy | System time: % CPU dành cho các tiến trình hệ thống (kernel). | |
id | Idle: % CPU ở trạng thái nhàn rỗi. | |
wa | Wait I/O: % CPU nhàn rỗi nhưng phải chờ I/O hoàn tất. |
Lưu ý
Nếu cột wa tăng cao liên tục, đây là dấu hiệu của việc nghẽn cổ chai tại ổ cứng.
iostat là gì?
iostat là tiện ích dòng lệnh dùng để giám sát hiệu suất hệ thống, tập trung vào việc thống kê chi tiết hoạt động đầu vào/đầu ra (I/O) của các thiết bị lưu trữ như ổ cứng, SSD, cũng như mức sử dụng CPU. Công cụ này đóng vai trò quan trọng trong việc hỗ trợ quản trị viên nhận biết các vấn đề về hiệu năng và tối ưu hóa tài nguyên hệ thống.
Các chức năng nổi bật của iostat:
- Theo dõi hiệu quả ổ đĩa: Cung cấp số liệu liên quan đến từng ổ lưu trữ, bao gồm số lượng thao tác truy cập mỗi giây, tốc độ đọc ghi và tổng dung lượng dữ liệu đã xử lý trong một khoảng thời gian cụ thể.
- Giám sát trạng thái CPU: Thống kê tỷ lệ sử dụng CPU theo từng trạng thái như user, system, nice và thời gian chờ liên quan đến I/O, giúp nhận diện việc quá tải hoặc các vấn đề tiềm ẩn liên quan đến vi xử lý.
- Phát hiện điểm nghẽn hệ thống: Cho phép phân tích và chỉ ra thiết bị nào đang chịu tải lớn gây ảnh hưởng đến hiệu suất tổng thể, từ đó đưa ra giải pháp nâng cấp hoặc bình chỉnh tài nguyên hợp lý.
- Phân tích hiệu năng toàn diện: Hỗ trợ giám sát hiệu suất của cả thiết bị lưu trữ nội bộ lẫn các nguồn dữ liệu từ xa như hệ thống NFS, giúp quản trị viên triển khai các phương thức cân bằng tải hiệu quả.

Cách cài đặt và sử dụng iostat
Tương tự vmstat, iostat cũng thuộc gói sysstat. Bạn cài đặt iostat như sau:
sudo apt install sysstat # Debian/Ubuntu
sudo yum install sysstat # CentOS/RHELBạn sử dụng lệnh sau để hiển thị thống kê I/O cơ bản kể từ khi khởi động:
iostat
Để có dữ liệu chi tiết và cập nhật theo thời gian thực (ví dụ: mỗi 5 giây, lặp 2 lần), bạn sử dụng tùy chọn -x:
iostat -x 5 2
Phân tích các chỉ số
Khi sử dụng tùy chọn -x, bạn cần tập trung vào các chỉ số sau để đánh giá độ trễ và tải của ổ đĩa:
| Tham số | Ý nghĩa kỹ thuật |
|---|---|
%util | Utilization: Phần trăm thời gian CPU dành cho các yêu cầu I/O đến thiết bị. Nếu giá trị này gần đến 100% có nghĩa là thiết bị đã bão hòa. |
await | Average Wait: Thời gian trung bình (ms) cho các yêu cầu I/O, bao gồm thời gian chờ trong hàng đợi và thời gian xử lý thực tế. |
svctm | Service Time: Thời gian trung bình (ms) thiết bị cần để xử lý thực tế một yêu cầu I/O. |
Lưu ý
Nếu %util cao và await lớn hơn đáng kể so với svctm, điều này xác nhận rằng hàng đợi I/O đang bị tắc nghẽn và hiệu năng đĩa đang suy giảm nghiêm trọng.
Cách kết hợp vmstat và iostat hiệu quả
Để xác định chính xác nguyên nhân gây chậm hệ thống, quản trị viên nên kết hợp số liệu từ cả hai công cụ theo bảng ma trận sau:
| Tình huống sự cố | Dấu hiệu trên vmstat | Dấu hiệu trên iostat | Kết luận nguyên nhân |
|---|---|---|---|
| Nghẽn CPU | Cột r cao, us + sy cao, id thấp | %util thấp, await thấp | CPU đang phải xử lý quá nhiều tác vụ tính toán. |
| Thiếu RAM | Cột si và so > 0 (liên tục) | Disk I/O tăng cao do ghi Swap | Hệ thống thiếu RAM vật lý, phải dùng Swap gây chậm. |
| Nghẽn đĩa | Cột b cao, wa cao | %util gần 100%, await cao | Tốc độ truy xuất đĩa cứng không đáp ứng kịp nhu cầu đọc/ghi. |
Ví dụ sử dụng vmstat và iostat thực tế
Dưới đây là quy trình các bước kiểm tra khi hệ thống phản hồi chậm:
Bước 1: Kiểm tra tổng quan bằng vmstat:
Đầu tiên, bạn chạy lệnh giám sát mỗi giây trong 5 giây như sau:
vmstat 1 5Nếu giá trị của cột wa (Wait I/O) cao bất thường (ví dụ > 10%), đây là tín hiệu cho thấy hệ thống đang phải chờ xử lý I/O nhiều, dẫn đến nguy cơ tắc nghẽn tại thiết bị lưu trữ.
Bước 2: Xác định ổ đĩa gây lỗi bằng iostat
Bạn sử dụng chế độ mở rộng để tìm thiết bị cụ thể bằng lệnh sau:
iostat -x 1 5Khi kết quả hiển thị, bạn tìm thiết bị nào có %util xấp xỉ 100% hoặc await rất cao (ví dụ > 20ms cho SSD). Từ đó xác định được chính xác ổ đĩa cần nâng cấp hoặc tối ưu.
Cách sử dụng vmstat và iostat hiệu quả
- Tự động hóa giám sát: Bạn sử dụng
cronhoặc viết các script để ghi log kết quảvmstat/iostatđịnh kỳ, giúp phân tích sự cố xảy ra vào ban đêm hoặc cuối tuần. - Kết hợp đa công cụ: Sử dụng thêm
tophoặchtopgiúp bạn biết chính xác tiến trình nào đang gây ra tải cao sau khivmstatđã chỉ ra loại tài nguyên bị nghẽn. - Ưu tiên xử lý: Khi phát hiện điểm nghẽn cổ chai, hãy ưu tiên giải quyết theo thứ tự: RAM -> I/O -> CPU để đạt hiệu quả tối ưu chi phí nhất.
- Thiết lập Baseline: Bạn lưu lại các thông số khi hệ thống hoạt động bình thường để có cơ sở so sánh khi sự cố xảy ra.

Câu hỏi thường gặp
Vì sao vmstat báo giá trị wa tăng cao liên tục nhưng iostat cho thấy %util ổ đĩa bình thường?
Đây có thể là dấu hiệu hạ tầng lưu trữ gặp vấn đề mạng hoặc hàng đợi I/O bị block bởi tiến trình chờ lock file, thay vì bão hòa ổ đĩa vật lý.
Giải pháp là bạn hãy kiểm tra hệ thống mạng lưu trữ, xem xét các tiến trình đang lock file, hoặc chuyển lưu trữ phân tán về ổ đĩa nội bộ tạm thời.
Có nên tự động hóa việc ghi log kết quả vmstat/iostat không?
Bạn nên tự động hóa ghi log kết quả. Giải pháp phổ biến đó là:
– Sử dụng cron job để chạy lệnh vmstat/iostat định kỳ, ghi vào file log riêng biệt.
– Xây dựng script Python hoặc Bash tự động hóa việc lưu trữ, phân tích và gửi cảnh báo qua email/slack khi phát hiện thông số vượt ngưỡng.
Tại sao nên kết hợp thêm công cụ top/htop khi phân tích với vmstat và iostat?
vmstat/iostat cho biết hệ thống gặp điểm nghẽn ở RAM, CPU hay I/O, nhưng không xác định cụ thể tiến trình nào gây tải. Khi đó, top/htop sẽ giúp quản trị viên xác định chính xác tiến trình hoặc ứng dụng gây ra tải lớn, từ đó đưa ra phương án can thiệp trực diện như điều chỉnh cấu hình, kill tiến trình lỗi hoặc tối ưu hóa ứng dụng.
Việc kết hợp sử dụng vmstat và iostat giúp quản trị viên nhanh chóng nhận diện và khoanh vùng nguyên nhân gây suy giảm hiệu năng hệ thống Linux. Nhờ phân tích đồng thời các chỉ số về CPU, RAM, Swap và I/O ổ đĩa, bạn có thể đưa ra biện pháp xử lý kịp thời, tối ưu hóa tài nguyên và nâng cao độ ổn định cho dịch vụ đang vận hành. Mời bạn tham khảo thêm các bài viết liên quan đến chủ đề Linux ngay sau đây:




