Lấy số liệu thống kê cpu trên mỗi luồng


17

Tôi quan tâm đến việc sử dụng cpu hiện tại - chính xác là cpu% và chờ% - cho mỗi luồng trong một ứng dụng cụ thể. Có thể lấy thông tin đó từ đâu đó không?

Tôi biết rằng topcó thể phân chia thông tin cho mỗi luồng thực (các luồng có pid), nhưng nó không hiển thị phân chia sử dụng cpu hệ thống / người dùng / chờ cho mỗi luồng. Tôi cũng muốn một số cách để đăng nhập thông tin đó. Bạn có biết bất kỳ ứng dụng (hoặc apis) nào có thể làm điều đó không?

Câu trả lời:


4

Tôi sẽ xem xét SystemTap . Công cụ này chắc chắn sẽ cung cấp cho bạn những gì bạn muốn. Có ví dụ này về chủ đề hồ sơ; không biết nếu nó có tất cả những gì bạn muốn, nhưng bạn có thể sửa đổi nó để nó có.



11

Phần trăm sử dụng cpu cho mỗi luồng bạn có thể nhận bằng pslệnh:

 ps -emo %cpu,pid,user,args

Cách tính toán được mô tả trong ps manpage:

Hiện tại, đó là thời gian CPU được sử dụng chia cho thời gian quá trình đang chạy (tỷ lệ thời gian thực / tỷ lệ thời gian thực), được biểu thị bằng phần trăm.


Tôi thực sự quan tâm đến cả thời gian cpu và thời gian chờ đợi. ps không thể xử lý thứ hai không may.
viraptor

lưu ý đến bản thân: thay thế -e bằng -C java và pid bằng spid cho Id Id trong ứng dụng java
kelloss

2
lưu ý lớn hơn cho bản thân: ps -To pcpu,tid -C java | sort -r -k1 | morecho chủ đề hog trong một ứng dụng java. ps --sort=pcpukhông đạt được gì; tốt hơn dựa vào vỏ cho phần sắp xếp.
kelloss

Rất hữu ích @kelloss, cảm ơn. Tôi sẽ thêm -nhoặc -gsắp xếp, ví dụ như "10" hiển thị phía trên "2".
EM0

0

Có thể có một cái nhìn về htop, bạn có thể cấu hình khá nhiều với nó.


thật không may, nó không thể phân chia cpu trên thời gian người dùng / hệ thống / thời gian chờ cho một luồng cụ thể - chỉ dành cho toàn bộ máy
viraptor

Vâng, nhưng làm thế nào tôi sẽ làm điều đó?
rmobis

0

Bạn đã thử sar? Nó có thể lấy rất nhiều thông tin ngay cả ở cấp độ pid.



0

Tôi đã vấp phải điều này trên một hệ thống nhúng, nơi chúng ta không có các công cụ ưa thích để xem xét nội dung này.

Đối với điều này, tôi đã sử dụng cpuacct cgroupvà đặt từng luồng vào thư mục riêng của mình. Bằng cách này tôi đã có thể đo lường việc sử dụng chúng.

Hệ thống phân cấp trông như thế này:

my-app.service
|-tid1
|-tid2
|-tid3

Sau đó tôi đổi nó thành

my-app.service
|-dir1
|  -tid1
|-dir2
|  -tid2
|-dir3
|  -tid3
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.