1 votos

Proceso "irq/288-wcd9xxx" que está consumiendo la batería, ¿cómo detenerlo?

Estoy usando un Fairphone 2 con Fairphone open OS, bajo Android 7, (número de compilación: fp2_sibon-userdebug 7.1.2 19.11.2 sibon-24df0be9), actualizado. Mi batería pierde sistemáticamente entre un 50% y un 90% durante la noche, y después de haber intentado todo tipo de cosas para detenerlo, mi hermano verificó en un terminal (usando Termux) con el comando top qué procesos estaban utilizando la CPU. Un proceso llamado irq/288-wcd9xxx usa permanentemente entre un 15% y un 20% de la CPU, lo que podría explicar por qué mi batería simplemente muere en 12 horas. Aquí hay una captura de pantalla de lo que obtengo.

Captura de pantalla del comando top

Como kill o kill -9 no tienen absolutamente ningún efecto sobre él (parece funcionar al ejecutar el comando, pero el proceso sigue estando después), ¿alguien tiene alguna idea de qué es y cómo matarlo o detenerlo?

EDICIÓN:

Gracias Irfan Latif por tu respuesta detallada, mi hermano y yo comenzamos a investigar esto, y por el momento, no hemos visto mucha mejora:

El comando grep -rI $(readlink /proc/$(pgrep -f irq/288-wcd9xxx)/exe) /*/etc/init/ /init.*.rc realmente no produce ningún resultado, y el ppid es 2, por lo que al parecer, parece ser un hilo de kernel.
(También revisamos la lista getprop | grep init.svc. , e intentamos detener audiod solo para ver, pero no cambió nada).

Dado que este teléfono es un Fairphone (teléfono modular), podemos quitar el hardware sospechoso y reiniciar para ver si cambia algo (sugerencia de este hilo de Fairphone que también publiqué, que ya dice que es un "proceso de kernel", no había entendido las implicaciones: Se trata de interrupciones de hardware provenientes del códec de audio).
Pero quitar el hardware tampoco pareció cambiar nada, tal vez cambiarlo funcione (mi hermano tiene el mismo teléfono con una versión de Android diferente, lo intentaremos la próxima vez que nos encontremos), pero en esta etapa dudamos.

Por último, pronto intentaremos tus sugerencias para controlar el uso de CPU del proceso, tal vez sea una solución temporal, pero parece que ahora mi hermano considera que esto necesita una reinstalación completa del sistema, ya que desde el momento en que hicimos la instalación (la instalación estándar de Fairphone open OS), la batería siempre parece estar drenando excesivamente.

P.D. Otro proceso, irq/195-ngd_sli, también parece estar consumiendo un 5 a un 7% permanentemente. No le habíamos prestado mucha atención, pero ahora parece igual de anormal; también investigaremos esto.

1voto

Jack Wade Puntos 231

irq parece tener relación con interrupciones de hardware y wcd9xxx es una serie de códecs de audio Qualcomm Aqstic. Aparentemente, el proceso irq/288-wcd9xxx se está ejecutando para admitir la funcionalidad de audio en tu dispositivo. El ejecutable debe ser un blob binario de código cerrado, por lo que no puedes hacer nada para solucionarlo, salvo (si ya fue solucionado por alguien, o) actualizar o retroceder en la ROM o detener el servicio.

Dado que kill o kill -9 no tienen absolutamente ningún efecto en él (parece funcionar al ejecutar el comando, pero el proceso sigue estando allí después), ¿alguien tiene alguna idea de qué es y cómo matarlo o detenerlo?

El proceso debe estar funcionando como un servicio nativo definido por el proveedor de hardware / SoC en algún archivo .rc de init. Por lo tanto, seguirá reiniciándose si se mata. Para detener adecuadamente el servicio, necesitas encontrar su nombre. Primero, obtén la ruta del ejecutable del PID y luego encuentra el servicio buscando en todos los archivos .rc:

~# grep -rI $(readlink /proc/$(pgrep -f irq/288-wcd9xxx)/exe) /*/etc/init/ /init.*.rc

Puedes confirmar el mismo nombre de servicio mirando el estado running en el comando getprop | grep init.svc.. Para detener el servicio, usa alguno de estos comandos:

~# stop 
~# setprop ctl.stop 

Esto debe repetirse en cada reinicio. O puedes editar el archivo .rc relacionado para quitar el servicio.

Si esto resulta en que algo no funciona, otra posibilidad es intentar controlar su uso de CPU aplicando alguna limitación, por ejemplo, cgroups (si el kernel lo admite).

EDICIÓN:

Acabo de darme cuenta de que un nombre de archivo no puede tener una barra diagonal (/). Por lo tanto, irq/288-wcd9xxx debe ser un hilo de kernel para el manejo de interrupciones. No es evidente, pero puedes revisar su PID padre (ppid debe ser 2) y también la ausencia de asignación de memoria (0K) indica que no es un proceso de espacio de usuario. Por lo tanto, el problema está en tu hardware de audio o en el controlador del kernel (mira esta respuesta). En este último caso, nuevamente un kernel actualizado del OEM resolvería el problema.

Un arreglo puede ser controlar el uso de CPU del proceso en tiempo real usando chrt: chrt -r -p 1 $(pgrep -f irq/288-wcd9xxx) o chrt -f -p 1 $(pgrep -f irq/288-wcd9xxx) o renice o cgroups (si el kernel lo admite): cpu o cpuset.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X