Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Agenda
1.
2.
3.
4.
5.
6.
Linux kernel
Escalonador
Runqueue
Vetores de Prioridade
Sleeping e Wakeup
Balanceamento de
Carga
7. Chaveamento de
Contexto
8. System Calls
9. Discusso
10. Futuro do Escalonador
11. Referncias
1.3. Escalonador
Funo componente do Kernel que seleciona o
processo que vai rodar primeiro
Pode ser visto como o elemento que divide os
recursos finitos do tempo do processador entre os
processos com estado TASK_RUNNING
a base da multi-tarefa, dando a impresso de que
vrios processos esto rodando simultaneamente
Trs formas de escalonamento:
FIFO
RoundRobin
Prioridade (calculada dinamicamente)
+19
Mnimo Timeslice
Mximo Timeslice
Prioridade baixa
Real-Time Range
0
+99
Prioridade baixa
1.5. Timeslice*
Valor numrico que representa quanto tempo uma tarefa
pode rodar at ser interrompida na preempo.
Este valor de Timeslice difcil de estimar, nem deve ser
curto demais, nem longo demais
Curto muito do tempo ser perdido na troca de processos
Longo processos interativos vo se tornar tediosos
Mnimo
5 ms
baixa prioridade
alta prioridade
menos interativo
mais interativo
Default
100 ms
Mximo
800 ms
Processos no precisam gastar todo seu Timeslice em uma rodada somente. Pode rodar em pedaos separados.
Ao fim do Timeslice o processo considerado expirado e s poder rodar aps todos os Timeslices
dos outros processos terem terminado. Ento o escalonador far uma nova atribuio de Timeslices.
Por pior que seja a prioridade do processo, o menor valor de Timeslice ser
MIN_TIMESLICE = 5ms
O(1) scheduler
preemptive kernel
latency improvements
redesigned block layer
improved VM subsystem
improved threading support
new sound layer
2. Escalonador O(1)
Escalonador O(1) Decidir qual processo vai rodar em
tempo constante, independente do nmero de processos.
Antigamente O(N):
Lista nica de processos N:
Para cada processo N runnable{
Acha a dignidade deste processo;
Se (este o processo mais digno ainda) {
Lembra isto;
}
}
Roda o processo mais digno;
Mesma prioridade -> Round Robin
12
13
14
15
16
*
*
*
*
*
v.2.4
v.2.6
3. Runqueue
Estrutura bsica do Escalonador a
runqueue
uma lista de processos runnable em um
dado processador
Adicionalmente contm informao de
escalonamento por processador
3.3. Parnteses
Escalabilidade SMP
Em mquinas uniprocessadas o escalonador O(1)
de Ingor Molnat muito bom, porm como
resolver os problemas inerentes a escalonamento
em SMP/NUMA ?
Escalonamento Multiqueue
SpinLock
Balanceamento de Carga
3.4. Parnteses
SMP, MPP, NUMA
Symmetric Multi-Processor
Non-Uniform Memory Access
3.5. Parnteses
Problemas
Deadlock
Condies necessrias e suficientes para ocorrer:
Formas de evitar:
Prevention - Prevenir
Avoidance - Evitar
Detection - Detetar
Starvation
3.6. Soluo
Multiqueue Scheduler
3.8. Lock
v.2.4
v.2.6
4. Vetores de Prioridade
Cada runqueue possui dois vetores de prioridade:
Vetor de Prioridade Ativo
Vetor de Prioridade Expirado
So estes vetores que permitem que a complexidade do
algoritmo seja O(1).
Bonus/penalty
-5
Default = 10 ms
+5
5. Sleeping e Wakeup
6. Balanceamento de Carga
load_balance() no Escalonador. Dois mtodos de chamada:
Quando a runqueue est vazia
Pelo timer
A cada 1ms quando o sistema est parado
A cada 200ms quando no
Em sistema uniprocessados no compilado.
7. Chaveamento de Contexto
Manipulado pelo context_switch. Ocorre sempre que um novo
processo chamado para run.
Executa dois trabalhos:
Chama switch_mm() troca o mapeamento de memria virtual
do processo antigo para o novo
Chama switch_to() troca o estado do processador do
processo novo para o antigo, envolvendo atualizao de pilhas
e registradores
Utiliza uma flag need_resched para que o kernel chame o
escalonador pis existe um processo novo para substituir o antigo
Duas formas para ativar a flag
Quando o timeslice de um processo expira o scheduler_tick()
ativa a flag
Quando um processo de maior prioridade acorda o
try_to_wake_up() ativa a flag
9. Discusso
A versao 2.6.17 mais rpida em SMP (Symmetric MultiProcessor), porm em mquinas uniprocessadas rpidas
(2GHz) esta diferena no perceptvel.
9.1. Discusso
Comparao entre Linux 2.6.4 e 2.4.25
Test System and Benchmarks
CPU
Motherboard
Chipset
Memory
Storage
OS
picColor Image
software compiling (MySQL source code compiled with make -j 4)
mp3 encoding (BladeEnc)
Apache Static HTML
Apache PHP/MySQL
MySQL Super Smack(SELECT and UPDATE)
dbench v. 2.0 (file server performance)
9.2. Discusso
9.3. Discusso
File Server
11. Referncias
Love, R., Linux Kernel Development 2nd edition, Novell Press, June
2005.
Bovet, D. P., Cesati, M. Understanding The Linux Kernel 1st edition,
OReilly, October 2000.
Aas, J., Understanding the Linux kernel 2.6.8.1 CPU Scheduler
Silicon Graphics Inc., February 2005.
Cross Reference Linux Linux/kernel/sched.c http://lxr.linux.no/source/kernel/sched.c
Love, R., Introducing the 2.6 kernel Linux Journal, may 2003
Heursch, A.C., Grambow, D., Roedel, D., Rzehak, H., Time-critical
tasks in Linux 2.6 Concepts to increase the preemptability of the Linux
kernel Linux Automation Konferenz 2004
Ge, l. Kernel Comparison: Web Serving on 2.4 and 2.6 Linux
Technology Center IBM February 2004
prevenir (prevention)
evitar (avoidance)
e detectar (detecion) deadlocks.