Como faço para matar um processo irq no Ubuntu 16.04?

1

Eu não posso matar irq/${nnn}-nvidia por kill -9 ou pkill -f -9 . Alguém sabe como matar ou parar esse processo?

    
por TMit 19.08.2017 / 04:54

2 respostas

2

Como @hobbs explicou, é um segmento do kernel. Perspecive mais amplo é o seguinte:

A manipulação de IRQ é problemática em qualquer sistema operacional, porque a interrupção pode ocorrer a qualquer momento, mesmo que o kernel funcione no momento em uma tarefa complexa e muitos recursos sejam inconsistentes (os ponteiros apontam para endereços inválidos e assim por diante). Isso pode ser resolvido por bloqueios, ou seja, não permitimos que os manipuladores de interrupção sejam executados até que um estado consistente e quebrável não seja atingido. Ele tem a grande desvantagem de que muitos bloqueios estão tornando o sistema lento e ineficaz.

Assim, a solução ideal para o problema é esta:

  1. os manipuladores de interrupção do kernel são tão curtos quanto possível
  2. sua única tarefa é mover todos os dados de interrupção relevantes para um buffer temporário
  3. no entanto, algo no "plano de fundo", funciona continuamente nesse buffer e faz o trabalho real nas interrupções.

Estes são os threads do kernel do manipulador de interrupção. Estes são tópicos do kernel, a saber:

  • você os vê no top como processos normais,
  • no entanto, você vê como se eles usassem memória zero,
  • e sim, isso é verdade, porque nenhuma memória real do espaço do usuário pertence a eles .

Eles estão essencialmente no segundo plano executando threads do kernel.

Você não pode matar threads do kernel, eles são gerenciados inteiramente pelo kernel. Se você pudesse matá-los, o controlador irq / 142 no seu driver nvidia não existiria mais, ou seja, se o seu cartão de vídeo envia uma interrupção, nada iria lidar com isso. O resultado seria provavelmente um congelamento, mas o seu vídeo certamente não funcionaria mais.

Agora, o problema em seu sistema é que esse manipulador de interrupção obtém muitos recursos da CPU. Pode ter muitas razões:

  • Por algum motivo, o hardware (neste, sua placa de vídeo) envia simplesmente tantas interrupções que sua CPU não consegue lidar com todas elas.
  • O hardware está com bugs.
  • O motorista está com bugs.

Conhecendo a qualidade dos drivers nvidia, infelizmente esta última versão é a mais provável.

A solução é, de alguma forma, redefinir esse driver. Algumas idéias, ordenadas ascendendo por brutalidade:

  • Não está executando algum processo acelerado em 3D em segundo plano? Google Earth, por exemplo? Se sim, pare ou mate.
  • A partir do X, volte para o console de caracteres (alt / ctrl / f1) e, em seguida, volte (alt / ctrl / f7). Então, a maior parte da inicialização do vídeo será reinicializada.
  • Reiniciar X (normalmente, ou alt / ctrl / backspace mata o servidor X)
  • Mate X (killall -9 Xorg, melhor se você fizer isso a partir do console do personagem)

Se você matou X e ainda existe esse segmento do kernel, você pode tentar remover o módulo do kernel da nvidia (você pode vê-lo na lista dada por lsmod , então você pode removê-lo por rmmod ). Reiniciar o X irá automaticamente, redefinindo o hardware.

Se nada funcionar, você precisa reiniciar. Se mesmo a reinicialização comum não funcionar, você pode fazer isso com brutalidade adicional, e com alt / printscreen / s seguido por um alt / printscreen / b.

Extensão: como uma solução temporária, você pode tentar dar uma prioridade muito baixa a essa tarefa ( renice +20 -p 1135 ). Em seguida, ele ainda será executado, mas prejudicará muito menos o desempenho do sistema.

    
por 19.08.2017 / 19:36
2

Você não pode. Não é um processo, é um segmento do kernel. Você não pode matá-lo, e se você conseguiu, você só faria o seu sistema (mais) inutilizável.

    
por 19.08.2017 / 05:24