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 Otimização de Sistemas Operacionais Linux
Otimização de Sistemas Operacionais Linux PDF Imprimir E-mail
Escrito por Bruno Guerreiro Diniz   
Ter, 30 de Junho de 2009 18:48

Este artigo visa demonstrar a possibilidade de otimização de sistemas operacionais, visando mitigar riscos de quebra de disponibilidade dos serviços que utilizam este sistema operacional.
Foram utilizadas as ferramentas a seguir para aferição dos dados deste teste:

 

METODOLOGIA

A seguir são descritas todas as etapas da metodologia utilizada nesta análise de otimização de sistemas operacionais.

Metodologia da Análise de Otimização

Identificação

Identificação de quais processos, procedimentos e ativos de tecnologia farão parte do escopo da análise.

Mapeamento

Mapeamento dos processos, serviços, protocolos, sistemas e suas interdependências, permitindo enumerar quais itens encontrados possuem possibilidades de otimização.

Enumeração

Enumeração de possibilidades a serem exploradas na análise e classificação qualitativa das possibilidades de otimização encontradas.

Documentação

Tratamento dos dados obtidos e geração da recomendação.

 

IDENTIFICAÇÃO

Os seguintes componentes da infra-estrutura do sistema foram analisados quanto à possibilidade de melhoria de desempenho.
O Foi definido o escopo deste projeto, conforme especificado abaixo.

Escopo desta análise

Método

Ativos

Benchmarking

(Aferição)

Debian GNU/Linux 5.0 (64bits)

Distribuição Linux utilizado nos testes.

Linux 2.6.26

Kernel Linux utilizado nos testes.

Third Extended File System (ext3)

Sistemas de arquivo utilizados nos testes.

ReiserFS

 

Enumeração

Foram utilizados os seguintes componentes para realização desta recomendação.

Processador

Intel(R) Xeon(R) CPU Quad-Core (64bits)

Discos

2x SAS 72.7 GB SCSI 10k RPM

RAID

Discos em RAID1 perfazendo um total de 72.7 GB uteis

BIOS

64Bits

Ativado

Virtualização

Ativado

 

Debian GNU/Linux 5.0 (64bits)

Distribuição

Livre (Download direto no site oficial da distribuição)

Licença de Uso

Livre

Kernel Default

Linux 2.6.26

 

Kernel

Família do Processador

Core 2 Duo / New Xeon

Subtipo de Arquitetura

ScaleMP (vSMP)

Modelo de Kernel

Kernel Integrado (Built In). Drivers adicionais modulares.

Freqüência do Timer

250 Hz

Opções do Processador

PAT Ativo

Virtualização Ativa

 

Sistemas de Arquivos

Ext3

Third Extended File System (ext3)

ReiserFS

Reiser File System

 

RECOMENDAÇÕES

Hardware

  • Dar preferência a utilização de dois ou mais processadores ao invés de um único processador de núcleos múltiplos. Mesmo com núcleos múltiplos, alguns componentes internos do processador são compartilhados entre os diversos núcleos, podendo causar fila de processamento nestes recursos compartilhados.
  • Dar preferência a estrutura de discos em RAID50 (5+0). Esta forma de RAID aproveita o melhor desempenho do RAID0 com a segurança física do RAID5.
RAID50
Exemplo de estrutura de discos em RAID50.

 

  • Dar preferências a processadores 64bits, pois podem endereçar e processar mais dados por segundo que processadores tradicionais de 32bits. A utilização de processadores 64bits deve ser complementada com a ativação deste recurso nas configurações de BIOS para este recurso funcione de forma nativa.
  • Sempre que for necessário utilizar técnicas/métodos de virtualização, como VMWare, XEN, Qemu ou mesmo Java Virtual Machine, é recomendável habilitar a opção de virtualização da BIOS para ativar as estruturas de virtualização do processador, criando assim um processo de virtualização com melhor performance.

 

Sistema Operacional

