Escalonamento no Linux
Os requisitos do escalonador do Linux eram:
Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir de maneira justa o tempo da CPU; Ser eficiente em mquinas SMP (Symmetric Multi Processor); Possuir suporte para tempo real.
Escalonamento no Linux
Cada processo possui uma prioridade, que recalculada dinamicamente. O escalonador entrega a CPU para o processo que possui a maior prioridade. O escalonador preemptivo.
Escalonamento no Linux
O Linux considera dois tipos de processos:
processos interativos (time-sharing) processos tempo real
Para processos interativos (dentro da mesma prioridade) o algoritmo Round Robin. Para processos de tempo real (dentro da mesma prioridade) o algoritmo pode ser:
FCFS (o processo executa at terminar ou se bloquear) ou Round Robin
Escalonamento no Linux
Nas verses que antecederam a 2.6, o escalonador apresentava 2 problemas:
1) o tempo de execuo do escalonador aumentava com o aumento do nmero de processos no sistema; 2) O escalonador usava uma ready list global em mquinas SMP
Escalonamento no Linux
Primeiro problema (overhead):
Cada processo possui uma prioridade, baseada em uma prioridade bsica (Nice) e em seu comportamento em tempo de execuo. Uma vez selecionado, o processo ganha a CPU por uma fatia de tempo. Quando o time-slice esgota, o processo marcado como expirado. O escalonador seleciona o processo no expirado com a maior prioridade. Quando todos os processos esto expirados, o escalonador recalcula a prioridade de todos e ento seleciona o prximo a rodar. O problema era este reclculo de prioridades: aumentando o nmero de processos no sistema, aumenta o tempo necessrio para o escalonador recalcular as prioridades. (Para aplicaes com um nmero muito grande de processos, este tempo penalizava enormemente o desempenho do sistema)
Escalonamento no Linux
Segundo problema (uma nica ready list global nas mquinas SMP).
Neste caso, os problemas so de duas naturezas:
1) a necessidade de acesso mutuamente exclusivo ready list por parte dos processadores. Se um processador est acessando a ready list, os demais necessitam esperar at que a mesma seja liberada. Para um nmero elevado de processadores este bloqueio dos processadores pode ocasionar uma queda considervel no desempenho do sistema. 2) considere um processo bloqueado esperando uma operao de E/S; quando termina a E/S, o processo recolocado na ready list global e pode ser executado por um processador diferente daquele no qual estava rodando previamente. Isto acontecendo, dados do processo porventura existentes em caches no podero mais ser usados, influenciando negativamente na performance.
Expirados
Prioridade 1 P2
Thread de migrao
Quando o array Ativos se torna vazio, o array Expirados passa a ser o ativo, com uma simples troca de apontadores.
A prioridade dos processos de usurio a soma de sua prioridade bsica (valor de seu nice) e seu bonus dinmico, que varia de +5 a 5.
10
11
Thread de migrao
Em cada processador roda uma thread de migrao, cuja funo movimentar processos de um processador para outro. Como existe uma ready list por processador, a idia evitar que processadores fiquem ociosos enquanto outros esto sobrecarregados. A thread de migrao chamada periodicamente, a cada tick do relgio, e tambm explicitamente quando o sistema fica desbalanceado.
12
poltica antecipatria.
13
Poltica de deadlines
O escalonador implementa duas filas: fila READ com deadline de 500 ms e fila WRITE com deadline de 5 seg (portanto, o tempo limite de atendimento de um processo depende da fila em que ele se encontra) As requisies so inseridas nas filas apropriadas (READ ou WRITE), na posio correspondente a sua requisio (cilindro a ser acessado). O escalonador atende as requisies, seguindo a ordem das filas. Se um deadline expira, o escalonador dispara a requisio seguindo a ordem da fila, garantindo a execuo das requisies cujo deadline expirou. Esta poltica assegura que as operaes de posicionamento dos cabeotes (seek) so minimizadas (pela classificao das requisies) e o deadline garante que no haver postergao indefinida de requisies. Outro aspecto importante o aumento da interatividade, que resulta da atribuio de deadline menor e da priorizao das operaes READ.
14
Poltica antecipatria
O escalonamento antecipatrio tenta antecipar futuras operaes de leitura. Para isso, mantm algumas estatsticas sobre os processos. Quando um READ se completa, o escalonador no executa a prxima requisio da fila, mas espera 6 ms por uma nova requisio do mesmo processo. Se ocorrer, a mesma ser atendida. Para muitas aplicaes, esta espera (6 ms) evita inmeras operaes de posicionamento dos cabeotes (seek). Se o processo no executa outra operao READ, este tempo perdido.
15
16
Escalonamento de threads
No Windows 2000/XP o escalonador utiliza mltiplas filas e os processos interativos (I/O bound) possuem prioridade sobre os CPU bound. O escalonamento baseado em prioridades. Cada thread possui uma prioridade, que varia de 0 a 31 (0 a menor e 31 a maior). A prioridade 0 atribuda a uma thread especial, chamada zero thread, que responsvel por zerar as pginas livres no sistema. Somente esta thread pode receber a prioridade 0. As prioridades definem duas classes de threads:
Real time: prioridades de 16 a 31; Normal: prioridades de 0 a 15.
Existe ainda uma classe especial chamada idle, a de mais baixa prioridade. Threads nesta classe somente executam quando no existem outras threads aptas (portanto, threads dessa classe no interferem na performance no causam overhead).
17
eldi
41
51
61
03 92
13
T4 T7 T3 T9 T5 T1
18
Escalonamento de threads
O escalonador escolhe sempre a thread de maior prioridade. As threads da classe real time executam at terminar ou se bloquear. As threads com prioridade normal (0 a 15) recebem fatias de tempo.
no sistema Windows 2000 professional, a fatia de tempo de 20 ms (para favorecer a interatividade). no Windows 2000 Server, a fatia de 120 ms (para gerar menos trocas de contexto).
Cada thread recebe uma prioridade base ao ser criada. Para os processos de tempo real (prioridade entre 16 e 31) esta prioridade no se altera. Processos com prioridade entre 0 e 15 tm a prioridade ajustada em tempo de execuo:
Processos que retornam de operaes de I/0 recebem um bnus de aumento, que depende do perifrico (ex. 1 para disco e 6 para teclado). Aps operaes de sincronizao, os processos tambm recebem um aumento de prioridade, dependendo da natureza do processo.
19
20