Вы находитесь на странице: 1из 8

INSTITUTO LUTERANO DE ENSINO SUPERIOR DE ITUMBIARA GOIS CURSO DE SISTEMAS DE INFORMAO

ANDRIELLE AZEVEDO DE PAULA

ESCALONADOR CFS (COMPLETELY FAIR SCHEDULER)

Itumbiara, outubro, 2010

ANDRIELLE AZEVEDO DE PAULA

ESCALONADOR CFS (COMPLETELY FAIR SCHEDULER)

Trabalho apresentado ao curso de Sistemas de Informao do Instituto Luterano de Ensino Superior de Itumbiara, GO como avaliao parcial de Sistemas Operacionais sob orientao do Professor Daniel Carrara.

Itumbiara, outubro, 2010.

SUMRIO Nenhuma entrada de sumrio foi encontrada.

INTRODUO O escalonador do Sistema Operacional Linux kernel 2.6, tornado pblico no final de 2003, foi chamado de O(1), pois mantm o tempo de seleo de um processo para executar constante, independentemente do nmero de processos. Este escalonador baseado em tempo compartilhado, onde o tempo de processador dividido em fatias de tempo (quantum) que so alocadas aos processos. A partir da verso 2.6.23 do kernel do Linux, o escalonador O(1) foi substitudo pelo Completely Fair Scheduler (CFS). De acordo com Ingo Molnar, o criador do CFS, 80% do projeto do CFS pode ser resumido em uma nica frase: CFS basicamente modela em um hardware real um processador ideal e precisamente multi-tarefa. Um processador ideal executa vrios processos em paralelo, em que cada processo ocupa exatamente a mesma frao de energia do processador, ou seja, se apenas um processo est sendo executado, ele ocupa 100% do processador, mas se trs processos esto sendo executados, cada um ocupa 33,3% do processador. Mas na prtica, apenas uma tarefa pode ser executada de cada vez, o que torna essa situao injusta para os processos que devem ficar esperando. O CFS torna o escalonamento justo, quando um processo espera pela CPU, calculado o tempo que ele ocuparia em um processador ideal (tempo calculado igual ao tempo de espera dividido pelo nmero de processos esperando pelo processador, em nanossegundos), este o tempo de execuo destinado ao processo. Assim, o kernel do Linux 2.6.x fornecido com um ncleo de planejador modular e um CFS, que implementado como um mdulo de planejamento. Neste trabalho, familiarizaremos com os recursos principais do CFS. DESENVOLVIMENTO 1 CFS (COMPLETELY FAIR SCHEDULER) O Completely Fair Scheduler tenta executar a tarefa com a necessidade mais grave para tempo de CPU. Isso ajuda a assegurar que todos os processos obtenham seu compartilhamento justo de CPU. O CFS no considera uma tarefa como suspensa se ela for suspensa por um tempo muito curto porque uma suspenso curta pode ter direito a algum tempo de bonificao, mas nunca mais do que teria se no tivesse sido suspensa.

Considere um exemplo com dois usurios, A e B, que esto executando tarefas em uma mquina. O usurio A tem apenas duas tarefas em execuo, enquanto o usurio B tem 48 tarefas em execuo. O planejamento de grupo possibilita ao CFS ser justo para os usurios A e B, ao invs de ser justo para todas as 50 tarefas em execuo no sistema. Ambos os usurios obtm um compartilhamento 50-50. O B utilizaria seus 50% de compartilhamento para executar 48 tarefas e no poderia invadir os 50% de compartilhamento do A. O CFS no controla tempo inativo e no utiliza heurstica para identificar tarefas interativas; ele apenas assegura que cada processo obtenha um compartilhamento justo de CPU dentro de uma quantidade de tempo configurada dado o nmero de processos executveis na CPU. 2 ESTRUTURA DE DADOS DE CFS O CFS utiliza uma rvore classificada por tempo, vermelha e preta, para cada CPU. Uma rvore vermelha e preta um tipo de rvore de procura binria de equilbrio automtico, uma estrutura de dados utilizada para implementar matrizes associativas. Para cada processo em execuo, existe um n na rvore vermelha e preta. O processo na posio mais esquerda da rvore vermelha e preta aquele a ser planejado em seguida. A rvore vermelha e preta complexa, mas tem um bom tempo de execuo do pior caso para suas operaes e eficiente na prtica: ela pode procurar, inserir e excluir no tempo O(log n), onde n o nmero de elementos na rvore. Os ns folhas no so relevantes e no contm dado. Para salvar a memria, s vezes um nico n sentinela executa a funo de todos os ns folhas. Todas as referncias de ns internos at ns folhas como alternativa apontam para o n sentinela. A abordagem em rvore funciona bem por certas razes: - A rvore vermelha e preta sempre balanceada. - Como a rvore vermelha e preta uma rvore binria, as complexidades de tempo de operaes de consulta so logartmicas. No entanto, a consulta no-mais--esquerda dificilmente feita e o ponteiro do n mais esquerda sempre armazenado em cache. - A rvore vermelha e preta O(log n) em tempo para a maioria das operaes, enquanto que o planejador anterior empregou O(1), utilizando uma matriz de prioridade com um nmero fixo de prioridades. O comportamento O(log n) mais lento de forma mensurvel, mas

