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:

    20/04/2026

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

    20/04/2026

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

    Nguyễn Hưng

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

    20/04/2026

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

    20/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 - (1 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

    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng
    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng

    smartctl là một tiện ích dòng lệnh giúp quản lý và giám sát hệ thống S.M.A.R.T., từ đó theo dõi chi tiết sức khỏe ổ cứng HDD/SSD trong môi trường máy chủ lẫn máy trạm cá nhân. Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt, sử dụng các lệnh smartctl quan trọng…

    14/04/2026

    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux
    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux

    cryptsetup là tiện ích dòng lệnh nguồn mở trong Linux dùng để quản lý mã hóa đĩa dựa trên dm-crypt và chuẩn LUKS, hỗ trợ tạo volume an toàn với nhiều khóa và tương thích cao. Bài viết này hướng dẫn toàn diện về cryptsetup từ cài đặt, quy trình mã hóa, quản lý key…

    14/04/2026

    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux
    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux

    Aureport là công cụ dòng lệnh mạnh mẽ trong hệ thống auditd Linux, chuyên tạo báo cáo thống kê tóm tắt từ các tệp nhật ký kiểm toán. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng aureport để giám sát bảo mật và phân tích hoạt động hệ thống hiệu quả. Những…

    09/04/2026

    Auditctl là gì? Hướng dẫn sử dụng lệnh auditctl trong Linux để quản lý hệ thống Audit
    Auditctl là gì? Hướng dẫn sử dụng lệnh auditctl trong Linux để quản lý hệ thống Audit

    Auditctl là công cụ dòng lệnh quan trọng trong Linux, cho phép quản trị viên thiết lập và quản lý các quy tắc giám sát (audit) trực tiếp trên kernel. Thông qua auditctl, bạn có thể theo dõi chi tiết các hoạt động như truy cập file, thực thi syscall hay hành vi người dùng…

    09/04/2026

    linux

    lenh

    text