Kann ich lesen Sie die CPU-Leistungsindikatoren von einem Benutzer-Modus-Programm in Windows?

8

Ich mag die Performance Counter auf all bisherigen x86-Hardware angeboten programmieren und lesen.

Unter Linux gibt es den verschiedene perf_events -Systeme, dies zu tun (und das perf Dienstprogramm, es zu tun von außerhalb eines nicht-modifizierten Programms).

Gibt es eine solche integrierte in der Einrichtung in Windows? Wenn kein Einbau-Anlage vorhanden ist, würde die zweitbeste ein anderer Ansatz sein vielleicht Code von Drittanbietern verwenden, aber das ist es nicht erforderlich mir einen Fahrer unterzeichnet zu bekommen.

    
BeeOnRope 01.08.2017, 03:41
quelle

1 Antwort

4

Kurze Antwort

Nein, in Windows gibt es keine integrierte Funktion. Auch der Befehl linux perf funktioniert nicht auf dem Linux-Subsystem für Windows 10.

Lange Antwort

Um Zugriff auf diese Zähler zu erhalten, benötigen Sie eine Kombination dieser Anweisungen:

Leider können diese Anweisungen nur vom Kernel-Modus aus aufgerufen werden, Sie müssen also mit einem Treiber interagieren. Während das Schreiben des Treibercodes selbst einfach ist, ist es nicht so einfach, den Treiber zu signieren (besonders, da du erwähnt hast, dass du das als Individuum machen willst).

Deshalb rate ich Ihnen, sich bereits existierende Projekte wie Open Hardware Monitor und pcm Projekt von Intel.

Hardwaremonitor öffnen

Dieses Open-Source-Projekt ist in C # geschrieben und enthält Binärdateien und C-Quellcode eines WinRing0.sys (32-Bit) / WinRing0x64.sys (64-Bit) -Treibers von OpenLibSys.org. Wenn Sie diesen Treiber in Ihrem Projekt verwenden möchten, müssen Sie nur den Urheberrechtshinweis .

PCM

Dieses Open-Source-Projekt ist in C ++ geschrieben und enthält auch eine Quelle für einen ähnlichen Treiber (siehe WinMSRDriver-Verzeichnis), aber Sie müssen Sie es selbst bauen, damit Sie wieder in das Signierungsproblem kommen.

Wie auch immer, wollte dieses Projekt erwähnen, weil es wahrscheinlich eine Menge Code enthält, der von Interesse sein könnte.

Zugriff auf den Benutzermodus

Sobald Sie diesen Treiber geladen haben (Open Hardware Monitor extrahiert und lädt den Treiber automatisch beim Start der Anwendung, was ziemlich ordentlich ist), können Sie diese Treiber-IOCTLs mit den Windows-API-Funktionen aufrufen CreateFile / DeviceIoControl und natürlich CloseHandle von Ihrer Benutzermodus-Anwendung.

    
Wouter Huysentruit 03.08.2017 20:49
quelle

Tags und Links