As recomendações abaixo são compatíveis com qualquer distribuição Linux existente.

  • /etc/nsswitch.conf: O arquivo Network Services Switch determina a ordem das buscas realizadas quando uma certa informação é requisitada. Este arquivo deve estar bem configurado para não gerar um delay para recuperação de dados.
  • /proc/sys/vm/bdflush: O bdflush está intimamente relacionado com o funcionamento do subsistema de memória virtual do Kernel Linux e tem pouca influência sobre a utilização do disco. Este arquivo controla o funcionamento do daemon bdflush do Kernel. Ao alterar alguns valores do padrão, o sistema demonstra-se mais responsivo; por exemplo, espera um pouco mais para gravar para o disco e, assim, evita alguns gargalos de acesso ao disco.
  • /proc/sys/vm/buffermem: Permite definir utilizar um mínimo de X% da memória para cache de buffer; Limpar apenas quando a porcentagem da memória utilizada pelo buffer chegar a Y%; Permitir que o tamanho da memória do buffer cheque a Z% do tamanho total de memória.
  • /proc/sys/fs/file-max: Permite definir o número máximo de arquivos que o Kernel do Linux vai gerenciar. Recomenda-se definir o número de arquivos abertos, aumentando o valor para algo como 256 para cada 4M de memória RAM temos.
  • /proc/sys/net/ipv4/tcp_fin_timeout: Esta configuração permite determinar o tempo que deve decorrer antes do TCP/IP liberar uma conexão fechada e reutilizar seus recursos. Durante este estado TIME_WAIT, reabrir a conexão com o cliente custa menos do que estabelecer uma nova ligação. Ao reduzir o valor desta entrada, o TCP/IP pode liberar conexões fechadas mais rapidamente, obtendo mais recursos disponíveis para novas ligações.
  • /proc/sys/net/ipv4/tcp_keepalive_time: Esta configuração permite determinar o número de segundos que uma conexão precisa estar ociosa antes de o TCP enviar checagens de keep-alive.
  • /proc/sys/net/ipv4/tcp_window_scaling: Esta configuração permite ativar o TCP window scaling previsto pela  RFC1323.
  • /proc/sys/net/ipv4/tcp_sack: Esta configuração permite ativar o TCP Selective Acknowledgements previsto pela RFC2018.
  • /proc/sys/net/ipv4/tcp_timestamps: Esta configuração permite desativar o TCP timestamps, previsto pela RFC1323.

 

Kernel

  • Família do Processador: As distribuições Linux vêm com o Kernel compatível a maior quantidade de arquiteturas de processador disponível. Por exemplo: Para arquitetura de 32bits (i386) é comum que o Kernel Linux embutido nas distribuições seja compatível com qualquer processador acima de 386. Isso faz com que o Kernel utilize funções compatíveis a todos os processadores em questão, sem fazer uso de funções exclusivas de novos processadores, que podem gerar um considerável ganho de desempenho. Recomenda-se que o Kernel Linux seja re-compilado para utilizar a família do processador utilizado, visando utilizar todas as funções disponíveis pelo processador.
  • Subtipo de Arquitetura: Oferece suporte às extensões de 64bits da arquitetura EMT64 de processadores Intel. vSMP (multiprocessamento virtual simétrico) é um método de SMP (multiprocessamento simétrico), no qual dois ou mais processadores virtuais são mapeados dentro de um único núcleo virtual. Isto torna possível atribuir múltiplos processadores virtuais a uma máquina virtual ou qualquer host tendo pelo menos dois processadores lógicos.
  • Modelo de Kernel: O Kernel Linux poder ser utilizado de duas formas básicas:
  • Kernel Modular: O Núcleo será composto do mínimo necessário para o funcionamento do sistema. Todos os demais drivers de dispositivos e/ou, sistemas serão carregados como módulos. Este formato de Kernel provê uma flexibilidade para sistemas com a necessidade de inclusão temporária de dispositivos extras.
  • Kernel Integrado: O Núcleo é composto por todos os drivers necessários para o funcionamento do sistema, incluindo rede, sistemas de arquivos, controladores de discos, etc. Este formato provê um considerável ganho de desempenho, uma vez que todas as funções necessárias para controlar o hardware já estão embutidas no núcleo do sistema, sem a necessidade de consultar drivers externos.
  • Modelo híbrido: É recomendável que o Kernel seja um misto de ambas as formas, cujas principais funções de hardware estejam embutidas no Kernel e drivers adicionais, possivelmente necessários em alguns momentos de manutenção, por exemplo, sejam criados em forma de módulos.
  • Freqüência do Timer: É a freqüência com que o temporizador de hardware do sistema é programado para interromper o Kernel. A freqüência do temporizador afeta diretamente uma série de coisas, e em particular, coloca um limite superior sobre a resolução dos temporizadores utilizados com o Kernel. Se 1000HZ os temporizadores terão uma melhor resolução de 1 ms no melhor caso. Se, em vez disso, é de 100 Hz a resolução é de 10ms no melhor caso.
  • Opções do Processador: Algumas funcionalidades de processadores novos não vêm ativadas no Kernel Linux, por exemplo, a PAT (Page allocation tables). Esta funcionalidade precisa ser ativada para tirar proveito desta funcionalidade do processador.

 

