it-swarm-vi.tech

Theo dõi sử dụng CPU và bộ nhớ cho mỗi quá trình

Tôi nghi ngờ rằng một trong những ứng dụng của tôi ăn nhiều chu kỳ CPU hơn tôi muốn. Vấn đề là - nó xảy ra theo đợt và chỉ cần nhìn vào trình quản lý tác vụ sẽ không giúp tôi vì nó chỉ hiển thị việc sử dụng ngay lập tức.

Có cách nào (trên Windows) để theo dõi lịch sử sử dụng CPU & Bộ nhớ cho một số quy trình. Ví dụ. Tôi sẽ bắt đầu theo dõi "firefox" và sau một giờ nữa sẽ thấy biểu đồ sử dụng CPU & bộ nhớ của nó trong giờ đó.

Tôi đang tìm kiếm một công cụ làm sẵn hoặc một cách lập trình để đạt được điều này.

147
Eli Bendersky

Chỉ cần nhập perfmon vào Start > Run và nhấn enter. Khi cửa sổ Hiệu suất được mở, hãy nhấp vào dấu + để thêm bộ đếm mới vào biểu đồ. Các bộ đếm là các khía cạnh khác nhau về cách PC của bạn hoạt động và được nhóm theo sự tương tự thành các nhóm được gọi là "Đối tượng hiệu suất".

Đối với câu hỏi của bạn, bạn có thể chọn các đối tượng hiệu suất "Quá trình", "Bộ nhớ" và "Bộ xử lý". Sau đó bạn có thể thấy các quầy này trong thời gian thực

Bạn cũng có thể chỉ định tiện ích để lưu dữ liệu hiệu suất để kiểm tra sau này. Để thực hiện việc này, chọn "Nhật ký hiệu suất và cảnh báo" trong bảng điều khiển bên trái. . ".) Từ" Nhật ký và cảnh báo hiệu suất ", tạo cấu hình giám sát mới trong" Nhật ký bộ đếm ".

156
Martin08

Process Explorer có thể hiển thị tổng thời gian CPU được thực hiện bởi một quy trình, cũng như biểu đồ lịch sử trên mỗi quy trình.

40
Niall

Sử dụng perfmon.exe, tôi đã thử sử dụng bộ đếm "Private Byte" trong bộ đếm "Process" để theo dõi việc sử dụng bộ nhớ và nó hoạt động tốt.

15
CppNoob

có lẽ bạn có thể sử dụng cái này Nó sẽ làm việc cho bạn và sẽ báo cáo thời gian xử lý cho quy trình được chỉ định.

@echo off
: Rich Kreider <[email protected]>
: report processor time for given process until process exits (could be expanded to use a PID to be more
: precise)
: Depends:  typeperf
: Usage:  foo.cmd <processname>

set process=%~1
echo Press CTRL-C To Stop...
:begin
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end
) else (
echo %%~c%%
goto begin
)
)

:end
echo Process seems to have terminated.
10
Rich Kreider

Tôi đồng ý, perfmon.exe cho phép bạn thêm bộ đếm (nhấp chuột phải vào bảng bên phải) cho bất kỳ quy trình nào bạn muốn theo dõi.

Đối tượng hiệu suất: Quá trình Kiểm tra "Chọn phiên bản từ danh sách" và chọn firefox.

7
Ady Romantika

WMI là Công cụ quản lý Windows và được tích hợp trong tất cả các phiên bản Windows gần đây. Nó cho phép bạn theo dõi lập trình những thứ như sử dụng CPU, I/O đĩa và sử dụng bộ nhớ.

Perfmon.exe là giao diện người dùng GUI cho giao diện này và có thể theo dõi quá trình, ghi thông tin vào nhật ký và cho phép bạn phân tích nhật ký sau khi thực tế. Đây không phải là chương trình thanh lịch nhất thế giới, nhưng nó hoàn thành công việc. 

6
doflynn

Process Lasso được thiết kế nhiều hơn để tự động hóa quá trình và tối ưu hóa lớp ưu tiên, không phải đồ thị. Điều đó nói rằng, nó does cung cấp lịch sử sử dụng CPU cho mỗi quá trình (được vẽ dưới dạng một đường trắng trên biểu đồ) nhưng nó KH&OCIRC;NG cung cấp lịch sử sử dụng bộ nhớ cho mỗi quá trình. 

