como limitar recursos no Linux

1

Eu postei uma pergunta sobre isso algumas horas atrás no Stack Overflow:

Linux bash inline command to execute a program and limit the resource

Como eu sei, para limitar o recurso, posso usar o comando ulimit.

Mas, o problema é quando eu configuro o limite de tempo da CPU em 1 segundo, e então eu quero executar outro programa com limite de CPU 2s, o comando ulimit retorna um erro como este:

bash: ulimit: CPU time: cannot modify limit: Operation not permitted

e absolutamente meu programa foi morto em 1 segundo.

Então, como posso fazer o segundo programa rodando com o limite de tempo da CPU em 2 segundos?

    
por Bobby Stenly 16.05.2011 / 16:17

2 respostas

0

Finalmente eu encontrei a minha resposta depois de algumas vezes lendo cuidadosamente sobre o ulimit ... Eu encontrei meu erro ... Eu tive uma percepção errada sobre o limite soft e hard limit, e o que eu preciso fazer é usar o soft limit para o comando .. e eu fiz isso com ulimit -St 1; ./a ouput.out e para o segundo ulimit -St 2; ./a ouput.out

Sinto muito pelo meu mal ... Desejo que este post seja útil para todos que precisam dele ... Muito obrigado ..

    
por 18.05.2011 / 04:37
0

Geralmente, é melhor dar prioridades aos processos em vez de limitar seus recursos. Por que não deixar o processo funcionar com potência máxima se a máquina estiver ociosa?

Você pode usar nice para executar comandos com prioridade menor ou maior. Você só precisa de acesso de superusuário se deseja executar com maior prioridade.

$ nice [-n increment] ./a <input.in> output.out

Você também pode usar renice para alterar a prioridade do processo que já está em execução.

Tanto nice como renice podem receber um parâmetro opcional -n com um inteiro (-20 <= n <= 20) . Inteiro positivo torna o processo mais bonito e usa menos recursos, enquanto números inteiros negativos o tornarão bom . Se nenhum parâmetro for dado, 10 é assumido.

    
por 19.05.2011 / 06:10