somente de forma marginal para contagens de tarefas muito grandes. Essa foi uma das primeiras coisas que Molnar testou logo que tentou a abordagem em rvore. - Uma rvore vermelha e preta pode ser implementada com armazenamento interno isto , nenhuma alocao externa necessria para manter a estrutura de dados. 3 COMO O CFS FUNCIONA O planejador do CFS utiliza uma poltica de conciliao que garante justia. Assim que uma tarefa entra na fila de execuo, o horrio atual registrado e, enquanto o processo aguarda a CPU, seu valor wait_runtime incrementado por um valor dependendo do nmero de processos atualmente na fila de execuo. Os valores de prioridade de tarefas diferentes tambm so considerados ao executar esses clculos. Quando essa tarefa planejada para a CPU, seu valor wait_runtime inicia decrementando e conforme esse valor cai par tal nvel a que outras tarefas se tornam a nova tarefa mais esquerda da rvore vermelha e preta e uma torna-se preferida. Desse modo, o CFS tenta a situao ideal na qual wait_runtime zero. O CFS mantm o tempo de execuo de uma tarefa relativa a um clock amplo de fila de execuo chamado fair_clock (cfs_rq->fair_clock), que executado em uma frao de tempo real de modo que executado no ritmo ideal para uma nica tarefa. 4 DEPURAO DO NOVO ESCALONADOR O novo escalonador fornecido com uma interface de depurao muito boa e tambm fornece informaes de estatsticas de tempo de execuo, implementadas em kernel/sched_debug.c e kernel/sched_stats.h, respectivamente. Para fornecer estatsticas de tempo de execuo para o escalonador e informaes sobre depurao, alguns arquivos foram includos no sistemas de arquivos proc: - /proc/sched_debug: exibe os valores atuais de sintonizveis do escalonador de tempo de execuo, as estatsticas do CFS e informaes sobre fila de execuo em todas as CPUs disponveis. A funo sched_debug_show () chamada e definida em sched_debug.c quando esse arquivo proc lido. - /proc/schedstat: exibe estatsticas especficas da fila de execuo e tambm estatsticas especficas do domnio para sistemas SMP para todas as CPUs conectadas. A funo

show_schedstat () definida em kernel/sched_stats.h manipula operaes de leitura na entrada proc. - /proc/[PID]/sched: exibe informaes sobre a entidade de planejamento relacionada. A funo proc_sched_show_task () definida em kernel/sched_debug.c chamada quando esse arquivo lido. CONCLUSO O novssimo escalonador do kernel, CFS, debutou no Linux 2.6.23, e j ganhou muitas melhorias, que devem propiciar a distribuio de tarefas pelos processadores de forma ainda mais precisa e eficiente. O CFS estende recursos de planejamento apresentando classes de planejamento e tambm simplifica a depurao melhorando estatsticas de planejamento. O CFS est obtendo boas revises quando testado para aplicativos intensivos de encadeamento incluindo, at, jogos em 3D. Porm, alm de seu desenvolvedor Ingo Molnar ter dito acreditar que o escalonador no precisaria de ajustes desde as primeiras verses de correo do kernel 2.6.23, os muitos patches enviados por vrios desenvolvedores mostraram que ainda havia aspectos a melhorar, inclusive em desempenho, que pouco alterado, devido a quantidade de ncleos disponveis para a execuo em paralelo.

REFERNCIAS BIBLIOGRFICAS SANTOS, Ricardo Luis et al. Paralelizao do problema inverso aplicado ao problema de absoro da gua em processadores multi-core. Departamento de Fsica, Estatstica e Matemtica, p. 217-220. KUMAR, Avinesh. Multiprocessamento com o Completely Fair Scheduler. IBM Japan. Disponvel em: <http://www.ibm.com/developerworks/br/library/l-cfs/>. Acesso em: 05 nov.2010. HESS, Pablo. As novidades do kernel 2.6.24. Linux Magazine, So Paulo, v. 59, p. 15, mar.2009.