Classificação da Informação

De acordo com a descrição do item 5.2 da norma ISO/IEC 17799:2005, o objetivo da Classificação da Informação é assegurar que os ativos da Informação recebam um nível adequado de proteção.

Home Blogs Bruno Guerreiro Por que Recompilar o Kernel Linux?
Por que Recompilar o Kernel Linux? PDF Imprimir E-mail
Escrito por Bruno Guerreiro Diniz   
Dom, 10 de Maio de 2009 18:54

Apesar de ser um dos pontos fundamentais dos sistemas que utilizam o Kernel Linux, a prática de recompilação do Kernel não é convencional para a grande maioria dos Administradores de Redes, Administradores de Sistemas ou mesmo de Administradores de Segurança. Neste artigo vou tentar mostrar a importância da recompilação do Kernel para a melhora na performance dos Sistemas Operacionais GNU/Linux.

Índice do Artigo

Histórico

Performance

Device Mapper

Fluxo de Dados

Conclusão

 

Histórico

O Kernel Linux foi criado pelo Finlandês Linus Torvalds baseado no projeto "Minix" de Andrew S. Tanenbaum, com diferença do tipo de arquitetura utilizada para o Kernel. A arquitetura monolítica utilizada por Linus para seu projeto (Linux) tem uma serie de vantagens e desvantagens em relação ao Kernel do tipo Micro-Kernel, utilizado no Minix. Dentre eles vou citar apenas as que considero principais:

  • Ponto Positivo:

    • Kernel Modular: Os drivers podem ser carregados e descarregados para o Kernel durante o funcionamento normal do sistema. Isso quer dizer que é possível utilizar apenas os drivers necessários para a operação do sistema, reservando memória para processos do sistema e do usuário.

  • Ponto Negativo:

    • Kernel Space: Os drivers (módulos) são executados no espaço do Kernel, apesar de isso permitir uma comunicação mais rápida entre Kernel e modulo, pode ser considerado perigoso em termos de segurança, pois se um driver malicioso for carregado ele terá acesso direto ao Kernel do sistema.

Kernel MonolíticoKernel Monolítico

Micro-KernelMicro-Kernel

Fonte: http://localdomain.wordpress.com/2007/07/22/micro-kernel-ou-kernel-monolitico

Performance

Não deixando de lado a segurança, um dos pontos cruciais em sistemas de missão crítica é a performance. A aceleração do processamento dos dados é buscada de muitas formas: clusterização, balanceamento de carga, entre outros. Porém, algumas vezes convêm voltar a pai do Kernel linux (Minix) para buscar uma solução rápida e barata para um incremento na performance do sistema.

Processo do usuário solicitando gravação em disco.
KernelModular_Processo_de_Gravacao_em_Disco
KernelMonolitico_Processo_de_Gravacao_em_Disco
O fluxo acima demonstra um processo do usuário solicitando a gravação de uma informação em disco. O sistema simulado em questão não possui qualquer tipo adicional de artifícios como: Criptografia de Disco  (Linux Unified Key Setup - LUKS), Logical Volume Manager (LVM) ou Software RAID. Todos estes  artifícios utilizam um modulo adicional do Kernel chamado Device Mapper que é responsável por interfacear estes artifícios e o hardware real.

Device Mapper

A seguir alguns fluxos do mesmo tipo de solicitação utilizada adicionando-se as técnicas de Criptografia de Disco (LUKS), LVM e Software RAID.

Processo_de_Gravacao_em_Disco_usando_LUKS

KernelModular_Processo_de_Gravacao_em_Disco_usando_LVM

KernelModular_Processo_de_Gravacao_em_Disco_usando_Software-RAID

Voltar ao índice.

 

Fluxo de Dados

Mesmo estando os drivers no espaço do Kernel, suas funções tem que ser realizadas de forma independente. Isso faz com que o sistema tenha que processar individualmente as funções específicas de cada módulo. Dessa forma o sistema pode gerar uma carga excessiva de requisições e enfileiramento de mensagens ao processador.

