Garantindo a capacidade de resposta da concha no sistema conectado

2

Então, meu sistema está recebendo DOS, ou eu acabei de abrir um arquivo imenso (openstreetmaps planet.osm). O sistema fica totalmente sem resposta ... por isso não responde que levará cerca de 10 minutos para entrar no meu shell, executar top e matar o processo ofensivo. Estou pronto para apertar o botão de reset.

Pergunta: é possível reservar uma certa quantia mínima de recursos do sistema para que, se meu sistema for indexado, eu ainda tenha 2% cpu (2ghz system ~ 40 mhz! - deve ser suficiente para shell certo? , funcionou no início dos anos 90) reservado em algum lugar? Ou alguma maneira de limitar os processos ofensivos?

Eu tenho essas situações em que eu desejo que o SO afaste os processos de fuga para que eu ainda possa usar o sistema, mesmo que isso signifique uma queda de 10% no desempenho geral. A capacidade de agir em situações como esta, em vez de ficar completamente desamparada, seria ... legal.

    
por bundini 28.01.2010 / 05:22

2 respostas

1

Engraçado que você diga "legal". Uma solução é "renunciar" ao processo ofensivo para que ele não oculte a CPU (essencialmente reduzindo a prioridade do aplicativo).

Para iniciar um processo com prioridade mais baixa:

nice <program> &

Para alterar a prioridade de um processo em execução:

renice 4 <program>

A escala de prioridades é de -20 a 20. 0 é o padrão, 20 é a prioridade mais baixa, -20 é a prioridade mais alta.

    
por 28.01.2010 / 05:30
1

Você pode escrever um script para procurar por processos em execução em tty0 ou ttyS0 ou onde quer que seja um login de raiz prioritário e definir esses processos para uma prioridade de agendamento em tempo real. O script em si deve ser iniciado com uma prioridade em tempo real.

Obter acesso à memória durante uma tempestade de troca é uma tarefa mais difícil. Você pode usar cgroups do Linux. Você pode escrever um programa em C em vez de um script e usar o mlockall para bloquear sua memória na RAM. Então esse programa pode usar o ptrace para cutucar outros processos e forçá-los a chamar o mlockall. Você pode usar isso para obter um shell bash que não será afetado pelo swap.

A menos que você seja um programador ou encontre alguém que já tenha escrito isso (eu não), o cgroups é provavelmente uma maneira mais fácil de reservar alguma memória de alta prioridade.

    
por 09.04.2014 / 21:35