Tôi thường kết hợp một tập lệnh đơn giản cho loại công việc này.
Hãy xem tài liệu hạt nhân cho hệ thống tệp proc (Google 'linux proc.txt').
Dòng đầu tiên của /proc/stat
(Phần 1.8 trong proc.txt) sẽ cung cấp cho bạn thống kê sử dụng cpu tích lũy (ví dụ: người dùng, đẹp, hệ thống, không hoạt động, ...). Đối với mỗi quá trình, tệp /proc/$PID/stat
(Bảng 1-4 trong tệp proc.txt) sẽ cung cấp cho bạn cả số liệu thống kê sử dụng CPU và thống kê mức sử dụng bộ nhớ cụ thể (xem rss).
Nếu bạn google một chút, bạn sẽ tìm thấy nhiều thông tin chi tiết về những tệp này và con trỏ tới thư viện/ứng dụng/đoạn mã có thể giúp bạn có được/lấy được các giá trị bạn cần. Với ý nghĩ đó, tôi sẽ tập trung vào chiến lược cấp cao.
Đối với số liệu thống kê CPU, hãy sử dụng ngôn ngữ kịch bản yêu thích của bạn để tạo tệp thực thi có một tập hợp các id quá trình để theo dõi. Tại một khoảng thời gian cố định (ví dụ: 1 giây) thăm dò/tính toán tổng số tích lũy cho mỗi quá trình và toàn bộ hệ thống. Trong mỗi khoảng thời gian thăm dò ý kiến, viết tất cả các kết quả trên một dòng duy nhất để stdout.
Để biết thống kê bộ nhớ, hãy viết một tập lệnh tương tự, nhưng chỉ cần ghi lại quá trình sử dụng bộ nhớ trên mỗi quá trình. Bộ nhớ là một chút dễ dàng hơn khi chúng tôi trực tiếp có được các giá trị tức thời.
Chạy các tập lệnh này trong suốt thời gian thử nghiệm của bạn, chuyển tập hợp các id quy trình mà bạn muốn theo dõi và chuyển hướng đầu ra của nó sang tệp nhật ký.
./logcpu $(pidof foo) $(pidof bar) > cpustats
./logmem $(pidof foo) $(pidof bar) > memstats
Nhập nội dung của các tệp này vào bảng tính (đối với các ứng dụng nhất định dễ dàng như sao chép/dán). Đối với CPU, bạn sau các giá trị tức thời nhưng có giá trị cộng dồn, vì vậy bạn sẽ cần thực hiện một số công việc bảng tính nhỏ để lấy được các giá trị này (nó chỉ là delta 't (x + 1) - t (x)'). Tất nhiên bạn có thể có logger cpu của bạn ghi delta, nhưng bạn sẽ dành nhiều thời gian hơn một chút lên phía trước trên kịch bản.
Cuối cùng, sử dụng bảng tính của bạn để tạo một âm mưu hay.
MMonit là bắt buộc. Single monit là miễn phí, cụm MMonit được trả tiền. – erm3nda