Bug: systemd-udevd Consumindo Muito ou até 100% da CPU, Conflito com o Bluetooth (BlueZ) :: Resolvido - Aquela Questão é o que você estava procurando

quarta-feira, 13 de novembro de 2019

Bug: systemd-udevd Consumindo Muito ou até 100% da CPU, Conflito com o Bluetooth (BlueZ) :: Resolvido

Serviço systemd-udevd causando sobreaquecimento. Como resolver?

Questão: Como resolver conflito entre o serviço systemd-udevd e a regra hid2hci udev da bluez e por consequência diminuir o uso da CPU?

(O problema relatado ocorreu em um Dell Vostro 3500 com Debian 10 "Buster" e GPU NVIDIA® GeForce® 310M.)

Resposta: O procedimento explicado aqui é apenas uma solução  paliativa, mas inteiramente funcional.

O que é o BlueZ? BlueZ é a stack oficial de protocolos Linux Bluetooth. É um projeto de código aberto distribuído sob a GNU General Public License (GPL). O kernel BlueZ faz parte do kernel oficial do Linux desde a versão 2.4.6.

Ele fornece, de maneira modular, suporte para as principais camadas e protocolos Bluetooth. Atualmente, o BlueZ consiste em muitos módulos separados:
  • Núcleo do subsistema do kernel Bluetooth
  • Camadas do kernel de áudio L2CAP e SCO
  • Implementações de RFCOMM, BNEP, CMTP e HIDP
  • HCI UART, USB, PCMCIA e drivers de dispositivo virtual
  • Bibliotecas e daemons gerais Bluetooth e SDP
  • Utilitários de configuração e teste
  • Ferramentas de decodificação e análise de protocolo
É  possível encontrar mais informações na página inicial do BlueZ upstream aqui.

Já o systemd-udevd é responsável por escutar os eventos do kernel. Para cada evento, systemd-udevd executa instruções correspondentes especificadas nas regras do udev. Veja mais aqui e aqui.

Então vamos ao que interessa. Resolver o problema:


1ª Opção: A mais simples.

Desinstalar drive bluez é a forma mais simples de resolver o problema, porém, claramente, será impossível usar o bluetooth depois da desinstalação.

2ª Opção: Um pouco mais complexa, no entanto, resolve o problema sem a necessidade de desinstalar o drive bluez.

Rodar os seguintes comandos resolve o problema de sobreaquecimento e alto consumo da CPU temporariamente:
sudo systemctl stop systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket
sudo systemctl start systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket
Fazer um script de inicialização com esses comandos resolve o problema permanentemente. (Veja como fazer e colocar na inicialização do sistema).

Criar um arquivo de texto na pasta /etc/init.d/ com o nome <bluez-bug-resolve> o conteúdo abaixo deve ser copiado para dentro do arquivo:
#!/bin/bash
#
# /etc/init.d/bluez-bug-resolve

### BEGIN INIT INFO
# Provides:          bluez-bug-resolve
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Iniciar script com o sistema
# Description:       Esse Script desativa e ativa o systemd-udevd pois assim resolve bug de uso de CPU.
### END INIT INFO

sudo systemctl stop systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket
sudo systemctl start systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket

exit 0

É utilizado o systemd para iniciar o script na inicialização: siga os passos:

1- Criar um arquivo de serviço para o nosso programa Script. Crie como root um arquivo chamado bluez-bug-resolve.service no diretório /lib/systemd/system.

2- Colocar o seguinte conteúdo nesse aquivo e salvar:
[Unit]
Description=Bug uso CPU por conflito Bluez parando servico systemd-udevd
 
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/etc/init.d/bluez-bug-resolve
 
[Install]
WantedBy=multi-user.target
3- Recarregar a nova definição do serviço:
sudo systemctl daemon-reload

4- Ativar o novo serviço, e verificar se o mesmo foi ativado
sudo systemctl enable bluez-bug-resolve
sudo systemctl list-unit-files | grep bluez-bug-resolve

5- Reiniciar o computador e verificar se o problema com uso exagerado do processador foi resolvido. O processo systemd-udevd não deve mais aparecer com grande uso no gerenciador de tarefas.

REFERÊNCIAS:
https://docs.ubuntu.com/core/en/stacks/bluetooth/bluez/docs/
http://www.bluez.org/
https://www.freedesktop.org/software/systemd/man/systemd-udevd.service.html
https://www.freedesktop.org/software/systemd/man/udev.html

Tags: debian buster bluez resolve service system systemd systemd script linux udev udevd distribuição root alto consumo uso exagerado aquecimento quente processador bluetooth resolver resolvido como resolver diagnostico medida vostro 3500 vostro3500 nvidia 310m geforce bug

Nenhum comentário:

Postar um comentário

Related Posts Plugin for WordPress, Blogger...