Xác định CPU nào đang chạy trên tiến trình


19

Sử dụng Process Explorer của Sysiternals, có cột nào có thể được sử dụng để chỉ ra CPU đang chạy trên CPU không? Nếu không có cột, có cách nào khác không?



3
@DavidPostill - Câu trả lời hay nhất chỉ vào trang web của Process Explorer. Câu hỏi của tôi là: trình thám hiểm quy trình đã cho , làm thế nào để tôi xác định lõi nào là một quá trình được bắt đầu?
rory.ap

Câu trả lời:


47

Yêu cầu năm 2005 :

Tôi rất ấn tượng với các tính năng được tích hợp trong Process Explorer nhưng muốn thấy một tùy chọn để hiển thị từng mối quan hệ CPU trong cửa sổ chính dưới dạng một cột chuyển đổi.

Không phản hồi.

Yêu cầu trong năm 2007 :

Cảm ơn các tiện ích tuyệt vời. Yêu cầu của tôi là thêm một tùy chọn cột để xử lý trình thám hiểm để hiển thị mối quan hệ CPU. Đó là nó.

Không phản hồi.

Thảo luận tương tự năm 2013 :

Sẽ thực sự tốt nếu có Cột Chế độ xem hiệu suất quy trình mới được gọi là Sử dụng lõi sẽ hiển thị tổng số lượng sử dụng so với lõi mà quy trình đang chạy.

Tóm tắt cơ bản: Không thể thực hiện được.

Chủ đề là những gì được gửi đến lõi để xử lý, không phải quá trình. Hầu hết các quy trình hiện đại có nhiều chủ đề.

Nếu bạn đặt thủ công mối quan hệ cho một quy trình, thì tất cả các luồng cho quy trình sẽ bám vào một bộ xử lý. Vì bạn tự cài đặt nó, bạn sẽ biết CPU nào được bật. ;)

Nhưng nếu bạn không chỉ định, thì (các) luồng sẽ được điều khiển bởi HĐH và phần cứng xử lý cơ bản và sẽ nhảy xung quanh giữa các bộ xử lý với tốc độ không thể xem được và rất có thể không chính xác theo thời gian nó được hiển thị bạn.

Có lẽ kiểm tra những câu hỏi SU này để biết thêm:

Ngoài ra, từ StackOverflow:

Bây giờ nếu bạn đã viết chương trình, bạn có thể sử dụng GetCienProcessorNumber , báo cáo bộ xử lý hiện tại được sử dụng bởi luồng mà hàm được gọi.

Sử dụng điều này sẽ cho phép bạn ước tính về việc sử dụng bộ xử lý theo các luồng của mình, vì bạn không bao giờ có thể chắc chắn nơi các luồng sẽ là một chu kỳ tiếp theo (một lần nữa, trừ khi bạn đặt mục đích mối quan hệ).

Thêm thông tin:


3
Câu trả lời hay ... :)
DavidPostill

@DavidPostill - Đồng ý.
rory.ap

Câu trả lời tuyệt vời, vì nó trả lời câu hỏi cụ thể, đi vào lịch sử và cá nhân, và giúp hiểu các khái niệm.
Smithers

1
Trên cả Linux và Windows, có thể đặt mối quan hệ trên cơ sở từng luồng. Tuy nhiên, điều này hiếm khi hữu ích, do đó hiếm khi được thực hiện, do đó hiển thị mối quan hệ trên mỗi luồng trong chương trình giám sát chung nếu nó được thiết lập ít nhiều vô dụng - đại đa số sẽ chỉ để lịch trình hạt nhân khi nó vừa ý.
Bob

HĐH thậm chí có thể chuyển luồng của bạn sang bộ xử lý khác ngay sau khi GetCienProcessorNumber được gọi (nhưng trước khi nó bắt đầu thực thi) và một lần nữa ngay sau khi nó trả về, do đó, kết quả sẽ không phải là bộ xử lý tại thời điểm cuộc gọi, cũng không phải là bộ xử lý Cuộc gọi trở lại!
gnasher729

8

Điều này có thể được thực hiện bằng cách ghi lại dấu vết xperf và mở nó bằng Windows Performance Analyzer (WPA.exe) từ Bộ công cụ hiệu suất Windows, tại đây bạn có thể thêm CPU cột để xem quá trình CPU (Core) nào đang chạy:

nhập mô tả hình ảnh ở đây


Tốt đẹp. Nó có liệt kê cùng một quy trình dưới mỗi CPU (nếu nó sử dụng nhiều hơn một) không? Vì nó đang sử dụng dấu vết xperf đã chụp, điều đó có nghĩa là nó không báo cáo trực tiếp?
Ƭᴇcʜιᴇ007

Các sự kiện ETW @ Ƭᴇc eventsιᴇ007 cũng có thể được sử dụng trong thời gian chạy. Viết chúng vào một tệp ETL chỉ là một cách. Có, nó liệt kê các tiến trình trong cả hai CPU khi nó sử dụng cả hai.
magicandre1981
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.