Seguem abaixo dois modelos de fluxos de dados dentre os elementos de hardware do computador utilizando Kernel Linux.

KernelModular_Fluxo_de_Hardware

Fluxo de Dados

1 - Usuário clica no ícone da tela para salvar as informações.

2 - Informação do dispositivo de entrada é enviada ao processador.

3 - Processador envia a informação ao Kernel.

4 - Kernel comunica com o software, informando a função escolhida pelo usuário.

5 - Software retorna ao Kernel que deve gravar as informações em disco.

6 - Kernel processa a solicitação do software.

7 - Processador retorna ao Kernel que deve realizar funções presentes no módulo EXT3.

8 - Kernel solicita ao módulo EXT3.

9 - Kernel recebe retorno do módulo EXT3.

10 - Kernel processa a informação do módulo EXT3.

11 - Processador retorna ao Kernel que deve realizar funções presentes no módulo IDE (Interface de Acesso ao Disco).

12 - Kernel solicita ao módulo IDE.

13 - Kernel recebe retorno do módulo IDE.

14 - Kernel processa a informação do módulo IDE.

15 - Processador retorna ao Kernel que deve realizar funções presentes no módulo do disco físico.

16 - Kernel solicita ao módulo do disco físico.

17 - Kernel recebe retorno do módulo do disco físico.

18 - Kernel solicita ao processador a gravação da informação no disco físico.

19 - Processador realiza iteração com o disco físico para gravação dos dados.

20 - Processador recebe informação que a operação de escrita teve sucesso.

21 - Processador informa ao Kernel que operação de escrita teve sucesso.

22 - Kernel informa ao processo do usuário que operação de escrita teve sucesso.

23 - Processo do usuário solicita ao Kernel que informe ao usuário sobe o sucesso da operação.

24 - Kernel solicita ao processador que informe ao usuário.

25 - Processador envia informação ao dispositivo de saída (Ex.: Vídeo).

26 - Usuário recebe a informação através do dispositivo de saída.

KernelMonolitico_Fluxo_de_Hardware

Fluxo de Dados

1 - Usuário clica no ícone da tela para salvar as informações.

2 - Informação do dispositivo de entrada é enviada ao processador.

3 - Processador envia a informação ao Kernel.

4 - Kernel comunica com o software, informando a função escolhida pelo usuário.

5 - Software retorna ao Kernel que deve gravar as informações em disco.

6 - Kernel solicita ao processador a gravação da informação no disco físico.

7 - Processador realiza iteração com o disco físico para gravação dos dados.

8 - Processador recebe informação que a operação de escrita teve sucesso.

9 - Processador informa ao Kernel que operação de escrita teve sucesso.

10 - Kernel informa ao processo do usuário que operação de escrita teve sucesso.

11 - Processo do usuário solicita ao Kernel que informe ao usuário sobe o sucesso da operação.

12 - Kernel solicita ao processador que informe ao usuário.

13 - Processador envia informação ao dispositivo de saída (Ex.: Vídeo).

14 - Usuário recebe a informação através do dispositivo de saída.

 

Estes fluxos de dados foram simulados em um sistema sem qualquer tipo de driver auxiliar como LUKS, LVM ou RAID. Imagine agora o fluxo dos dados em um sistema composto da seguinte forma:

HardCore

 

E ai, conseguiu imaginar?

Voltar ao índice.

 

Conclusão

A recompilação do Kernel Linux é o ponto de partida para qualquer operador/administrador que necessite um ganho de performance em seu sistema operacional. Essa técnica aliada a componentes externos como clusteres e balanceadores de carga podem ajudar ainda mais nesta árdua tarefa de dar um tunning em seus sistemas.

Leia também:
Comentários
Adicionar novo Busca RSS
+/-
Escrever um comentário
Nome:
E-mail:
 
Website:
Título:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Por favor coloque o código anti-spam que você lê na imagem.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Complience

Banner
Banner