Ich habe einen 6 Jahre alten Laptop mit folgenden Spezifikationen:
Betriebssystem: Windows 8.1 Pro 64-Bit (6.3, Build 9600)
Marke und Modell: SAMSUNG 770Z5E/780Z5E
Prozessor: Intel(R) Core(TM) i7-3635QM CPU @ 2,40 GHz
Arbeitsspeicher: 8 GB
In letzter Zeit scheint es einen Prozess zu geben, der dazu führt, dass der Laptop heiß wird und die Lüfter wie verrückt surren. Ich habe diesen Prozess und die Software (Logitech-Maus-Dienstprogramm) seit über 3 Jahren. Die einzigen Systemänderungen waren Windows-Updates, die ich einmal im Quartal anwende. Seit über einem Jahr wurde nichts installiert.
Der Prozess ist LogiOptionsMgr.exe. Sobald ich ihn beende, beruhigt sich der Laptop innerhalb von 30 Sekunden. Das Seltsame ist, dass der Prozess nur angibt, weniger als 1 % der CPU zu verwenden, und Filemon keine IO (Festplatte, Registrierung, Netzwerk usw.) registriert.
Alles, was ich sehe, widerspricht dem, was ich über Computer weiß. Wenn die Prozessauslastung < 1 % beträgt, sollte das kein Grund dafür sein, dass sich der Laptop so verhält. Und laut Filemon scheint der Prozess ohnehin nichts zu tun. Beenden Sie ihn erneut, und der Laptop funktioniert wieder normal.
Was könnte los sein?
Antwort1
Nach der Anweisung von Mokubai stellte sich heraus, dass die Switchable Graphics-Software von AMD die Logitech-Software fälschlicherweise als eine Anwendung erkannte, die von meiner 3D-Grafikkarte verlangte, mit Höchstleistungseinstellungen zu starten.
Mein Laptop verfügt über integrierte Intel-Grafiken und auch über die AMD Radeon 9700-Serie. Ich habe Anwendungsprofile in der AMD Catalyst-Software erstellt, um alle Logitech-Software explizit als solche zu behandeln, die versucht, die Akkulaufzeit gegenüber der Leistung zu optimieren. Scheint so gewesen zu sein. Dieser Fehler trat nach einem Windows-Update auf, also weiß ich nicht wirklich, wer die Schuld trägt.
Antwort2
Auch nach der Migration LogiOptionsMgr.exe
auf die iGPU wird weiterhin eine gewisse Menge an Watt verbraucht. Im Folgenden zeige ich, wie Sie die Stromrechnung senken können, indem Sie das Problem vollständig beseitigen.
Notiz:Du bistnicht der einzige mit diesem Problem(mehr als 10.000 (ca. 34.557) Personenin Summe):
- Warum
logioptionsmgr.exe
nutzt meine GPU NVIDIA GeForce RTX 3060 Ti (200 Watt) im Leerlauf bis zu 30 %?- Logitech Support: Logitech Options hohe GPU-Last 8 % von NVIDIA GeForce RTX 20?0 Super
- Logitech Support:
LogiOptionsMgr.exe (UNICODE)
GPU-Nutzung 2-3 % der NVIDIA GeForce GTX 1070 (150 Watt)
- Logitech-Maussoftware mit GPU-Leistung 5–10 % der NVIDIA GeForce 970 GTX (145 Watt)
Hat jemand Probleme mit hoher CPU-Auslastung beimLogioptions.exe
Ausführen?- Die Logitech OPTIONS-SOFTWARE frisst Ihren GPU!!!! NVIDIA GeForce GTX 1070 (150 Watt); T mit
LogiOptionsMgr.exe
(Leerlauf, Last): 53‑55°C, 82‑85°C; ohne: 40°C, 70°C. 21 % von NVIDIA Titan Xp (250 Watt). - Logitech Software *Warnung* T mit
LCore.exe
(Leerlauf): 50°C; ohne: 30°C.
Wenn ich öffneProzesshackerund addiere die Spalten „GPU“ und „GPU dedizierte Bytes“, dann sind in meinem Fall LogiOptionsMgr.exe
0,94 % der GPU (6,19 % beim Verschieben eines beliebigen Fensters) und 1,14 MB ausgelastet.
Versuchen wir nun, das Problem zu lokalisieren (Thread, Aufrufstapel):
- in Process Hacker: Doppelklicken Sie auf
LogiOptionsMgr.exe
den Prozess > im Eigenschaftenfenster: wechseln Sie zur Registerkarte Threads - Sortieren ▼ nach CPU-Spalte
- Versuchen Sie, den Thread anzuhalten, der die meiste CPU-Auslastung hat: Öffnen Sie das Kontextmenü des Threads > „Anhalten“
- im Hauptfenster von Process Hacker: die Belastung der GPU sollte verschwinden.
Im Threads-Tab: die Thread-Zeile ist grau geworden - Jetzt können Sie sich den Aufrufstapel ansehen (Doppelklick auf den Thread) – in meinem Fall sah der Stapel so aus:
Notiz:0, ntdll.dll!NtWaitForSingleObject+0xa 1, KernelBase.dll!WaitForSingleObjectEx+0x9c 2, d3d9.dll!Direct3DCreate9+0x194fe 3, d3d9.dll!Direct3DCreate9Ex+0x17df 4, d3d9.dll!Direct3DCreate9Ex+0x1794 5, d3d9.dll!Direct3DShaderValidatorCreate9+0x1515b 6, d3d9.dll!Direct3DShaderValidatorCreate9+0x98aa 7, d3d9.dll!Direct3DShaderValidatorCreate9+0x167c0 8, d3d9.dll!DebugSetLevel+0x1584e 9, LogiOptionsMgr.exe+0xd4343 10, LogiOptionsMgr.exe+0x94947 11, LogiOptionsMgr.exe+0x1d6184 12, LogiOptionsMgr.exe+0x1dbae3 13, LogiOptionsMgr.exe+0x1dbc8a 14, kernel32.dll!BaseThreadInitThunk+0xd 15, ntdll.dll!RtlUserThreadStart+0x21
d3d9.dll
Ignorieren Sie vorerst die Namen der Funktionen – sie sind ungenau (die richtigen Namen sehen Sie weiter unten).
Als nächstes versuchen wir, die problematische Stelle (Nr. 9 im obigen Aufrufstapel) im LogiOptionsMgr.exe
Code zu lokalisieren und selbst zu beheben. Die Version meines Codes ist übrigens LogiOptionsMgr.exe
3.20.35nicht verletzlich.
Notiz:Denken Sie daran, dass Sie einen Thread von angehalten haben LogiOptionsMgr.exe
.
Sie benötigen diex64dbgDebugger. Ich hoffe, Sie haben Erfahrung damit, wenn nicht, dann sind hier ein paar Einstellungen, die die Arbeit damit erleichtern (Menü Optionen > Einstellungen):
- VeranstaltungenRegisterkarte > „Break on“ – deaktivieren Sie dies alles (in Zukunft können Sie versuchen, „Entry Breakpoint*“ und „Attach Breakpoint“ zu aktivieren)
- AusnahmenRegisterkarte: Schaltfläche „Bereich hinzufügen“ > Start:
00000000
, Ende:FFFFFFFF
Lass uns anfangen:
- Menü „Datei“ >Anfügen: auswählen
LogiOptionsMgr.exe
und anhängen - Symbole laden für
d3d9.dll
(dies wird nur einmal durchgeführt):- im Reiter „Symbole“: linker Bereich > Modul „d3d9.dll“ > Kontextmenü: „Symbole für dieses Modul herunterladen“
- Suchen Sie im Programmcode nach dieser Stelle:
LogiOptionsMgr.exe+0xd4343
(Nr. 9 im Aufrufstapel oben):- Wechseln Sie zu dem Thread, den Sie zuvor angehalten haben – auf der Registerkarte „Threads“ (x64dbg):
- finden Sie es
1
in der Spalte "Suspend Count" oder per TID Process Hacker, dec → die Spalte "ID" x64dbg, hex - doppelklicken Sie darauf
- finden Sie es
- Sie befinden sich oben auf dem Stapel. Rollen Sie ein wenig zurück:
- im Reiter „Aufrufliste“: Kontextmenü: „Verdächtigen Call-Stack-Frame anzeigen"
- Suchen Sie in der Kommentarspalte nach „Zurück zu logioptionsmgr.… von d3d9.…“.
- doppelklicken Sie darauf
- in der Registerkarte CPU: Scrollen Sie nach obenasmein wenig, um die vorherigen Anweisungen zu sehen
- die
test
Anweisung ist aktuell ausgewählt (in meinem Fall —test eax,eax
); darüber steht diecall
Anweisung (in meinem Fall —call qword ptr ds:[rax+3C8]
)
- die
- Setzen Sie einen Haltepunkt für die
call
Anweisung — klicken Sie auf • den grauen Punkt links → er wird rot - den aktuellen (angehaltenen) Thread fortsetzen — im Threads-Tab: Kontextmenü des Threads: „Thread fortsetzen“
d3d9.dll
Jetzt können Sie auf der Registerkarte „CPU“ den tatsächlichen Namen der aufgerufenen Funktion sehen :qword [rax+3C8]=<d3d9.public: virtual long __cdecl CBaseDevice::PresentEx(…) __ptr64>
Der oben angezeigte Aufrufstapel sieht also folgendermaßen aus:- 0,
ntdll.dll!NtWaitForSingleObject+0xa
- 1,
KernelBase.dll!WaitForSingleObjectEx+0x9c
- 2,
d3d9.dll!CBaseDevice::AcquireWriteAccess
- 3,
d3d9.dll!CBaseDevice::UpdateRenderTarget
- 4,
d3d9.dll!CD3DBase::SetRenderTargetI
- 5,
d3d9.dll!CSwapChain::ResetRenderTargets
- 6,
d3d9.dll!CSwapChain::PresentMain
- 7,
d3d9.dll!CBaseDevice::PresentMain
- 8,
d3d9.dll!CBaseDevice::PresentEx
←PresentEx
←Present
-LogiOptionsMgr.exe
möchtegegenwärtigzeig uns was… - 9,
LogiOptionsMgr.exe+0xd4343
- …
- 0,
- Wechseln Sie zu dem Thread, den Sie zuvor angehalten haben – auf der Registerkarte „Threads“ (x64dbg):
- Wenn Sie diesen Teil des Programms imModus „Übersteigen“F8, können Sie erkennen, dass sich dieser Thread in einer Schleife dreht, die mit
movzx eax,byte ptr ds:[rsi+38]
(fast unmittelbar nachcall qword ptr ds:[<&NtUserShowWindow>]
ShowWindow
) und kehrt zum Anfang zurück nachcall qword ptr ds:[<&PeekMessageW>]
Am Anfang der Schleife steht die Eintritts-/Endbedingung der Schleife:
test al,al
jne logioptionsmgr.13F904520
- Kontextmenü: Zusammenbauenspace
- ersetzen
jne
mitje
… und die Ausführung F9des Programms fortsetzen, dann werden die Ressourcen, die durchCoInitialize
UndDirect3DCreate9Ex
(siehe oben im ASM) wird ordnungsgemäß freigegeben, der Thread wird beendet und die folgenden Einträge werden auf der Registerkarte „Protokoll“ angezeigt (im Fall einer GPU von NVIDIA):
DLL Unloaded: … nvd3dumx.dll
DLL Unloaded: … psapi.dll
Thread … exit
Notiz:Entladungpsapi.dll
hat möglicherweise darauf hingewiesen, dass die persönlichen Mauseinstellungen für Anwendungen nicht mehr funktionieren (Umschalten), die persönlichen Einstellungen funktionieren jedoch weiterhin.
Bevor der Patch endgültig übermittelt wird, muss noch sichergestellt werden, dass er beim LogiOptionsMgr.exe
Start korrekt funktioniert:
- Vorbereitende Maßnahmen:
- Speichern Sie den Patch – auf der Registerkarte „CPU“: Kontextmenü der ASM-Ansicht: Patches Ctrl+ P: Schaltfläche „Exportieren“. In meinem Fall (für v3.20.35) habe ich den folgenden Inhalt der Patch-Datei erhalten
LogiOptionsMgr.1337
:>logioptionsmgr.exe 00000000000D4317:85->84
- Setzen Sie einen Haltepunkt auf
call qword ptr ds:[<&NtUserShowWindow>]
(wie oben erwähnt)
- Speichern Sie den Patch – auf der Registerkarte „CPU“: Kontextmenü der ASM-Ansicht: Patches Ctrl+ P: Schaltfläche „Exportieren“. In meinem Fall (für v3.20.35) habe ich den folgenden Inhalt der Patch-Datei erhalten
- Vorbereitung:
- neu starten
LogiOptionsMgr.exe
— Debug-Menü > Neustart Ctrl+F2 - nach dem Neustart sollte die Programmausführung bei gestoppt worden sein
call qword ptr ds:[<&NtUserShowWindow>]
, und wie Sie sehen, wurde der Patch (jne
→je
) nicht automatisch angewendet, wenden Sie ihn daher manuell an — Ctrl+ P: Schaltfläche „Importieren“
- neu starten
- überprüfender Code-Ausführungspfad (die Schleife muss übersprungen werden) — „Step over“ F8(oder"Animation über"oder verwenden SieRückverfolgung)
- Fortsetzung der Programmausführung — „Ausführen“ F9; der Codeausführungspfad muss noch einmal wiederholt werden:
- Ressourcen werden freigegeben
- Thread wird beendet (exit)
- Die entsprechenden Datensätze werden auf der Registerkarte „Protokoll“ angezeigt.
Um den Patch zu übernehmen, öffnen Sie den Dialog „Patches“ Ctrl+ Perneut: Schaltfläche „Patch-Datei“ (speichern Sie den Patch vorübergehend LogiOptionsMgr.exe
an einem anderen Ort und ersetzen Sie dann den ursprünglichen).
Vergessen Sie nicht, den Debugger zu trennen (Menü Datei >Ablösen) oder beenden Sie den LogiOptionsMgr.exe
Prozess sofort (Menü „Debuggen“ >Schließen Alt+F2), bevor Sie die LogiOptionsMgr.exe
Datei ersetzen.
Notiz:Während des oben genannten Vorgangs minidump\dump-*_*.dmp
könnten Minidumps im Verzeichnis mit dem erscheinen. LogiOptionsMgr.exe
Sie können bedenkenlos gelöscht werden.
Notiz:im Allgemeinen LogiOptionsMgr.exe
ist es nach dem Ersetzen des besser, das übergeordnete Element ( LogiOptions.exe
) durch Abmelden Ctrl+ Alt+ Delete, Alt+ L/ Anmelden neu zu starten.