Procesador sobrecargado, uso bajo de la CPU del proceso, sin actividad en Filemon

Procesador sobrecargado, uso bajo de la CPU del proceso, sin actividad en Filemon

Tengo una computadora portátil de 6 años con las siguientes especificaciones:

  • Sistema operativo: Windows 8.1 Pro de 64 bits (6.3, compilación 9600)

  • Marca y modelo: SAMSUNG 770Z5E/780Z5E

  • Procesador: CPU Intel(R) Core(TM) i7-3635QM a 2,40 GHz

  • RAM: 8GB

Últimamente parece haber un proceso que hace que la computadora portátil se caliente y haga que los ventiladores zumben como locos. He tenido este proceso y el software (utilidad del mouse Logitech) durante más de 3 años. Los únicos cambios en el sistema han sido las actualizaciones de Windows, que aplico una vez por trimestre. Hace más de un año que no se instala nada.

El proceso es LogiOptionsMgr.exe. Tan pronto como lo apago, la computadora portátil se calma en 30 segundos. Lo extraño es que el proceso solo afirma estar usando <1% de CPU y Filemon no registra IO (disco, registro, red, etc.).

Todo lo que veo va en contra de lo que sé sobre computadoras. Si la utilización del proceso muestra <1%, eso no debería ser una causa para que la computadora portátil se comporte así. Y en cualquier caso, el proceso no parece estar haciendo nada según Filemon. Nuevamente, elimínelo y la computadora portátil volverá a la normalidad.

¿Qué podría estar pasando?

Respuesta1

Entonces, después de las instrucciones de Mokubai, resulta que el software Switchable Graphics de AMD estaba detectando erróneamente el software Logitech como una aplicación que exigía que mi tarjeta gráfica 3D se activara con configuraciones de alto rendimiento.

Mi computadora portátil tiene gráficos Intel integrados y también la serie AMD Radeon 9700. Creé perfiles de aplicaciones dentro del software AMD Catalyst para tratar explícitamente todo el software de Logitech como uno que intenta optimizar la duración de la batería sobre el rendimiento. Parece haberlo hecho. Este fallo se produjo después de una actualización de Windows, así que no sé a quién culpar realmente.

Respuesta2

Incluso después de migrar LogiOptionsMgr.exea la iGPU, seguirá consumiendo una cierta cantidad de vatios. A continuación te mostraré cómo reducir la factura de la luz eliminando por completo el problema.

Nota:Eresno es el unico con esto problema(más de 10.000 (aproximadamente 34.557) personasen total):

si abroHacker de procesosy agregue las columnas "GPU" y "bytes dedicados de GPU", luego, en mi caso, LogiOptionsMgr.exeutiliza el 0,94% de la GPU (6,19% al mover cualquier ventana) y 1,14 MB.

Ahora intentemos localizar el problema (hilo, pila de llamadas):

  1. en Process Hacker: haga doble clic en LogiOptionsMgr.exeel proceso > en la ventana Propiedades: cambie a la pestaña Hilos
  2. ordenar ▼ por columna de CPU
  3. intente suspender el hilo que utiliza la mayor cantidad de CPU: abra el menú contextual del hilo > elemento "Suspender"
  4. en la ventana principal de Process Hacker: la carga en la GPU debería desaparecer
    en la pestaña Hilos: la fila del hilo se ha vuelto gris
  5. ahora puedes mirar la pila de llamadas (haz doble clic en el hilo); en mi caso, la pila era así:
    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
    
    Nota:ignore los nombres de las d3d9.dllfunciones por ahora; son inexactos (verá los nombres correctos a continuación).

A continuación, intentemos localizar el lugar problemático (n.º 9 en la pila de llamadas de arriba) en el LogiOptionsMgr.execódigo y solucionarlo nosotros mismos. Por cierto, la versión mía LogiOptionsMgr.exees la 3.20.35.no vulnerable.

Nota:recuerda que has suspendido un hilo de LogiOptionsMgr.exe.

Necesitarás elx64dbgdepurador. Espero que tengas experiencia con él, si no, aquí tienes algunas configuraciones que te facilitarán el trabajo (menú Opciones > Preferencias):

  • Eventospestaña > "Interrumpir en": anule la selección de todo esto (en el futuro, puede intentar habilitar "Punto de interrupción de entrada*" y "Adjuntar punto de interrupción")
  • Excepcionespestaña: botón "Agregar rango" > inicio:, 00000000fin:FFFFFFFF

