Eu tenho um laptop de 6 anos com as seguintes especificações:
Sistema operacional: Windows 8.1 Pro de 64 bits (6.3, Build 9600)
Marca e modelo: SAMSUNG 770Z5E/780Z5E
Processador: CPU Intel(R) Core(TM) i7-3635QM a 2,40 GHz
RAM: 8 GB
Ultimamente, parece haver um processo que está fazendo com que o laptop esquente e faça os ventiladores girarem loucamente. Eu tenho esse processo e o software (utilitário de mouse Logitech) há mais de 3 anos. As únicas alterações do sistema foram as atualizações do Windows, que aplico uma vez por trimestre. Nada foi instalado há mais de um ano.
O processo é LogiOptionsMgr.exe. Assim que eu o mato, o laptop se estabiliza em 30 segundos. O estranho é que o processo afirma estar usando <1% da CPU e o Filemon não registra nenhum IO (disco, registro, rede, etc.).
Tudo o que vejo vai contra o que sei sobre computadores. Se a utilização do processo estiver mostrando <1%, isso não deve ser motivo para o laptop se comportar assim. E em qualquer caso, o processo não parece estar fazendo nada de acordo com Filemon. Novamente, mate-o e o laptop voltará ao normal.
O que pode estar acontecendo?
Responder1
Então, após a orientação de Mokubai, descobriu-se que o software Switchable Graphics da AMD estava detectando erroneamente o software Logitech como um aplicativo que exigia que minha placa gráfica 3D funcionasse com configurações de alto desempenho.
Meu laptop possui gráficos Intel integrados e também AMD Radeon série 9700. Criei perfis de aplicativos no software AMD Catalyst para tratar explicitamente todos os softwares da Logitech como aqueles que tentam otimizar a vida útil da bateria em detrimento do desempenho. Parece ter feito isso. Essa falha ocorreu após uma atualização do Windows, então não sei quem é o culpado.
Responder2
Mesmo após a migração LogiOptionsMgr.exe
para o iGPU, ele continuará consumindo uma certa quantidade de watts. Abaixo vou mostrar como reduzir a conta de luz eliminando completamente o problema.
Observação:Você énão é o único com isso problema(mais de 10.000 (aproximadamente 34.557) pessoasno total):
- Por que
logioptionsmgr.exe
uso até 30% da minha GPU NVIDIA GeForce RTX 3060 Ti (200 Watts) durante o modo inativo?- Suporte da Logitech: Opções da Logitech com alta carga de GPU 8% de NVIDIA GeForce RTX 20?0 Super
- Suporte Logitech:
LogiOptionsMgr.exe (UNICODE)
uso de GPU 2-3% de NVIDIA GeForce GTX 1070 (150 Watts)
- Logitech Mouse Software usando potência de GPU 5-10% de NVIDIA GeForce 970 GTX (145 Watts)
Alguém está tendo problemas com alto uso da CPU duranteLogioptions.exe
a execução?- O SOFTWARE DE OPÇÕES DA Logitech ESTÁ consumindo sua GPU!!!! NVIDIA GeForce GTX 1070 (150 Watts); T com
LogiOptionsMgr.exe
(marcha lenta, carga): 53‑55°C, 82‑85°C; sem/o: 40°C, 70°C. 21% de NVIDIA Titan Xp (250 Watts). - Software Logitech *Aviso* T com
LCore.exe
(inativo): 50°C; sem/o: 30°C.
Se eu abrirHacker de processose adicione as colunas "GPU" e "Bytes dedicados à GPU", então no meu caso LogiOptionsMgr.exe
utiliza 0,94% da GPU (6,19% ao mover qualquer janela) e 1,14 MB.
Agora vamos tentar localizar o problema (thread, pilha de chamadas):
- no Process Hacker: clique duas vezes no
LogiOptionsMgr.exe
processo> na janela Propriedades: mude para a guia Threads - classificar ▼ por coluna da CPU
- tente suspender o thread que utiliza mais CPU: abra o menu de contexto do thread> item "Suspender"
- na janela principal do Process Hacker: a carga na GPU deve desaparecer
na aba Threads: a linha do thread ficou cinza - agora você pode olhar a pilha de chamadas (clique duas vezes no thread) - no meu caso, a pilha era assim:
Observação:ignore os nomes das0, 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
funções por enquanto — eles são imprecisos (você verá os nomes corretos abaixo).
A seguir, vamos tentar localizar o local problemático (nº 9 na pilha de chamadas acima) no LogiOptionsMgr.exe
código e corrigi-lo nós mesmos. A propósito, minha versão LogiOptionsMgr.exe
é 3.20.35não vulnerável.
Observação:lembre-se de que você suspendeu um tópico do LogiOptionsMgr.exe
.
Você precisará dox64dbgdepurador. Espero que você tenha experiência com isso, caso contrário, aqui estão algumas configurações que facilitarão o trabalho (menu Opções > Preferências):
- Eventosguia> "Break on" - desmarque tudo isso (no futuro, você pode tentar ativar "Entry Breakpoint*" e "Attach Breakpoint")
- Exceçõesguia: botão "Adicionar intervalo" > início:,
00000000
fim:FFFFFFFF
Vamos começar:
- Menu Arquivo >Anexar: selecione
LogiOptionsMgr.exe
e anexe - carregar símbolos para
d3d9.dll
(isso é feito apenas uma vez):- na guia Símbolos: painel esquerdo > módulo "d3d9.dll" > menu de contexto: "Baixar símbolos para este módulo"
- encontre este local no código do programa:
LogiOptionsMgr.exe+0xd4343
(nº 9 na pilha de chamadas acima):- mude para o thread que você suspendeu anteriormente - na guia Threads (x64dbg):
- encontre-o
1
na coluna "Contagem de suspensão" ou por TID Process Hacker, dec → coluna "ID" x64dbg, hex - clique duas vezes nele
- encontre-o
- você está no topo da pilha – retroceda um pouco:
- na guia Pilha de chamadas: menu de contexto: "Mostrar quadro de pilha de chamadas suspeito"
- na coluna Comentário: encontre "return to logioptionsmgr.… from d3d9.…"
- clique duas vezes nele
- na guia CPU: role para cimaasmum pouco para ver as instruções anteriores
- a
test
instrução está atualmente selecionada (no meu caso —test eax,eax
); acima está acall
instrução (no meu caso -call qword ptr ds:[rax+3C8]
)
- a
- defina um ponto de interrupção na
call
instrução — clique no • marcador cinza à esquerda → ele ficará vermelho - retomar o thread atual (suspenso) — na aba Threads: menu de contexto do thread: "Resume Thread"
- agora na aba CPU você pode ver o nome real da
d3d9.dll
função que está sendo chamada:qword [rax+3C8]=<d3d9.public: virtual long __cdecl CBaseDevice::PresentEx(…) __ptr64>
ou seja, a pilha de chamadas mostrada acima se parece com isto:- 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
querpresentemostre algo para nós… - 9,
LogiOptionsMgr.exe+0xd4343
- …
- 0,
- mude para o thread que você suspendeu anteriormente - na guia Threads (x64dbg):
- se você percorrer esta parte do programa noModo "Passar por cima"F8, você pode perceber que esse thread está girando em um loop que começa com
movzx eax,byte ptr ds:[rsi+38]
(quase imediatamente apóscall qword ptr ds:[<&NtUserShowWindow>]
ShowWindow
) e retorna ao início apóscall qword ptr ds:[<&PeekMessageW>]
No início do loop está a condição de entrada/fim do loop:
test al,al
jne logioptionsmgr.13F904520
- menu de contexto: Montarspace
- substituir
jne
comje
… e retomar a execução F9do programa, então os recursos criados porCoInitialize
eDirect3DCreate9Ex
(veja acima no asm) será liberado corretamente, o thread será encerrado e os seguintes registros aparecerão na aba Log (no caso de GPU da NVIDIA):
DLL Unloaded: … nvd3dumx.dll
DLL Unloaded: … psapi.dll
Thread … exit
Observação:descarregandopsapi.dll
pode ter sugerido que as configurações pessoais do mouse para aplicativos irão parar de funcionar (alternar), no entanto, as configurações pessoais ainda funcionam.
Antes de finalmente enviar o patch, resta garantir que ele funcione corretamente quando LogiOptionsMgr.exe
for iniciado:
- pré-preparação:
- salve o patch — na aba CPU: menu de contexto da visualização do conjunto: Patches Ctrl+ P: botão Exportar; no meu caso (para v3.20.35), obtive o seguinte conteúdo do arquivo de patch
LogiOptionsMgr.1337
:>logioptionsmgr.exe 00000000000D4317:85->84
- definir um ponto de interrupção no
call qword ptr ds:[<&NtUserShowWindow>]
(foi mencionado acima)
- salve o patch — na aba CPU: menu de contexto da visualização do conjunto: Patches Ctrl+ P: botão Exportar; no meu caso (para v3.20.35), obtive o seguinte conteúdo do arquivo de patch
- preparação:
- reinicie o
LogiOptionsMgr.exe
- menu Depurar> Reiniciar Ctrl+F2 - após a reinicialização, a execução do programa deveria ter parado no
call qword ptr ds:[<&NtUserShowWindow>]
, e como você pode ver, o patch (jne
→je
) não foi aplicado automaticamente, então aplique-o manualmente — Ctrl+ P: botão Importar
- reinicie o
- verificaro caminho de execução do código (o loop deve ser ignorado) — "Passar por cima" F8(ou"Animar acabou", ou usarrastreamento)
- retomar a execução do programa — "Executar" F9; o caminho de execução do código deve ser repetido novamente:
- recursos serão liberados
- thread irá terminar (sair)
- os registros correspondentes aparecerão na aba Log
Para submeter o patch, abra a caixa de diálogo "Patches" Ctrl+ Pnovamente: botão "Arquivo de Patch" (salve temporariamente o patch LogiOptionsMgr.exe
em outro local e depois substitua o original).
Não se esqueça de desconectar o depurador (menu Arquivo >Desanexar) ou encerrar imediatamente o LogiOptionsMgr.exe
processo (menu Debug >Fechar Alt+F2) antes de substituir o LogiOptionsMgr.exe
arquivo.
Observação:durante o procedimento acima, minidespejos minidump\dump-*_*.dmp
podem aparecer no diretório com LogiOptionsMgr.exe
- é seguro excluí-los.
Observação:no caso geral, após substituir o LogiOptionsMgr.exe
, é melhor reiniciar seu pai ( LogiOptions.exe
) fazendo logoff Ctrl+ Alt+ Delete, Alt+ L/ login.