Limite de CPU em arquivos jar executáveis individuais

4

Eu tenho um script .sh com muitos arquivos jar nele. Cada arquivo jar possui argumentos de inicialização exclusivos. Eu devo limitar todos os arquivos jar para não usar mais de% 5 CPU cada.

nohup java -a dsasda -p adss
nohup java -a dsasad -p adds
nohup java -a dsdasa -p adsa
nohup java -a dsdsa -p adds
nohup java -a ddassa -p adas

Eu tenho lido sobre a ferramenta cpulimit, como usá-la para segmentar frascos individuais?

    
por Web Master 18.08.2016 / 18:03

2 respostas

5

Usando cpulimit

Eu liderei com a ferramenta que você propôs; cpulimit pode definitivamente fazer o que você quer. nohup cpulimit --background --limit=5 -- java -a dsasda -p adss

Tenha em mente que 5% é 5% de um único núcleo da CPU , não do poder total de computação da máquina. Escale isso se você quiser usar 5% de uma máquina multi-core.

Você provavelmente também desejará passar o argumento --quiet para cpulimit.

Se o seu desejo não é limitar especificamente o processo a 5%, mas apenas para evitar que o java atinja sua máquina, considere usar nice .

Usando nice

nice diminuirá a prioridade de seus processos Java para que eles não ocupem todo o tempo da CPU & amp; devagar as coisas. Ao contrário de cpulimit , nice permitirá que os processos Java usem mais de 5% da CPU, se nada mais quiser usá-la.

nohup nice java -a dsasda -p adss

nice aceita um argumento opcional, --adjustment=N em que N é um inteiro variando de 19 (prioridade muito baixa) a 0 (normal) ou até mesmo a -20 (prioridade muito alta, mas disponível somente se você for root ). O padrão será 10, o que provavelmente é bom.

    
por user586601 25.08.2016 / 17:33
3

Você pode usar o cpulimit como sugere, você segmenta o limite especificando o PID do processo que deseja limitar, para que possa gerar e limitar cada uma das tarefas acima a 5% da CPU com o seguinte script:

#!/bin/sh
nohup java -a dsasda -p adss &
nohup cpulimit -p $! -l 5 >/dev/null &
nohup java -a dsasad -p adds &
nohup cpulimit -p $! -l 5 >/dev/null &
nohup java -a dsdasa -p adsa &
nohup cpulimit -p $! -l 5 >/dev/null &
nohup java -a dsdsa -p adds &
nohup cpulimit -p $! -l 5 >/dev/null &
nohup java -a ddassa -p adas &
nohup cpulimit -p $! -l 5 >/dev/null &

Observe que $! significa o PID do último processo gerado pelo shell (nesse caso, o comando java na linha anterior). O -l 5 significa limite para 5%.

    
por Nick Sillito 21.08.2016 / 11:53

Tags