주어진 스레드가 실행되는 CPU를 결정하는 방법이 있습니까? C#에서는 가능하지만 C++에서는 가능합니다.스레드가 실행되는 CPU를 결정하는 방법은 무엇입니까?
.NET 프로세스 및 ProcessThread 클래스는이 정보를 제공하지 않는 것 같습니다.
ETA 해명 :
우리는 HTTP 멀티 캐스트 스트림을 처리하고 여러 비디오 인코더를 생성합니다 서버 응용 프로그램을 개발하고 있습니다. 이것은 12 개의 물리적 코어가있는 시스템에서 실행되므로 24 개의 논리적 CPU (하이퍼 스레딩)가 발생합니다. TaskManager와 ProcessExplorer를 통해 생성 된 프로세스가 논리적 CPU를 통해 균등하게 분산되어 있음을 확인했습니다. 그러나 우리는 CPU 시간을 비정상적으로 먹는 것을 방해하는 하나의 CPU에서만 많은 (커널?) 활동을보고 있습니다. 이 특정 CPU에서 실행중인 프로세스 (들)/스레드를 식별하려고합니다. TaskManager 나 ProcessExplorer 모두 해당 정보를 제공하지 않습니다. 그러한 정보가 어떻게 얻을 수 있는지 설명하십시오.
그렇지 않으면이 정보를 얻기 위해 자체 도구를 작성하려고합니다. 그리고 그것이 우리가 도움이 필요한 것입니다.
우리는 스레드 유사성을 변경하는 방법을 알고 있습니다.이 특별한 경우 CPU를 먹는 스레드는 하나의 CPU와 연관되어 있지만 스레드가 모든 CPU와 연결되어 있다는 보장은 없습니다.), 그렇게하기 위해서 우리는 먼저 재배치되어야 할 프로세스/스레드를 결정해야합니다. 이것이이 질문의 유일한 목적입니다.
문제를 명확히하는 데 도움이되기를 바랍니다.
이 정보로 어떤 문제를 해결하려고합니까? –
그것은 단지 kernal로 알려져 있습니다. 따라서 커널 모드로 프로그램해야합니다. MSDN에서 Kernal API를 찾으십시오. – Nawaz
스레드가 다른 시간대에 여러 CPU에서 실행되면 어떻게해야할까요? –