Como definir a prioridade de E / S do disco automaticamente?

8

Se eu usar algum aplicativo intensivo de E / S (como Virtualbox, verificação de dados do Steam ou mesmo dd ), meu sistema quase não responde. Apesar de tudo ter sido iniciado com prioridade normal, eles deixam a área de trabalho muito lenta e atrasam muito a inicialização de outras aplicações.

Eu sei que posso usar algo como ionice para alterar a prioridade para ocioso por exemplo, mas no caso do Virtualbox que gera muitos processos, torna-se difícil.

Posso dar algum tipo de dicas ao sistema, por isso, ao iniciar alguns aplicativos específicos, eles são iniciados com a menor prioridade de E / S?

    
por Salem 16.02.2013 / 13:21

2 respostas

7

Observação: essa solução só funciona com o planejador cfq, conforme explicado aqui . Você deve verificar qual deles é usado emitindo

cat /sys/block/sda/queue/scheduler

e altere se necessário.

Se eu entendi corretamente, você deseja que algumas configurações de ionice sejam aplicadas toda vez que você iniciar um comando. Você pode fazer assim:

echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/

O primeiro comando cria um arquivo VirtualBox com o texto entre aspas simples como seu conteúdo. Isso deve ter o caminho completo para o programa, porque se você especificar VirtualBox , ele poderá interpretá-lo como o arquivo que acabamos de criar e criar um "loop".

O segundo comando o torna executável, e o terceiro move esse novo arquivo em uma pasta que está na frente da pasta bin do "sistema" /usr/bin , então nosso novo arquivo é executado em vez do original. A parte "$ @" contém todos os argumentos com os quais o comando foi invocado, então eles são encaminhados para o comando real do VirtualBox.

De acordo com a resposta ("sim") a esta pergunta de superusuário página man , estão disponíveis os seguintes valores de classe de programação de E / S:

  • 0 para nenhum
  • 1 para tempo real
  • 2 para melhor esforço
  • 3 para inativo (usado no exemplo acima)

Um número ou nome de classe pode ser usado.

Além disso, a opção -n level é aplicável para as classes em tempo real e de melhor esforço, com 0-7 como dados válidos (níveis de prioridade).

    
por sm4rk0 22.02.2013 / 01:18
-1

Você pode usar o comando 'renice' para priorizar processos:

renice -<priority> <application's pid>

Também pode ser que sua unidade esteja diminuindo muito, então quando você quiser iniciar uma aplicação como o Virtualbox, ela terá que girar antes de começar a trabalhar (isso pode demorar um pouco).

    
por ashish 16.02.2013 / 14:00