Como executar uma operação intensiva de CPU / disco sem afetar drasticamente outros processos?

5

Estou executando um servidor no Ubuntu 12.04. A operação que estou tentando executar é um git clone , como parte de um novo sistema de backup que estou implementando. A origem e o destino são locais, portanto, não há atividade de rede envolvida no clone.

Este servidor está hospedando o Minecraft, e eu gostaria de poder fazer coisas como essa em segundo plano enquanto o servidor está rodando. No entanto, toda vez que eu faço isso, ele bloqueia o servidor e expulsa todo mundo, apesar de meus esforços para limitar o impacto no uso de recursos.

Aqui está o comando que eu tinha certeza que funcionaria:

nice -n 19 ionice -c 3 git clone bukkit backup

Pelo que eu li, isso deve dar ao processo menor prioridade de CPU e prioridade de disco "somente ocioso". No entanto, ainda tem o mesmo efeito de bloquear e sincronizar todos os usuários conectados ao servidor do Minecraft. Para ser claro, o repositório git não está na pasta do servidor ativo, portanto, não há nenhum tipo de conflito de acesso a arquivos.

Eu posso dar detalhes sobre especificações de hardware, se necessário. Obrigado.

    
por Parker Kemp 22.07.2014 / 17:42

2 respostas

2

Principalmente, não tentamos executar os processos paralelamente, mas vemos a hora em que o uso do sistema é o menor possível.
Então, primeiro você terá que encontrar a hora, quando não (ou talvez apenas alguns) estiverem no seu servidor, por exemplo, segunda-feira às 2 horas.

Para executar o comando uma única vez, no futuro, você usa o atd (at-daemon):

$ at 0200 monday
     /home/your_home/name_of_the_script.sh
<Ctrl-D>

Para mais informações, leia man at e man atd , certifique-se de sair da entrada usando Ctrl + D

  • Verifique se o seu script é válido + executável!
por LittleByBlue 02.08.2014 / 10:12
0

Se você estiver executando em uma instância do Amazon EC2 onde você pode usar 100% de CPU para instâncias de tempo curtas com uma utilização média forçada (por exemplo, 20% da CPU virtual), você também deve limitar a CPU total uso do seu processo com cpulimit . Caso contrário, você usará todos os créditos da CPU e sua instância será acelerada. Um tutorial pode ser encontrado aqui .

EDIT: Parece que não há rede envolvida. Se houvesse, você também poderia tentar um shaper de tráfego por processo:

Algumas boas sugestões podem ser encontradas aqui , os métodos mais fáceis parecem ser:

por jmiserez 03.08.2014 / 01:49