Por que o Linux pode deixar de responder? [fechadas]

1

Esta questão Por que um sistema pode deixar de responder? se aproxima . A resposta explica o que provavelmente está acontecendo, mas eu não entendo porque esse problema não foi resolvido desde pelo menos os anos 80. Existem razões teóricas?

Especificamente o que acontece é que o sistema funciona bem sem queda de desempenho perceptível, enquanto eu tenho muitas guias no meu navegador (acontece com o Firefox e Chrome), mas às vezes a abertura de uma nova guia (ou o lançamento do outro navegador) o HDD para fazer ruído constante e a resposta de entrada do mouse / teclado fica tão lenta que eu reinicio muito a frio. Isso me poupa 10 minutos e muito cabelo grisalho.

Eu desativei a troca completamente e o mesmo acontece. O kernel não deveria simplesmente matar o 1º processo que atinge os limites da memória física, ou o maior talvez?

O kernel não deve permitir que qualquer processo, nem mesmo buggy / malicioso, para não mencionar o Firefox / Chrome, cause uma falta de resposta de tal forma que a saída mais rápida seja uma reinicialização a frio. Seja qual for a razão. Qual é a razão? Não pode ser reconhecido? Um processo não muito "ganancioso" deve ser morto automaticamente, em vez de fazer com que o usuário mate manualmente todos eles com uma reinicialização e perca dados não salvos?

Eu sei sobre os keycombos e pkill do SysRq (> 10 minutos), mas eu não quero ter que usar nenhum deles. Eu quero que esse problema seja resolvido automaticamente.

Estou interessado em saber por que isso não está resolvido no Linux?

    
por moooxxx 20.01.2018 / 17:09

1 resposta

4

Existe uma solução alternativa para o problema do thrashing: para limitar automaticamente os recursos do sistema por usuário do processo, você pode utilizar o módulo pam_limits (via limits.conf) no Linux (CentOS e similar) ou banco de dados de capacidade de classe de login no FreeBSD (via login. conf). Você pode limitar os recursos típicos, como uso de memória, número de arquivos e processos, tempo de CPU, etc., evitando assim situações em que um processo afeta todos os recursos.

Geralmente, não há limites definidos por padrão além dos recursos do kernel definidos no tempo de compilação.

Você obtém um controle ainda melhor sobre o preço da complexidade, ativando grupos de controle (cgroups) no Linux (por exemplo: link )

    
por 20.01.2018 / 18:49