Vamos a empezar:

  1. Menú Archivo >Adjuntar: seleccionar LogiOptionsMgr.exey adjuntar
  2. cargar símbolos para d3d9.dll(esto se hace solo una vez):
    • en la pestaña Símbolos: panel izquierdo > módulo "d3d9.dll" > menú contextual: "Descargar símbolos para este módulo"
  3. busque este lugar en el código del programa: LogiOptionsMgr.exe+0xd4343(#9 en la pila de llamadas de arriba):
    1. cambie al hilo que suspendió anteriormente, en la pestaña Hilos (x64dbg):
      1. encuéntrelo 1en la columna "Suspend Count" o en TID Process Hacker, dec → la columna "ID" x64dbg, hexadecimal
      2. haga doble clic en él
    2. estás en la parte superior de la pila; retrocede un poco:
      1. en la pestaña Pila de llamadas: menú contextual: "Mostrar marco de pila de llamadas sospechosas"
      2. en la columna Comentarios: busque "volver a logioptionsmgr.… de d3d9.…"
      3. haga doble clic en él
    3. en la pestaña CPU: desplácese hacia arribaENSAMBLEun poco para ver las instrucciones anteriores
      • la testinstrucción está seleccionada actualmente (en mi caso - test eax,eax); arriba está la callinstrucción (en mi caso - call qword ptr ds:[rax+3C8])
    4. establezca un punto de interrupción en la callinstrucción: haga clic en la • viñeta gris a la izquierda → se volverá roja
    5. reanudar el hilo actual (suspendido) - en la pestaña Hilos: menú contextual del hilo: "Reanudar hilo"
    6. ahora en la pestaña CPU puedes ver el nombre real de la d3d9.dllfunción que se llama: qword [rax+3C8]=<d3d9.public: virtual long __cdecl CBaseDevice::PresentEx(…) __ptr64>
      es decir, la pila de llamadas que se muestra arriba se ve así:
      • 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::PresentExPresentExPresent- LogiOptionsMgr.exequierepresentemuéstranos algo...
      • 9,LogiOptionsMgr.exe+0xd4343
  4. Si recorres esta parte del programa en elModo "pasar por encima"F8, puedes darte cuenta de que este hilo gira en un bucle que comienza con movzx eax,byte ptr ds:[rsi+38](casi inmediatamente despuéscall qword ptr ds:[<&NtUserShowWindow>] ShowWindow) y regresa al principio despuéscall qword ptr ds:[<&PeekMessageW>]

Al comienzo del ciclo está la condición de entrada/final del ciclo:

test al,al
jne logioptionsmgr.13F904520

si reemplazasjne con je:

  1. menú contextual: ensamblarspace
  2. reemplazar jneconje

… y reanudar la ejecución F9del programa, luego los recursos creados porCoInitializeyDirect3DCreate9Ex(ver arriba en el conjunto) se liberará correctamente, el hilo se cerrará y aparecerán los siguientes registros en la pestaña Registro (en el caso de GPU de NVIDIA):

DLL Unloaded: … nvd3dumx.dll
DLL Unloaded: … psapi.dll
Thread … exit

Nota:descargapsapi.dllEs posible que haya insinuado que la configuración personal del mouse para aplicaciones dejará de funcionar (cambiará), sin embargo, la configuración personal aún funciona.

Antes de lanzar finalmente el parche, queda asegurarse de que funcione correctamente cuando LogiOptionsMgr.exese lance:

  1. preparación previa:
    1. guarde el parche - en la pestaña CPU: menú contextual de la vista asm: Parches Ctrl+ P: botón Exportar; en mi caso (para v3.20.35), obtuve el siguiente contenido del archivo de parche LogiOptionsMgr.1337:
      >logioptionsmgr.exe
      00000000000D4317:85->84
      
    2. establecer un punto de interrupción en call qword ptr ds:[<&NtUserShowWindow>](se mencionó anteriormente)
  2. preparación:
    1. reinicie el LogiOptionsMgr.exemenú Depurar > Reiniciar Ctrl+F2
    2. después del reinicio, la ejecución del programa debería haberse detenido en y call qword ptr ds:[<&NtUserShowWindow>], como puede ver, el parche ( jneje) no se aplicó automáticamente, así que aplíquelo manualmente - Ctrl+ P: botón Importar
  3. controlarla ruta de ejecución del código (se debe omitir el bucle) — "Pasar por encima" F8(o"Se acabó la animación", o usarrastreo)
  4. reanudar la ejecución del programa — "Ejecutar" F9; la ruta de ejecución del código debe repetirse nuevamente:
    • los recursos serán liberados
    • El hilo terminará (saldrá)
    • los registros correspondientes aparecerán en la pestaña Registro

Para enviar el parche, abra el cuadro de diálogo "Parches" Ctrl+ Pnuevamente: botón "Archivo de parche" (guarde temporalmente el parche LogiOptionsMgr.exeen otra ubicación y luego reemplace el original).

No olvide desconectar el depurador (menú Archivo >Despegar), o finalizar inmediatamente el LogiOptionsMgr.exeproceso (menú Depurar >Cerrar Alt+F2) antes de reemplazar el LogiOptionsMgr.exearchivo.

Nota:Durante lo anterior, minidump\dump-*_*.dmppodrían aparecer minivolcados en el directorio con LogiOptionsMgr.exe: es seguro eliminarlos.

Nota:en el caso general, después de reemplazar LogiOptionsMgr.exe, es mejor reiniciar su padre ( LogiOptions.exe) cerrando sesión Ctrl+ Alt+ Delete, Alt+ L/ iniciando sesión.

información relacionada