TUYÊN BỐ TỪ CHỐI: Tôi là tác giả của Process Lasso, nhưng không thực sự chứng thực nó ở đây - vì có những giải pháp tốt hơn (perfmon là tốt nhất).

Điều tốt nhất từng có là Windows Vista + Resource and Performance Monitor. Nó có thể theo dõi việc sử dụng CPU, Bộ nhớ, Mạng và truy cập Đĩa theo các quy trình theo thời gian. Nó là một tiện ích thông tin hệ thống tổng thể tuyệt vời nên được tạo ra từ lâu. Trừ khi tôi nhầm, nó có thể theo dõi việc sử dụng CPU và bộ nhớ theo quy trình theo thời gian (trong số những thứ khác được liệt kê).

2
dyasta

Mặc dù tôi chưa thử điều này, ProcDump có vẻ như là một giải pháp tốt hơn.

Mô tả từ trang web:

ProcDump là một tiện ích dòng lệnh với mục đích chính là giám sát một ứng dụng cho CPU tăng đột biến và tạo ra các sự cố trong quá trình tăng đột biến mà quản trị viên hoặc nhà phát triển có thể sử dụng để xác định nguyên nhân của sự tăng đột biến. ProcDump cũng bao gồm giám sát cửa sổ treo (sử dụng cùng một định nghĩa về treo cửa sổ mà Windows và Trình quản lý tác vụ sử dụng), giám sát ngoại lệ chưa được xử lý và có thể tạo ra các kết xuất dựa trên các giá trị của bộ đếm hiệu suất hệ thống. Nó cũng có thể phục vụ như một tiện ích kết xuất quy trình chung mà bạn có thể nhúng vào các tập lệnh khác.

2
sean

Bạn có thể muốn xem Process Lasso .

1
maksa

Bạn cũng có thể thử sử dụng tập lệnh C #/Perl/Java để lấy dữ liệu sử dụng bằng Lệnh WMI và bên dưới là các bước cho nó.

Chúng ta cần thực thi 2 WMI Chọn Truy vấn và áp dụng công thức sử dụng CPU%

1. Để lấy tổng số quá trình logic 

select NumberOfLogicalProcessors from Win32_ComputerSystem

2. Để truy xuất các giá trị của PercentProcessorTime, TimeStamp_Sys100NS (công thức sử dụng CPU đã được áp dụng, lấy phần trăm sử dụng thực tế) và WorksetPrivate (RAM) tối thiểu 2 lần với khoảng thời gian ngủ là 1 giây

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3. Áp dụng công thức sử dụng CPU%

CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors

p2 đã chỉ ra PercentProcessorTime được truy xuất lần thứ hai và p1 chỉ ra rằng PercentProcessorTime được truy xuất lần đầu tiên, t2 và t1 dành cho TimeStamp_Sys100NS.

Một mã Perl mẫu cho điều này có thể được tìm thấy trong liên kết http://www.craftedForveryvery.com/cpu-and-ram-utilization-of-an-application-USE-Perl-via-wmi/

Logic này áp dụng cho tất cả các ngôn ngữ lập trình hỗ trợ các truy vấn WMI

1
Kaarthikeyan

Hmm, tôi thấy rằng Process Explorer có thể làm điều đó, mặc dù đồ thị của nó không quá thuận tiện. Vẫn đang tìm cách thay thế/tốt hơn để làm điều đó.

1
Eli Bendersky

Perfmon.exe được tích hợp vào windows.

1
SaaS Developer

Trong Windows 10, Trình quản lý tác vụ có thể hiển thị cho bạn số giờ CPU tích lũy. Chỉ cần đi tới tab "Lịch sử ứng dụng" và "Xóa lịch sử sử dụng". Bây giờ hãy để mọi thứ chạy trong một hoặc hai giờ:

 Windows 10 Cumulative CPU time

Điều này KHÔNG làm là chia nhỏ việc sử dụng trong các trình duyệt theo tab. Các tab không hoạt động thường xuyên sẽ làm rất nhiều việc, với mỗi tab mở sử dụng năng lượng và làm chậm PC của bạn.

1
Bryce

Tôi sử dụng taskinfo cho biểu đồ lịch sử của tốc độ CPU/RAM/IO . http://www.iarsn.com/taskinfo.html

Nhưng sự bùng nổ của sự không phản hồi, nghe có vẻ giống như thời gian bị gián đoạn do ổ đĩa HD/SS không ổn định. 

0
Terrik