
Se eu usar algum aplicativo com uso intensivo de IO (como Virtualbox, verificação de dados Steam ou mesmo dd
), meu sistema quase não responde. Apesar de todos serem iniciados com prioridade normal, eles tornam o desktop muito lento e atrasam bastante a inicialização de outros aplicativos.
Eu sei que posso usar algo como ionice
mudar a prioridade para inativo, por exemplo, mas no caso do Virtualbox que gera muitos processos fica difícil.
Posso dar algum tipo de dica ao sistema, para que ao iniciar alguns aplicativos específicos eles sejam iniciados com a menor prioridade de IO?
Responder1
Nota: Esta solução só funciona com o agendador cfq, conforme explicadoaqui. Você deve verificar qual deles é usado emitindo
cat /sys/block/sda/queue/scheduler
emudarse necessário.
Se bem entendi, você deseja que alguma ionice
configuração seja aplicada sempre que iniciar um comando. Você pode fazer desta maneira:
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 conteúdo. Este deve conter o caminho completo para o programa, pois se apenas especificarmos 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 para uma pasta que está na frente da pasta bin "sistema" /usr/bin
, para que nosso novo arquivo seja executado em vez do original. A parte “$@” contém todos os argumentos com os quais o comando foi invocado, para que eles sejam encaminhados para o comando real do VirtualBox.
De acordo com a resposta ("sim") a esta pergunta do superusuárioOs processos infantis herdam prioridades iônicas de seus pais? Como você verifica a prioridade de IO de um processo em execução?, deve ser suficiente para ionice
o processo pai, assim:
ionice -c 3 VirtualBox
Deionice
página de manual, os seguintes valores de classe de agendamento de E/S estão disponíveis:
- 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, -n level
a opção é aplicável para classes de tempo real e de melhor esforço, com 0-7 como dados válidos (níveis de prioridade).
Responder2
Você pode usar o comando ‘renice’ para priorizar processos:
renice -<priority> <application's pid>
Também pode ser que sua unidade esteja girando demais, então quando você deseja iniciar um aplicativo como o Virtualbox, ele precisa girar antes de começar a trabalhar (isso pode demorar um pouco).