2011-07-08 32 views
16

Tôi muốn sử dụng/proc để tìm cách sử dụng tài nguyên của một quy trình cụ thể mỗi giây. Các tài nguyên bao gồm cputime, sử dụng đĩa và sử dụng mạng. Tôi đã xem/proc/pid/stat, nhưng tôi không chắc liệu tôi có nhận được các chi tiết cần thiết hay không. Tôi muốn tất cả 3 tài nguyên sử dụng và tôi muốn theo dõi chúng mỗi giây.Sử dụng tài nguyên quy trình Linux (cpu, đĩa, mạng)

+1

Tôi muốn thông tin cho tất cả 3 tài nguyên (cpu, đĩa và mạng) – sethu

+0

/proc/pid/stat cung cấp cho tôi CPUtime nhưng tôi chỉ có thể thu thập tổng số mạng và số liệu thống kê đĩa của toàn bộ máy chứ không phải quy trình cụ thể – sethu

+0

Đừng nghĩ rằng có một cách để thu thập số liệu thống kê trên đĩa và mạng trên cơ sở mỗi quá trình - phần lớn là cách thức lưu lượng truy cập của ổ đĩa và mạng được thực hiện dưới dạng công việc hạt nhân. Ví dụ, việc đọc ans ghi vào đĩa là thông qua bộ đệm hạt nhân, và do đó nhiều quá trình có thể truy cập vào cùng một bộ đệm trước khi nó thực sự được flushed vào đĩa. Tương tự cho đọc, nhiều quá trình có thể đọc cùng một tập tin, chỉ có một đầu tiên sẽ gây ra một truy cập đĩa thực tế với thứ hai chỉ nhận được một con trỏ đến bộ đệm hạt nhân. – Soren

Trả lời

0

Đừng nghĩ rằng có cách để lấy thông tin về ổ đĩa và mạng trên cơ sở từng quy trình.

Điều tốt nhất bạn có thể có là ổ đĩa và mạng toàn cầu và thời gian xử lý cho mỗi CPU.

Tất cả các tài liệu trong man proc

+0

Bạn có thể theo dõi một số thông tin IO (xem tiện ích 'iotop' cho một ví dụ), nhưng nó không có sẵn trên tất cả các hạt nhân. – duskwuff

+0

iotop cần phiên bản mới hơn của hạt nhân. Tôi thấy iotop cho io và nethog cho thống kê mạng nhưng tôi cần phải biên dịch lại phiên bản hạt nhân mới hơn cho điều đó. Tôi đã có điều đó như là phương sách cuối cùng. – sethu

4

Một số kernel mới có /proc/<pid_of_process>/io tập tin. Đây là nơi mà số liệu thống kê IO là. Nó không phải là tài liệu trong proc người đàn ông, nhưng bạn có thể cố gắng tìm ra con số chính mình.

Hy vọng điều đó sẽ hữu ích. Alex.

+0

Tôi đang sử dụng centos 5.6 và nó là một hạt nhân khá cũ. Tôi không tìm thấy số liệu thống kê io ở đó !! – sethu

1

getrusage() hoàn CPU, bộ nhớ và đĩa vv

man 2 getrusage

Tôi không biết về mạng.

0

Cách tốt nhất để tiếp cận vấn đề như thế này là để tìm kiếm mã nguồn của công cụ mà thực hiện giám sát và báo cáo tương tự. Mặc dù không đảm bảo rằng họ đang sử dụng/proc trực tiếp, họ sẽ dẫn bạn đến một cách hiệu quả để giải quyết vấn đề. Đối với trường hợp của bạn, đầu (1), iotop (8) và nethogs (8) đến tâm trí.

0

Bạn có thể sử dụng SAR

-x thống kê báo cáo cho một quy trình nhất định.

Xem này để biết thêm chi tiết: http://www.linuxcommand.org/man_pages/sar1.html

Ví dụ: sar -u -r -b 1 -X PID | grep -v Trung bình | grep -v Linux

+0

Kỹ thuật này yêu cầu khởi động lại hệ thống và root phải bật bộ sưu tập thống kê toàn hệ thống. –

+0

Với tùy chọn '-x' hoặc' -X', tôi chỉ thấy số liệu thống kê cho 'minflt/s majflt/s% người dùng% hệ thống nswap/s CPU', không phải là số liệu thống kê trên đĩa hoặc mạng. Ví dụ: nếu tôi cũng chỉ định '-n DEV' để xem thống kê mạng, sar cung cấp các dòng riêng biệt với các tiêu đề riêng biệt. Tôi đã thử nghiệm nó trên RHEL 5.7. – haridsv

0

chế độ xem kiểm tra.

Có ổ đĩa và mạng cpu trên cùng một màn hình. Nó không phải cho mỗi quá trình nhưng nó tốt hơn so với nhìn vào 3 công cụ riêng biệt.

Các vấn đề liên quan