Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên tiến trình

    Nguyễn Hưng

    Ngày đăng:

    28/04/2026

    Cập nhật lần cuối:

    28/04/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (3 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    28/04/2026

    Cập nhật lần cuối:

    28/04/2026

    Mục lục

    Lệnh pidstat là công cụ chuyên dụng trên hệ thống Linux, được sử dụng để giám sát tài nguyên mà các tiến trình đang sử dụng. Bài viết này được mình đúc kết từ quá trình trực tiếp xử lý hàng nghìn ticket tối ưu hệ thống cho khách hàng tại Vietnix, nơi mà mỗi mili giây phản hồi của server đều ảnh hưởng trực tiếp đến doanh thu của doanh nghiệp. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu chi tiết về cú pháp và cách sử dụng lệnh pidstat qua từng ví dụ cụ thể.

    Những điểm chính

    • Quan điểm của mình: Để tối ưu hóa hiệu suất máy chủ Linux một cách triệt để, bạn không thể chỉ nhìn vào bức tranh tổng thể mà phải chú ý vào từng tiến trình riêng lẻ. Lệnh pidstat chính là công cụ hoàn hảo nhất giúp bạn thực hiện điều đó.
    • Khái niệm: Hiểu rõ bản chất lệnh pidstat và nắm vững cấu trúc lệnh để bắt đầu giám sát hiệu năng tiến trình chuyên sâu trên Linux.
    • Các trường hợp ứng dụng: Biết cách nhận diện nhanh chóng nguyên nhân gây nghẽn CPU, rò rỉ bộ nhớ và xác định các tiến trình làm chậm ổ cứng hiệu quả.
    • Ví dụ thực hành: Làm chủ kỹ thuật theo dõi hoạt động I/O, CPU và tài nguyên bộ nhớ theo chu kỳ thông qua các kịch bản thực tế sinh động.
    • Lưu ý kỹ thuật: Nắm được các nguyên tắc về quyền hạn và khả năng tương thích Kernel để đảm bảo kết quả phân tích dữ liệu hệ thống luôn chính xác.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh pidstat Linux. 

    Lệnh pidstat Linux là gì?

    pidstat (Process ID Statistics) là một công cụ dòng lệnh thuộc bộ sysstat được sử dụng để giám sát các tiến trình riêng lẻ hiện đang được quản lý bởi nhân Linux. Lệnh này hỗ trợ thu thập nhiều chỉ số quan trọng của tiến trình bao gồm tỷ lệ chiếm dụng CPU, RAM, I/O, context switch,… Khác với các lệnh như vmstat và iostat báo cáo thống kê toàn hệ thống, pidstat đi sâu vào chi tiết của từng tiến trình cụ thể và thường được dùng phổ biến khi cần debug hiệu năng hoặc tìm tiến trình tiêu tốn nhiều tài nguyên.

    pidstat là lệnh được sử dụng để giám sát các tiến trình riêng lẻ
    pidstat là lệnh được sử dụng để giám sát các tiến trình riêng lẻ

    Cú pháp và tham số phổ biến của lệnh pidstat

    Cú pháp cơ bản của lệnh pidstat có dạng như sau:

    pidstat [tùy chọn] [khoảng thời gian] [số lần]

    Trong đó:

    • [tùy chọn]: Là các tham số như -d, -r, -p, -h,… dùng để chọn loại thống kê như CPU, RAM, I/O, tiến trình, cách hiển thị,…
    • [khoảng thời gian]: Là số giây giữa hai lần lấy mẫu thống kê liên tiếp.​
    • [số lần]: Là số chu kỳ lấy mẫu sẽ thực hiện rồi thoát, dùng khi bạn không muốn chạy vô hạn.

    Để khai thác tối đa sức mạnh của pidstat, bạn cần nắm vững các tham số quan trọng sau:

    Tùy chọnChức năng
    -uHiển thị thống kê sử dụng CPU. Đây là tham số mặc định nếu không cung cấp tùy chọn nào.
    -rHiển thị thống kê sử dụng bộ nhớ RAM của từng tiến trình.
    -dGiám sát và hiển thị tốc độ đọc/ghi dữ liệu ổ đĩa..
    -wTheo dõi các hoạt động chuyển đổi ngữ cảnh.
    -tHiển thị thống kê chi tiết tới cấp độ từng luồng con bên trong một tiến trình.
    -lHiển thị đường dẫn thực thi đầy đủ và các đối số thay vì tên lệnh bị cắt ngắn.
    -C [chuỗi]Lọc tiến trình theo tên lệnh có chứa chuỗi ký tự được chỉ định.
    -p [PID]Chỉ định đích danh một ID tiến trình (PID) cụ thể để theo dõi.

    Các trường hợp cần sử dụng lệnh pidstat

    Dưới đây là các trường hợp cần sử dụng lệnh pidstat:

    • Xác định nguyên nhân gây nghẽn CPU: pidstat hiển thị kết quả chi tiết giúp tìm ra chính xác tiến trình đang tiêu tốn nhiều tài nguyên xử lý nhất trong thời gian thực.
    • Phát hiện rò rỉ bộ nhớ: Bạn có thể theo dõi sự tăng trưởng của bộ nhớ vật lý và bộ nhớ ảo của một ứng dụng cụ thể qua thời gian để xác định có cần giải phóng RAM sau khi dùng hay không.
    • Tìm tiến trình gây nghẽn ổ cứng: Sử dụng pidstat giúp bạn giám sát tốc độ đọc/ghi dữ liệu của từng ứng dụng riêng biệt để tìm ra tiến trình đang làm chậm hệ thống do ghi log hoặc truy xuất database quá mức.
    • Phân tích hiện tượng “Major Page Faults”: Bạn có thể dùng pidstat để kiểm tra xem một tiến trình có đang bị chậm do phải liên tục tải dữ liệu từ bộ nhớ Swap lên RAM hay không.
    • Kiểm tra hiệu suất đa luồng: Bạn có thể đi sâu vào xem xét tài nguyên tiêu thụ của từng luồng con bên trong một tiến trình lớn để tối ưu hóa code.
    • Ghi log giám sát định kỳ: Sử dụng pidstat sẽ giúp bạn để xuất dữ liệu thống kê của một dịch vụ quan trọng ra file theo từng khoảng thời gian để vẽ biểu đồ và phân tích sự cố sau khi đã xảy ra.
    Các trường hợp cần sử dụng lệnh pidstat
    Các trường hợp cần sử dụng lệnh pidstat

    Theo dõi tất cả tiến trình đang hoạt động

    Để xem thông tin của tất cả các tiến trình đang chạy trên hệ thống, bạn sử dụng lệnh sau:

    pidstat
    Theo dõi tất cả tiến trình đang hoạt động
    Theo dõi tất cả tiến trình đang hoạt động

    Kết quả trả về sẽ hiển thị các cột thông tin quan trọng như sau:

    • UID: ID của người dùng sở hữu tiến trình.
    • PID: ID định danh của tiến trình.
    • %usr: Phần trăm CPU sử dụng ở cấp người dùng (user level).
    • %system: Phần trăm CPU sử dụng ở cấp hệ thống (kernel level).
    • %guest: Phần trăm CPU sử dụng cho máy ảo (nếu có).
    • %wait: Phần trăm CPU mà tiến trình phải chờ đợi để được cấp phát (dấu hiệu nhận biết CPU đang bị quá tải).
    • %CPU: Tổng phần trăm CPU mà tiến trình đang sử dụng.
    • CPU: Số thứ tự của CPU mà tiến trình đang chạy trên đó.
    • Command: Tên của tiến trình.

    Mẹo từ chuyên gia: Nếu hệ thống của bạn có quá nhiều tiến trình chạy ngầm, hãy kết hợp với grep để lọc nhanh tiến trình cần quan tâm. Ví dụ: pidstat | grep nginx. Ngoài ra, nếu bạn muốn xuất log để phân tích sau, hãy sử dụng toán tử chuyển hướng >> để lưu kết quả vào file thay vì nhìn trực tiếp trên terminal.

    Theo dõi tất cả tiến trình

    Nếu bạn muốn liệt kê toàn bộ các tiến trình, bao gồm cả những tiến trình hiện không hoạt động, hãy chạy lệnh:

    pidstat -p ALL
    Theo dõi tất cả tiến trình
    Theo dõi tất cả tiến trình

    Theo dõi hoạt động I/O

    Để giám sát thống kê nhập/xuất (Input/Output) của hệ thống, bạn sử dụng lệnh sau:

    pidstat -d 1

    Trong đó:

    • -d: Tùy chọn hiển thị thông tin đọc/ghi đĩa theo tiến trình.
    • 1: Khoảng thời gian cập nhật là mỗi giây.
    Theo dõi hoạt động I/O trên hệ thống
    Theo dõi hoạt động I/O trên hệ thống

    Các cột thông tin bao gồm:

    • kB_rd/s: Tốc độ đọc dữ liệu (tính bằng KB/s).
    • kB_wr/s: Tốc độ ghi dữ liệu (tính bằng KB/s).
    • kB_ccwr/s: Dung lượng dữ liệu (KB/s) bị hủy ghi ra đĩa (thường xảy ra khi tiến trình cắt bỏ/xóa một số pagecache bị bẩn trước khi chúng kịp ghi xuống đĩa).
    • iodelay: Độ trễ I/O (tính bằng block clock ticks), cho biết thời gian tiến trình phải chờ đợi I/O hoàn thành. Nếu chỉ số này cao chứng tỏ ổ cứng đang quá tải.

    Theo dõi tài nguyên bộ nhớ theo chu kỳ

    Để thu thập dữ liệu về bộ nhớ với các thiết lập hiển thị cụ thể, bạn thực hiện lệnh:

    pidstat -rh 2 4

    Trong đó:

    • -r: Hiển thị thông tin về bộ nhớ.
    • -h: Hiển thị tất cả dữ liệu trên một dòng ngang, sử dụng mốc thời gian dạng Epoch (số giây) và không lặp lại dòng tiêu đề. Tùy chọn này rất hữu ích khi bạn muốn xuất dữ liệu cho các script hoặc phần mềm giám sát khác đọc.
    • 2 4: Thu thập dữ liệu tổng cộng 4 lần, mỗi lần cách nhau 2 giây.
    Theo dõi tài nguyên bộ nhớ theo chu kỳ
    Theo dõi tài nguyên bộ nhớ theo chu kỳ

    Kết quả hiển thị bao gồm:

    • minflt/s: Số lượng lỗi trang nhỏ trên giây.
    • majflt/s: Số lượng lỗi trang lớn trên giây.
    • VSZ: Dung lượng bộ nhớ ảo sử dụng (KB).
    • RSS: Dung lượng bộ nhớ thực sử dụng (KB).
    • %MEM: Phần trăm bộ nhớ RAM đang được sử dụng.

    Mẹo từ chuyên gia: Lựa chọn của chuyên gia: Khi phân tích bộ nhớ, bạn hãy tập trung vào cột RSS (Resident Set Size – dung lượng RAM vật lý thực tế đang bị chiếm dụng). Nếu RSS liên tục tăng sau mỗi chu kỳ mà không giảm xuống, mã nguồn của ứng dụng đó chắc chắn đang gặp lỗi giải phóng bộ nhớ.

    Những lưu ý khi sử dụng lệnh pidstat

    Dưới đây là những lưu ý quan trọng khi sử dụng lệnh pidstat để đảm bảo kết quả phân tích chính xác và hiệu quả:

    • Lưu ý về số liệu lần đầu tiên: Khi chạy pidstat lần đầu và không có tham số thời gian, các con số hiển thị là giá trị trung bình kể từ khi hệ thống khởi động, không phải giá trị thời gian thực hiện tại. Để xem dữ liệu thời gian thực, bạn bắt buộc phải thêm khoảng thời gian.
    • Vấn đề với tiến trình ngắn hạn: pidstat hoạt động theo cơ chế lấy mẫu định kỳ. Nếu một tiến trình khởi chạy và kết thúc nhanh chóng nằm giữa hai lần lấy mẫu, pidstat có thể sẽ bỏ sót và không ghi nhận được tiến trình đó.
    • Tên lệnh bị cắt ngắn: Mặc định, pidstat chỉ hiển thị tên lệnh ngắn gọn và có thể bị cắt bớt. Để xem đường dẫn đầy đủ và các tham số đi kèm của tiến trình, bạn hãy sử dụng tùy chọn -l.
    • Phân biệt giữa Process và Thread: Khi phân tích các ứng dụng đa luồng, bạn cần cẩn trọng để không nhầm lẫn giữa mức tiêu thụ của cả tiến trình và từng luồng con. Mặc định pidstat hiển thị tổng của Process nên nếu muốn xem chi tiết Thread, bạn phải dùng thêm cờ -t.
    • Quyền hạn: Mặc dù người dùng thường có thể chạy pidstat để xem tiến trình của chính mình, nhưng để xem thông tin chi tiết về I/O hoặc stack của các tiến trình thuộc về người dùng khác, bạn thường cần chạy lệnh với quyền sudo.
    • Đơn vị đo lường I/O: Khi sử dụng cờ -d để đo I/O, bạn cần lưu ý rằng các chỉ số kB_rd/s và kB_wr/s phản ánh dữ liệu được đọc/ghi ở tầng block layer, có thể không khớp hoàn toàn với lượng dữ liệu ứng dụng ghi ở tầng logic do cơ chế caching của hệ điều hành.
    • Khả năng tương thích Kernel: pidstat phụ thuộc vào các tính năng thống kê của nhân Linux nên trên các hệ thống Linux quá cũ hoặc các bản rút gọn, lệnh này có thể không hoạt động hoặc thiếu một số chỉ số.
    Những lưu ý khi sử dụng lệnh pidstat
    Những lưu ý khi sử dụng lệnh pidstat

    Câu hỏi thường gặp

    Nếu nhận được thông báo lỗi “pidstat: command not found” thì phải xử lý thế nào?

    Nguyên nhân gây lỗi chủ yếu là do pidstat không được cài đặt mặc định trên một số bản phân phối Linux. Lệnh này nằm trong gói công cụ giám sát hệ thống tên là sysstat nên bạn cần cài đặt gói này để sử dụng với cú pháp lệnh sau:
    Đối với Ubuntu/Debian: sudo apt install sysstat
    Đối với CentOS/RHEL/Rocky Linux: sudo yum install sysstat hoặc sudo dnf install sysstat

    Lệnh pidstat khác gì so với lệnh top?

    Mặc dù cả hai lệnh đều được sử dụng để giám sát hệ thống nhưng chúng có mục đích khác nhau:
    top: Cung cấp cái nhìn tổng quan về toàn bộ hệ thống và danh sách các tiến trình tiêu tốn tài nguyên nhất.
    pidstat: Tập trung sâu vào từng tiến trình cụ thể theo thời gian với điểm mạnh là khả năng báo cáo chi tiết về I/O (đọc/ghi đĩa) của từng tiến trình.

    Làm thế nào để chỉ theo dõi một tiến trình cụ thể nếu đã biết PID?

    Thay vì dùng -p ALL để xem tất cả, bạn có thể chỉ định chính xác PID muốn theo dõi bằng tham số -p. Ví dụ, để theo dõi CPU của tiến trình có PID là 1234, bạn thực hiện lệnh sau đây:
    pidstat -u -p 1234 2 5

    Chỉ số majflt/s cao có ý nghĩa gì?

    Nếu bạn thấy chỉ số majflt/s tăng cao trong báo cáo bộ nhớ, điều này có nghĩa là tiến trình đang phải tải dữ liệu từ ổ cứng vào RAM (do dữ liệu không có sẵn trong RAM). Đây là dấu hiệu cho thấy hệ thống đang thiếu RAM và phải sử dụng Swap, làm giảm đáng kể hiệu suất của ứng dụng.

    Lệnh pidstat là công cụ hữu ích trong bộ công cụ sysstat, giúp quản trị viên hệ thống có thể đánh giá chi tiết hoạt động của từng tiến trình. Ngoài ra, việc hiểu và áp dụng đúng các tùy chọn sẽ giúp bạn nhanh chóng xác định được nguyên nhân gây nghẽn CPU, thiếu RAM hay I/O chậm để tối ưu hệ thống hiệu quả hơn. Cảm ơn bạn đã theo dõi bài viết!

    5/5 - (3 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Các lệnh Docker cơ bản thông dụng và hữu ích dành cho người mới
    Các lệnh Docker cơ bản thông dụng và hữu ích dành cho người mới

    Việc làm chủ các lệnh Docker cơ bản là yêu cầu tiên quyết giúp mình đóng gói và triển khai ứng dụng một cách nhất quán trên mọi môi trường từ Staging đến production. Thay vì liệt kê danh sách lệnh khô khan, bài viết này đúc kết từ quá trình tôi trực tiếp vận…

    07/05/2026

    Git Linux là gì? Hướng dẫn sử dụng Git trên Linux
    Git Linux là gì? Hướng dẫn sử dụng Git trên Linux

    Làm chủ Git trên Linux không chỉ dừng lại ở việc ghi nhớ câu lệnh, mà là cách bạn tối ưu hóa luồng công việc để loại bỏ hoàn toàn các sai sót thủ công khi cập nhật dữ liệu. Những chia sẻ trong bài viết được đúc kết từ quá trình mình trực tiếp…

    07/05/2026

    Emacs là gì? Hướng dẫn sử dụng Emacs Terminal trên Linux
    Emacs là gì? Hướng dẫn sử dụng Emacs Terminal trên Linux

    Trong môi trường Linux chuyên sâu, Emacs không chỉ đơn thuần là một trình soạn thảo mà còn là một hệ sinh thái mạnh mẽ giúp tôi tối ưu hóa toàn bộ quy trình xử lý văn bản và lập trình chỉ trên một giao diện terminal duy nhất. Những kỹ thuật sử dụng và…

    06/05/2026

    Vim Linux là gì? Hướng dẫn sử dụng trình soạn thảo văn bản Vim trong Linux
    Vim Linux là gì? Hướng dẫn sử dụng trình soạn thảo văn bản Vim trong Linux

    Trong công việc quản trị hệ thống hàng ngày, Vim là công cụ giúp mình xử lý các tệp tin cấu hình trực tiếp trên Server với tốc độ mà các trình soạn thảo thông thường không thể đáp ứng được. Những hướng dẫn trong bài viết này không chỉ dừng lại ở lý thuyết,…

    06/05/2026

    linux

    lenh

    text