Reparação do kernel

O servidor LTSP é responsável pelo processamento e reserva de memória física para cada processo requisitado pelos terminais. Foi preciso então otimizar ao máximo a configuração do kernel linux do servidor, de forma que suportasse somente o hardware necessário, sem desperdiçar recursos com suporte a dispositivos inexistentes. O kernel deve suportar também os dispositivos adicionais que estão presentes nos Infocentros, como uma impressora USB e gerenciamento de energia a partir de um nobreak, utilizando recursos do ACPI.

Foram realizados testes de performance com as versões do kernel linux 2.6.8 e com a versão 2.4.28. Depois da otimização das configurações de ambas as versões, a 2.4.28 mostrou-se compatível com todas os dispositivos necessários e uma leve vantagem na performance de execução dos programas. Não houve um teste de fato confiável nesse sentido, e a vantagem na performance estaria dentro de uma faixa de erro experimental. Porém, antes de se realizar testes exaustivos, foi decidido pela utilização do kernel 2.4.28, devido a um patch disponível para a alteração do seu sistema de escalonamento, que se mostrou de fato um grande benefício na utilização do LTSP.

O patch utilizado foi o fairsched, que significa "escalonamento justo". A situação em que diversos terminais processam seus programas num único servidor pode causar transtornos frequentes para seus usuários. Um exemplo clássico é quando um dos terminais está ocupando grande parte do poder de processamento do servidor, num momento em que outros terminais necessitam realizar tarefas simples. Estes últimos sofrem um atraso consequente da política de escalonamento do kernel.

O patch fairsched implementa um escalonamento justo hierárquico de CPU para o Linux. Resumidamente este escalonamento aloca tempo de CPU para os processos a partir de "pesos" pré-determinados, onde somente uma parcela da unidade de processamento é reservada para cada usuário. Os testes executados com o fairsched foram bastante satisfatórios, essencialmente o teste simples em que um usuário executa um loop infinito de criação de processos através da syscall fork() enquanto outros utilizam terminais do mesmo servidor LTSP. Nos testes com o kernel sem o patch, o sistema travava imediatamente, interrompendo as atividades de todos os usuários nos terminais. Com o fairsched, somente o ambiente do usuário que executou o loop travava, mostrando que de fato apenas uma parcela da CPU estava reservada para este usuário, uma característica bastante adequada para o cenário dos Infocentros.

O kernel foi compilado utilizando o sistema para administração de kernel do Debian, que facilitou bastante a administração posteriores atualizações.

Topic revision: r1 - 16 Mar 2006 - 22:19:38 - VicenteAguiar
 
Copyleft © 2005, pel@s colaborador@s deste Sítio Wiki. Todo o conteúdo desta página pode ser utilizado segundo os termos da Creative Commons License: Atribuição-UsoNãoComercial-PermanênciaDaLicença. Salvo disposição em contrário indicada de forma explícita no tópico correspondente.