2017-04-11 5 views
1

피드백 시스템이 CPU가 스로틀 링되는지 여부에 따라 동작을 변경하기 위해 즉석에서 총 CPU 사용량을 검색해야합니다. 이를 위해, 나는 어떤 주어진 시간에 시스템 정보를 제공 NtQuerySystemInformation SYS 전화로 보았다하지만 MSDN 페이지를 말합니다 때문에이 기능은 윈도우의 최신 버전에서 사용되지 것 같다Windows에서 전체 시스템 CPU 사용량을 C++로 검색하는 방법은 무엇입니까?

[NtQuerySystemInformation 변경하거나에서 사용할 수있다 future Windows 버전. 응용 프로그램은이 주제에 나와있는 다른 기능 를 사용해야합니다]

참조 :. https://msdn.microsoft.com/en-us/library/windows/desktop/ms724509(v=vs.85).aspx

사람이 전화가 지원하는 어떤 OS 버전을 알고 있나요? 승리 7/8/8.1/10? 총 CPU 사용량을 직접 검색 할 수있는 다른 방법이 있습니까?

+0

유용한 정보 : [프로세스 내부에서 CPU 및 메모리 소비를 어떻게 결정합니까?] (http://stackoverflow.com/questions/63166/) cpu-and-memory-consumption-from-inside-a-process) 아마도 속는 사람 일지라도 가까운 투표를 할만큼 확실하지는 않습니다. – user4581301

답변

1

공식적으로 MSDN에는 두 가지 기능이 있습니다.

  1. GetSystemTimes() : 훨씬 쉬워 보이지만 오래 전에 게시되었습니다. https://msdn.microsoft.com/en-us/library/windows/desktop/ms724400(v=vs.85).aspx

  2. 은 GetSystemInfo는() : 나는 https://code.msdn.microsoft.com/windowsdesktop/Use-PerformanceCounter-to-272d57a1

    DWORD GetProcessorCount() 
    { 
         SYSTEM_INFO sysinfo; 
         DWORD dwNumberOfProcessors; 
         GetSystemInfo(&sysinfo); 
         dwNumberOfProcessors = sysinfo.dwNumberOfProcessors; 
         return dwNumberOfProcessors; 
    } 
    vector<PCTSTR> GetValidCounterNames() 
    { 
        vector<PCTSTR> validCounterNames; 
        DWORD dwNumberOfProcessors = GetProcessorCount(); 
        DWORD index; 
        vector<PCTSTR> vszProcessNames; 
        TCHAR * szCounterName; 
        validCounterNames.push_back(TEXT("\\Processor(_Total)\\% Processor Time")); 
        validCounterNames.push_back(TEXT("\\Processor(_Total)\\% Idle Time")); 
        // skip some codes 
        return validCounterNames; 
    } 
    

행운을 빕니다에서 샘플 코드를 가지고있어!

제 생각에 Windows 명령 "tasklist/v"는 OS의 CPU 시간과 메모리를 표시하며 '시스템'또는 다른 기능을 통해 명령을 호출 할 수 있습니다.

추신. 나는 아직도 OS 쪽을 보는 것이 CPU 사용을 감시하는 가장 좋은 방법이라고 생각한다. (이 함수를 사용하면 내부에서도 같은 일을 할 것입니다.)

+0

링크를 요약하거나 미래의 독자가 링크가 찢어 졌을 때 콘텐츠를 다시 찾을 수 있도록 충분히 제공하는 것이 좋습니다. – user4581301

+0

네가 맞아. 거기에 몇 가지 정보를 추가했습니다. –

+0

'tasklist/v'는 CPU 사용량을 표시하지 않습니다. "CPU 시간"은 CPU 사용량과 동일하지 않습니다. – indiv