Sistemas de Arquivos

Opções Genéricas

  • noatime: O Linux registra informações sobre quando os arquivos foram criados e modificados pela última vez, bem como quando ele foi acessado. Existe um custo associado com a gravação do último acesso. A grande maioria dos sistemas de arquivos possui um atributo que permite ao administrador parametrizá-lo de tal forma, que o último acesso a um arquivo não seja gravado. Isto pode levar a melhorias significativas no desempenho ao acessar arquivos com freqüência.
  • nodiratime: Mesmo de “noatime”, porém utilizado para acesso à diretórios.
  • data=writeback: A ordenação dos dados não é preservada, os dados podem ser escritos para o sistema de arquivos, antes ou após a gravação no metadados. Este modelo é considerado como sendo o mais alto throughput. Ele garante a integridade interna do sistema de arquivos, no entanto, pode acontecer que os dados antigos apareçam em alguns arquivos após a recuperação de um acidente.

 

Ext3

Sistema de arquivo padrão na grande maioria das distribuições Linux atuais. Provê maior segurança contra perda de dados em caso de falhas devido à técnica de journaling (metadados). Excelente escolha para sistemas mistos, com diversos tipos de aplicações e arquivos de tamanhos maiores. Todas as opções gerais anteriores podem ser utilizadas para otimização deste sistema de arquivos.

 

ReiserFS

Sistema de arquivo disponível na maioria das distribuições Linux. Também implementa journaling para prevenção da perda de dados. Este sistema de arquivo é uma escolha excelente para sistemas com grande quantidade de arquivos de tamanhos pequenos e médios, como por exemplo, servidores: Web; Proxys; E-mails; Notícias. Todas as opções gerais anteriores podem ser utilizadas para otimização deste sistema de arquivos. Existem ainda opções específicas para este sistema de arquivo conforme a seguir:

  • notail: Desabilita o agrupamento de arquivos, o que causa um certo desperdício de espaço em disco, mas melhora o desempenho. Na versão 4 deste sistema de arquivos o agrupamento de arquivos é um recurso embutido, justamente para melhorar o aproveitamento de espaço em disco e melhorar o desempenho (já que os arquivos ficam fisicamente mais próximos). Na versão 3.x, acaba reduzindo o desempenho de leitura em até 5%.

 

RESULTADOS

Alguns testes foram feitos para comprovar o ganho de algumas das recomendações anteriormente descritas.

Kernel

Instruções por Segundo
O ganho devido processo de re-compilação do Kernel foi aferido utilizando dois testes que calculam a taxa de Instruções por Segundo no processador.

 

7Zip
MIPS: Milhões de Instruções por Segundo

 

SCIMARK
Mflops: Milhões de Operações de Pontos Flutuantes por Segundo.

 

Aplicativos

Foram realizados testes com aplicativos reais para mensurar o ganho de desempenho.


•    SQLIte: Tempo necessário para realizar 12.500 inserções em uma base de dados indexada utilizando o aplicativo SQLite.

SQLITE

 

Tempo necessário para completar a tarefa.


•    Super PI: Tempo necessário para calcular o PI com um número de Um Milhão de Digitos.

Super_PI

Tempo necessário para completar a tarefa.

 

Gerência de I/O

O ganho devido ao processo de configuração do sistema de arquivos foi aferido utilizando dois testes que calculam respectivamente a taxa de throughput total e a quantidade de operações com arquivos por segundo.

 

Representa a comparação de cada item especificado.

 

Representa a comparação de cada item especificado.

 

Conclusão

Perante os testes realizados, foi alcançado um ganho de 5,75% nos testes referente à re-compilação do Kernel. De acordo com os testes de parametrização do sistema de arquivos, foi alcançado um expressivo ganho de 4.533,09%.

 

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