Có cách nào để xác định CPU nào được chạy trên luồng không? Tốt hơn là trong C#, nhưng C++ sẽ làm.Làm cách nào để xác định CPU nào chạy trên?
Các quy trình .NET và các lớp ProcessThread dường như không cung cấp thông tin này.
ETA Làm rõ:
Chúng tôi đang phát triển một ứng dụng máy chủ xử lý http luồng multicast và sinh ra nhiều bộ mã hóa video. Điều này chạy trên một hệ thống với 12 lõi vật lý, dẫn đến 24 CPU logic (siêu phân luồng). Qua TaskManager và ProcessExplorer, chúng tôi đã xác minh rằng các quy trình sinh sản của chúng tôi trải đều trên các CPU logic. Tuy nhiên, chúng ta đang thấy rất nhiều hoạt động (hạt nhân?) Chỉ trên một CPU cản trở việc ăn một lượng thời gian CPU bất thường. Chúng tôi đang cố gắng xác định (các) tiến trình/luồng nào đang chạy trên CPU cụ thể này. Cả TaskManager lẫn ProcessExplorer đều không cung cấp thông tin đó. Nếu có, vui lòng giải thích cách thu thập thông tin đó.
Nếu không, chúng tôi đang dự tính viết công cụ của riêng chúng tôi để nhận thông tin này. Và đó là những gì chúng tôi cần giúp đỡ.
Chúng ta biết làm thế nào để thay đổi mối quan hệ luồng (và chúng tôi biết rằng không có gì đảm bảo rằng một chuỗi sẽ vẫn liên kết với bất kỳ CPU nào, mặc dù trong trường hợp cụ thể này,), nhưng để làm như vậy, trước tiên chúng ta cần xác định quy trình/luồng cần được di chuyển. Đó là mục tiêu duy nhất của câu hỏi này.
Tôi hy vọng điều này sẽ giúp làm rõ vấn đề.
Bạn đang cố gắng giải quyết vấn đề gì với thông tin này? –
Nó chỉ được biết với kernal. Vì vậy, bạn cần phải chương trình trong chế độ kernal. Tìm kiếm các API Kernal trên MSDN. – Nawaz
Bạn muốn làm gì nếu chuỗi chạy trên nhiều CPU khác nhau vào các thời điểm khác nhau? –