Agendador de processos
Um agendador de processos lida com a alocação de recursos da CPU para executar processos e visa maximizar a utilização geral da CPU e, ao mesmo tempo, maximizar o desempenho interativo.
Desde o kernel 2.6.23 (que seria do Hardy 8.04 LTS) Completely Fair Scheduler (CFS) baseado em "Rotating Staircase Deadline". Visão geral do kernel.org :
O CFS significa "Completely Fair Scheduler" e é o novo processo "desktop" planejador implementado por Ingo Molnar e mesclado no Linux 2.6.23. É o substituto para a SCHED_OTHER interatividade do agendador baunilha anterior código.
80% do design do CFS pode ser resumido em uma única frase: CFS basicamente modelos um "CPU multitarefa ideal e preciso" em hardware real.
"CPU multitarefa ideal" é uma CPU (inexistente :-)) que tem 100% física potência e que pode executar cada tarefa em velocidade igual precisa, em paralelo, cada um em 1 / nr_running speed. Por exemplo: se existem 2 tarefas em execução, então ele é executado cada um com 50% de energia física --- isto é, em paralelo.
No hardware real, podemos executar apenas uma única tarefa de uma vez, então temos que introduzir o conceito de "tempo de execução virtual". O tempo de execução virtual de uma tarefa especifica quando o próximo timeslice iria iniciar a execução no ideal CPU multi-tarefa descrita acima. Na prática, o tempo de execução virtual de uma tarefa é seu tempo de execução real normalizado para o número total de tarefas em execução.
- Kernel 2.4: O (n) agendador ; não há lançamento do Ubuntu com esse kernel.
- Kernel 2.6.0 a 2.6.22: O (1) agendador . Warty 4.10 (1ª release) usado 2.6.8. O Gutsy 7.10 foi o último que usou o 2.6.22 ou menor.
Agendador de E / S
O escalonamento de entrada / saída é o método que o sistema operacional usa para decidir em quais operações de E / S do bloco de pedidos serão submetidas aos volumes de armazenamento.
artigo da Phoronix sobre agendamento : Linux 3.16: Prazo final I / O Scheduler geralmente leva com um SSD.
Você pode alterar o agendador de E / S anexando a opção "elevator=" a "GRUB_CMDLINE_LINUX_DEFAULT=" no grub.
- por usar o Enfileiramento Completamente Razoável que seria "elevator = cfq".
- "elevator = deadline" para I / O de prazo final
- "elevator = noop" para Noop
É provavelmente mais fácil (assumindo sda e prazo) fazer assim:
-
Para mostrar a lista de agendadores disponíveis:
cat /sys/block/sda/queue/scheduler
-
E para alterar um agendador (pode ser feito em tempo real):
echo deadline > /sys/block/sda/queue/scheduler
kernel / git / torvalds / linux.git
Você pode verificar com o que está sendo usado (supondo sda como primairy):
cat /sys/block/sda/queue/scheduler