Alterando o planejador de E / S para um disco específico

4

Eu gostaria de mudar permanentemente o agendador de I / O para um disco específico no Fedora 20. De acordo com o que eu encontrei, isso pode ser feito executando a seguinte linha de shell como root:

echo {SCHEDULER-NAME} > /sys/block/{DEVICE-NAME}/queue/scheduler

No entanto, a alteração é perdida após uma reinicialização. Parece que um meio para conseguir o que eu quero é criar um serviço systemd, mas estou completamente perdido, uma vez que ele deve ser executado depois que os discos são montados. Alguém poderia me ajudar a escrever um serviço desse tipo? Qualquer outra solução viável também é bem-vinda.

    
por Laurent 16.07.2014 / 13:12

4 respostas

6

Você simplesmente precisa criar um arquivo em /etc/systemd/system/io-scheduler.service com o seguinte conteúdo:

[Unit]
Description=I/O Scheduler Setter
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo noop > /sys/block/sda/queue/scheduler'
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Em seguida, ative o serviço para início automático na inicialização e inicie-o para a sessão atual com:

chmod 755 /etc/systemd/system/io-scheduler.service
systemctl enable io-scheduler.service
systemctl start io-scheduler.service
    
por 16.07.2014 / 14:23
8

Os tuned e tuned-utils pacakages estão disponíveis para o Fedora (eles também estão no Red Hat). Este é um serviço de sistema que pode aplicar pré-definido ou perfis de sistema definidos pelo usuário e tuneables on-the-fly, incluindo opções de montagem, agendadores de disco, parâmetros sysctl, etc. Muitos administradores do Liinux ignoram essas configurações.

Veja o Manual do Fedora 20:
link

Algo como:

tuned-adm profile virtual-guest

ou

tuned-adm profile enterprise-storage

Aqui está o cronograma de configurações do RHEL. O Fedora pode ser um pouco diferente.

Eu sei que você está procurando configurações em um disco específico, mas tenho a tendência de aplicar os parâmetros de agendamento de E / S a todos os discos. De qualquer forma, veja se os perfis predefinidos funcionam para você (não é necessário duplicar o esforço). Caso contrário, os perfis são fáceis de personalizar.

    
por 16.07.2014 / 13:56
0

Você pode alterar o agendador padrão para todos os discos adicionando o seguinte à sua linha de comando do kernel, que pode ser encontrada em /boot/grub/menu.lst :

elevator={SCHEDULER-NAME}

    
por 16.07.2014 / 23:43
0

@ewwhite, você forneceu a resposta para uma pergunta que o op não fez.

A resposta para "alterar permanentemente o agendador de E / S para um disco específico" não é fornecida no recurso que você sugeriu, e o comentário "a forma como o Fedora e a Red Hat documentaram e pretendiam" está fora da base por várias razões que Eu não vou entrar aqui.

Para alterar o programador do io para um disco específico, o op escolheu o método correto:

echo noop > / sys / block / sda / queue / scheduler

Como ele escolhe executar este comando é algo arbitrário; isso pode ser feito com um aplicativo de gerenciamento de configuração, um script ou uma unidade de serviço, como ele fez.

@boscoe - isso será um problema nos sistemas grub2. A questão é destinada a F20. Além disso, ele aplicará o elevador a todos os discos, o que não é o que o op foi depois.

    
por 26.09.2014 / 19:33