UCB
Mestrado em Informática
Gestão de Tecnologias e Sistemas de Informação
ADMINISTRAÇÃO DE DESEMPENHO DE AMBIENTES
DE TECNOLOGIA DA INFORMAÇÃO EM
ORGANIZAÇÕES DO DISTRITO FEDERAL
Vilson Carlos Hartmann
Orientador: Prof. Dr. Sérgio Moraes
VILSON CARLOS HARTMANN
ADMINISTRAÇÃO DE DESEMPENHO DE AMBIENTES
DE TECNOLOGIA DA INFORMAÇÃO EM
ORGANIZAÇÕES DO DISTRITO FEDERAL
Dissertação apresentada ao Programa de Pós -Graduação “Stricto-Sensu” em Gestão de Tecnologias e Sistemas de Informação da Universidade Católica de Brasília, com o requisito para a obtenção do Título de Mestre em Informática.
Ao Professor Dr. Sérgio Moraes
AGRADECIMENTOS
Gostaria de manifestar minha gratidão a todas as pessoas e organizações que, direta ou
indiretamente, contribuíram e colaboraram para a realização deste trabalho, particularmente ao
meu amigo Walter Willik com o qual discuti vários assuntos técnicos relativos a desempenho e
cujos conhecimentos foram valiosos nas análises realizadas para a confecção do mesmo; ao
Professor Rogério Alvarenga pelas “dicas” sobre dissertações.
Um especial agradecimento, também, a todas as organizações participantes da pesquisa de
campo, principalmente, aos gerentes de Tecnologia de Informação que dispuseram seu tempo e
Resumo
A complexidade do gerenciamento dos ambientes distribuídos, formados por servidores de
bancos de dados, redes, Internet e outras tantas facilidades e ferramentas para usuários finais,
tornou mais difícil a tarefa de monitoramento e manutenção de níveis elevados de desempenho
em ambientes de tecnologia da informação.
Conhecer os componentes que impactam o desempenho nas arquiteturas de sistemas de
informação é fundamental para a adoção de uma política de administração de desempenho em
uma organização. Também é necessário identificar quais são as formas de ação comumente
utilizadas pelos gerentes de sistemas de informação para que essas tarefas sejam mais abrangentes
e eficazes.
O objetivo principal desta dissertação é verificar se as organizações possuidoras de
ambientes de tecnologia de informação no Distrito Federal fazem uso de políticas de
administração de desempenho; analisar os principais problemas encontrados para a adoção de
uma metodologia de administração de desempenho; e, finalmente, definir e propor um modelo de
gerenciamento de desempenho.
Abstract
The complexity of the management in distributed environments, formed for servers of net,
data bases, internet and other tools for final users, became more difficult the task of monitoring
and maintenance of performance levels in environments of information technology.
Knowing the components that influence the performance in the architectures of
information systems is basic for the adoption of one politics of performance administration in an
organization. Also it is necessary to identify which are commonly the action forms used by the
information systems managers so that these tasks are more including and efficient.
The main objective of this dissertation is to verify if the possessing environment
organizations of information technology in the Distrito Federal make use of politics of
performance administration, to analyze the main problems found for the adoption of a
methodology of performance administration, and finally to define and to consider a model of
performance management.
Índice
Capítulo 1... 13
1 – Introdução. ... 13
1.1 – Motivação. ... 16
1.2 - Objetivos ... 18
1.2.1 – Objetivos Gerais. ... 18
1.2.2 – Objetivos Específicos. ... 19
1.3 - Trabalhos Relacionados ... 20
1.4 – Contribuições. ... 21
1.5 - Organização do Trabalho ... 21
Capítulo 2... 24
O hardware como fator impactante de desempenho. ... 24
2.1 – Hardware... 25
2.1.1 – Estrutura interna de um computador... 26
2.1.1.1 – Processador. ... 26
2.1.1.1.1 – Tipos de Processadores. ... 27
2.1.1.1.2 – O clock. ... 28
2.1.1.1.2.1 – Tipos de clock. ... 29
2.1.1.2 – Memórias. ... 30
2.1.1.2.1 – Memória Principal. ... 30
2.1.1.2.1.1 – Memória Cache. ... 32
2.1.1.2.2 – Memória Secundária. ... 34
2.1.1.3 – Dispositivos de entrada e saída. ... 34
2.1.1.3.1 – Discos. ... 35
2.1.1.3.1.1 – Tempo de busca. ... 36
2.1.1.3.1.2 – Tempo de latência. ... 37
2.1.1.3.1.3 – Tempo de acesso. ... 37
2.1.1.3.1.4 – Head Switch Time. ... 38
2.1.1.3.1.5 – Taxa de transferência interna. ... 38
2.1.1.3.1.6 – Cache de disco. ... 39
2.1.1.3.1.7 – Densidade. ... 39
2.1.1.3.1.8 – Velocidade da interface. ... 40
2.1.1.3.1.9 - Fragmentação ... 40
2.1.1.4 – Barramento. ... 41
2.1.1.4.1 – Tipos de Barramentos. ... 42
Capítulo 3... 44
O software como fator impactante de desempenho. ... 44
3.1 – Sistemas Operacionais ... 44
3.1.1 – Alocação de CPU... 45
3.1.2 - O Subsistema de Memória. ... 46
3.1.2.1 - Paginação e Swapping.... 47
3.1.3 - O Subsistema de I/O. ... 49
3.2.1 – Desempenho de aplicativos afetado por algoritmos. ... 52
3.2.1.1 – Técnicas de otimização de algorítmos. ... 53
3.2.2 – Transações com banco de dados. ... 55
3.2.2.1 – Quando transações não são recomendadas. ... 55
3.2.2.2 – Concorrência. ... 57
3.2.2.3 – Transações distribuídas... 58
3.2.2.4 – Transações em massa... 60
3.2.2.5 – Tráfego de dados na rede. ... 61
3.2.2.6 – Tempo de conexão entre cliente e servidor. ... 63
3.2.2.7 – Medição de tempo de resposta. ... 65
Capítulo 4... 66
O Banco de Dados como fator impactante de desempenho. ... 66
4.1 - Tempo de Resposta do Banco de Dados. ... 67
4.1.1 - Componentes do Tempo de Resposta. ... 68
4.1.2 – Throughput. ... 69
4.1.3 – Disponibilidade... 69
4.2 – Monitoramento do desempenho do banco de dados. ... 70
4.3 - Fatores que afetam o desempenho do banco de dados... 73
4.3.1 - Desempenho afetado por recursos de hardware. ... 73
4.3.2 - Desempenho afetado por overhead.... 75
4.3.3 - Desempenho afetado pela estrutura... 77
4.3.4 – Localização de gargalos... 77
4.4 – Melhorias resultantes do controle central do DBA. ... 79
4.4.1 – Ajuste de índices. ... 82
4.4.2 – Parâmetros ajustáveis do banco de dados... 86
4.5 – O papel do otimizador de acesso do SGBD... 87
4.5.1 – Técnicas usadas pelos Otimizadores. ... 88
Capítulo 5... 90
A rede como fator impactante de desempenho. ... 90
5.1 – Desempenho da Rede. ... 91
5.1.1 – Disponibilidade... 94
5.1.2 – Largura de banda. ... 94
5.1.3 – Linha de Base. ... 94
5.1.4 – Congestionamento de rede. ... 95
5.1.5 – Latência... 95
5.1.6 - Disparo (Threshold). ... 96
5.1.7 – Utilização. ... 97
5.2 – Ferramentas de gerenciament o de redes. ... 97
5.2.1 – Gerenciadores de elemento. ... 98
5.2.2 – Plataformas de Gerência. ... 100
5.2.3 – Pontas de prova (Probes). ... 102
Gestão de Desempenho de recursos de ti. ... 108
6.1- Técnicas de Avaliação de Desempenho. ... 108
6.2 - Métricas de Desempenho. ... 112
6.2.1 - Métricas mais usadas... 113
6.3 - Monitoramento da Atividade do Sistema. ... 117
6.3.1 - Ferramentas de Monitoração. ... 118
6.3.1.1 - Monitores de software.... 120
6.3.1.2 - Monitores de hardware.... 121
6.3.1.3 - Monitores de Firmware.... 121
6.3.1.4 - Monitores Híbridos... 122
Capítulo 7... 123
Pesquisa sobre o uso de administração de desempenho no distrito federal... 123
7.1- Administração de Desempenho nas Empresas do distrito federal. ... 123
7.2 – A Metodologia da pesquisa. ... 124
7.3 – Escopo. ... 127
7.4 – Amostra. ... 127
7.4.1 – Coleta de dados... 128
7.5 – Análise dos dados. ... 130
7.5.1 – necessidade de Administração de Desempenho. ... 130
7.5.2 – Comportamento de Ações de Desempenho nas organizações... 131
7.5.3 – Técnicas e ferramentas de Administração de Desempenho adotadas nas organizações. ... 132
7.5.4 – Áreas com carência de desempenho nas organizações. ... 132
7.5.5– Empecilhos para adoção de Administração de Desempenho. ... 134
7.5.6 – Pesquisa de Satisfação do Usuário. ... 135
7.5.7 – Análise do cenário atual. ... 135
Capítulo 8... 138
Modelo de Administração de Desempenho. ... 138
8.1 – Fases do Modelo de Desempenho (MAD). ... 139
8.1.1 – Formação da Equipe. ... 140
8.1.2 – Capacitação. ... 141
8.1.3 – Definições. ... 142
8.1.4 – Implementação. ... 147
8.1.5 – Execução. ... 148
8.1.6 – Gerenciamento. ... 148
Capítulo 9... 150
Conclusão. ... 150
Recomendações para trabalhos futuros. ... 152
Referências... 153
Referências... 154
Lista de figuras
Figura 1 – Subsistema de Memórias...32
Figura 2 – Memória Principal e Memória Cachê...34
Figura 3 –Três possíveis saídas de um pedido de serviço...112
Figura 4 – Pedido e respostas instantâneos...114
Figura 5 –Pedido e resposta realísticos...114
Figura 6 – Capacidade do sistema...115
Figura 7 –Ciclo de dificuldades da Administração de Desempenho...136
Lista de tabelas
Tabela 1 – Critério para seleção de técnicas de avaliação...109 Tabela 2 – O que, onde e como medir...146 Tabela 3 – Comparativo de sistemas sem Administração de Desempenho com sistemas
CAPÍTULO 1
1 – INTRODUÇÃO.
Segundo Mike Loukides [LOUKIDES,1990], a maioria dos administradores de sistemas
não se importam muito com análises de desempenho de seu ambiente de Tecnologia de
Informação. Eles ainda pensam que um trabalho desse tipo consome muito tempo, além de não
haver muitos mecanismos disponíveis para ajustar o sistema. Essa visão não é totalmente
verdadeira. A maioria dos sistemas operacionais possui mecanismos que permitem ajustes na
maioria dos parâmetros que resultam em ganhos inacreditáveis. Apesar disso, as tarefas de
avaliações de desempenho e planejamento de capacidade não são muito utilizadas pelas
organizações. Alguns dos motivos passam pelas novas arquiteturas distribuídas que permitem
agregação de novos recursos que, por sua vez, estão ficando mais baratos no mercado. Estas
arquiteturas distribuídas, no entanto, tornam mais difícil a percepção de gargalos e mau
desempenho na funcionalidade dos sistemas de informação.
Falar sobre desempenho de um sistema é fácil, difícil é entendê-lo. Qualquer usuário de
sistemas de informação sabe quando um sistema computacional está lento, mas é muito difícil
conseguir saber a causa. Isso porque muitos diferentes fatores influenciam na resposta do sistema.
O uso de padrões, configuração de I/O, configuração de CPU, configuração de software, enfim,
tudo isso contribui para o ambiente do sistema. Alterações em qualquer uma dessas variáveis
podem tornar um sistema aparentemente lento ficar mais rápido ou um sistema aparentemente
Raj Jain [JAIN,1991] afirma que para analisar o desempenho de um sistema é necessário
entender o que isso significa, escolher as ferramentas necessárias para a monitoração do
desempenho e determinar quais componentes não estão bem ajustados. Cada avaliação requer um
conhecimento profundo do sistema e uma cuidadosa seleção da metodologia, da carga de trabalho
e das ferramentas.
A falta de uma análise de desempenho em um ambiente de Tecnologia de Informação
pode ter conseqüências que nem sempre são percebidas, como servidores e redes lentos, altas
taxas de erros em transferências de dados, balanceamento de carga inadequado e disponibilidade
de largura de banda limitada. Freqüentemente, as empresas correm atrás desses problemas de
forma reativa, comprando mais hardware, que podem resultar em capacidade excessiva ou
sub-utilização de equipamentos. A troca de equipamento pode aumentar o desempenho, mas a um
custo muito maior do que execução de uma análise de desempenho [GITOMER,1999].
A Administração de Desempenho deve permitir duas situações distintas de gerenciamento
para os administradores de Tecnologia da Informação [ALLEN,1994]:
q Gerenciamento de Capacidade;
q Planejamento da Capacidade.
Para Allen [ALLEN,1994], um dos importantes problemas dos gerentes de instalações de
processamento de dados é o planejamento de capacidade, quando se define os recursos
computacionais adequados para uma futura demanda de carga de trabalho, a um custo efetivo, ao
mesmo tempo que o desempenho esteja dentro de objetivos determinados de satisfação do
usuário. A terminologia gerenciamento de capacidade é utilizada para definir o problema de
capacidade está relacionado com o presente, enquanto que o planejamento de capacidade está
relacionado com o futuro. Planejamento de capacidade consiste em procurar mais recursos
computacionais, enquanto que gerenciamento de capacidade consiste em ajustar os padrões
usados, reajustando a configuração e alterando os parâmetros do sistema para maximizar o
desempenho. O processo de ajustes de parâmetros do sistema também é conhecido como ajuste de
desempenho (performance tuning).
Para o gerenciamento de capacidade deve-se utilizar a análise de desempenho que nos
fornece dados para otimizar o desempenho de um sistema e seus softwares. Ela coleta
informações das operações no sistema e dos recursos utilizados por essas operações; coloca-as em
formatos mais perceptíveis, tais como gráficos ou tabelas; e nos permite analisar esses dados para
possíveis ajustes. Uma análise de desempenho nos permite [ALLEN,1994]:
q otimizar o uso do sistema e recursos de toda a organização;
q supervisionar as atividades de processamento de dados;
q identificar problemas potenciais e gargalos na operação do sistema permitindo sua
correção ou prevenção;
q ajuste fino na operação do sistema;
q planejamento e implementação de upgrades.
Este trabalho busca identificar, na região do Distrito Federal, um perfil de gerenciamento
de desempenho nas organizações de Tecnologia de Informação; como as empresas tratam o
assunto; quais os problemas para a adoção de procedimentos relacionados com desempenho;
1.1 – MOTIVAÇÃO.
Comumente, utilizamos o computador com as configurações básicas estabelecidas pelo
vendedor. Sem prestarmos muita atenção, operamos nossos sistemas com esses ajustes que nem
sempre são os ideais para as características de funcionamento da nossa empresa. O problema se
agrava quando o equipamento é utilizado como servidor em um ambiente de rede. A medida em
que a máquina vai sendo ocupada, seu desempenho vai enfraquecendo, até o ponto de exigir uma
troca de equipamento. Esse processo é acelerado quando existe uma troca dos programas por
outros mais recentes, que, normalmente, exigem uma configuração mais robusta para poder
responder ao processamento dentro de tempo aceitável, o que significa reinvestimentos para a
empresa. O mesmo problema ocorre com os programas de sistemas operacionais, de
gerenciadores de bancos de dados e gerenciadores de redes.
Para evitar surpresas no que diz respeito ao tempo de resposta de ambientes
informatizados, é necessário um trabalho contínuo de análise de desempenho. Um trabalho dessa
natureza exige um planejamento que alcança desde as áreas de suporte até o desenvolvimento,
com engajamento total do setor de informática da organização. É necessário um período longo de
tempo para coleta de estatísticas sobre o desempenho nas áreas de atuação que serão cobertas pelo
trabalho. Os ajustes são feitos um a um e, posteriormente, são submetidos a medições para análise
dos efeitos. Os ajustes exigem um conhecimento mais aprofundado dos analistas, no que diz
respeito às estruturas de sistemas operacionais, subsistemas de I/O, redes, bancos de dados e
Por isso, é comum que trabalhos como esse sejam deixados de lado e se utilizem as
parametrizações padrões, seja por falta de capacidade pa ra analisar o ambiente, ou, então, por
pura acomodação em um ambiente que responde de modo satisfatório. Normalmente, as empresas
patrocinam trabalhos como esse em circunstâncias críticas de desempenho, para corrigir o
ambiente e, raramente, de forma prospectiva, evitando os problemas antes de implantações de
sistemas, ou aumento da carga de trabalho.
A motivação para executar uma pesquisa sobre o assunto vem da escassez de informações,
pois a maioria dos trabalhos na área de desempenho são direcionados para componentes
específicos que impactam no desempenho, como subsistemas de I/O, bancos de dados,
processador, etc. Poucos abordam o tema de uma forma global e impondo o trabalho de análise de
desempenho como parte essencial e integrante de todo o ambiente de Tecnologia da Informação,
e, por isso, merecendo atenção constante por parte da organização.
A complexidade do gerenciamento dos ambientes distribuídos, formados por servidores de
bancos de dados, redes, Internet e outras tantas facilidades e ferramentas para usuários finais,
tornou muito mais difícil as tarefas de monitoramento e manutenção de níveis de desempenho em
ambientes de tecnologia da informação.
Apesar dessa nova arquitetura distribuída, as ações de monitoramento e trabalhos de
melhoria de desempenho ainda são, na maioria das vezes, analisadas e executadas
segmentadamente da mesma forma como se fazia em arquiteturas centralizadas de mainframes,
não se levando em conta esse novo e diferente ambiente. Ou seja: o ambiente não é observado
de TI, mas, ou elas apresentam uma complexidade muito grande de utilização, ou não
contemplam todas as funcionalidades exigidas para a administração de desempenho.
Outro aspecto importante em atividades de análise de desempenho diz respeito ao
momento da ação por parte dos administradores para a correção dos problemas detectados. Na
maioria das vezes, essa ação é reativa, ou seja, ocorre somente após a instalação do problema.
Uma administração de desempenho busca, principalmente, ações pró-ativas detectando os
problemas e corrigindo-os antes que eles aconteçam.
Conhecer os componentes que impactam em desempenho nas arquiteturas de sistemas de
informação é fundamental para a adoção de uma política de administração de performance em
uma organização. Também, é necessário identificar quais são as formas de ação comumente
utilizadas pelos gerentes de sistemas de informação, para que essas tarefas sejam mais
abrangentes e eficazes.
1.2 - OBJETIVOS
1.2.1 – OBJETIVOS GERAIS.
O objetivo principal desta dissertação é verificar se as organizações possuidoras de
ambientes de tecnologia de informação no Distrito Federal fazem uso de políticas de
administração de desempenho, analisar os principais problemas encontrados para a adoção de uma
metodologia de administração de desempenho e finalmente, definir e propor um modelo de
1.2.2 – OBJETIVOS ESPECÍFICOS.
O trabalho será realizado através de pesquisa bibliográfica sobre as técnicas de
administração de desempenho adotadas, atualmente, pela área de Tecnologia da Informação, por
pesquisa de campo com gerentes de informáticas de organizações do Distrito Federal, cujos
resultados permitirão:
q Identificar se as organizações do Distrito Federal, possuidoras de sistemas de
informações baseados em computadores, utilizam alguma forma de administração
de desempenho, qual é a importância da Administração de Desempenho e qual é o
impacto que ela produz dentro dessas organizações;
q Identificar de que forma e quais componentes de cada área da informática são mais
comumente afetados em termos de desempenho e, em cada uma dessas áreas, será
verificado se existe uma política de administração de desempenho, se os trabalhos
desenvolvidos são do tipo reativo e/ou prospectivo;
q Verificar quais técnicas são utilizadas nas análises de desempenho, diagnosticar os
problemas encontrados no gerenciamento de desempenho pelas organizações e
propor um modelo de gerenciamento de desempenho para minimizar os
empecilhos de adoção de ferramentas e procedimentos de gerenciamento de
1.3 - TRABALHOS RELACIONADOS
Pesquisas relacionadas à Administração de Desempenho nos ambientes de Tecnologia da
Informação não são muito comuns. Em linhas gerais, as pesquisas tratam do assunto de uma
forma especializada nas áreas envolvidas, e não de forma genérica. As áreas de maior interesse
estão ligadas ao desempenho das redes devido à difusão dos sistemas distribuídos; banco de dados
distribuídos em multi-plataformas; ambiente de WEB, envolvendo acessos a bancos de dados;
técnicas de avaliação de desempenho em servidores; ajustes de I/O em servidores; estruturas de
cache de memória e I/O em servidores.
Nos trabalhos relacionados a desempenho de redes vale citar, principalmente o
desenvolvido na Universidade Federal de Santa Catarina, utilizando agentes autônomos na
gerência de redes, buscando, fundamentalmente, um gerenciamento proativo das redes e técnicas
de Inteligência Artificial [DE FRACESCHI,2000].Pesquisas nessa direção, também, estão sendo
executadas pela Universidade Federal do Rio de Janeiro, juntamente, com a Université de
Versailles St-Quentin-em-Yvelines da França [RUBENSTEIN,2000]. Uma preocupação muito
grande nessa área diz respeito aos ambientes de WEB, enfocando a utilização de planejamento de
capacidade e gerenciamento de desempenho[GITOMER,1999][HAYES,1993], modelos de
bechmarks, soluções de conectividade em bancos de dados e tecnologias de comércio
eletrônico[JUTLA,1999].
Nos ambientes de servidores temos as abordagens clássicas de avaliações de desempenho
[JAIN,1991][LOUKIDES,1990][WICKS,1991], que são fundamentos em qualquer trabalho de
para ambientes distribuídos[CAVIT,1999] [ROBINSON,1999] [KRISHNASWAMY,2000]
[FISCHER,1993] [PANCAKE,1995] [GILADI,1995] [JAKIELA,1995] [MOGUL,2000].
Sabemos que a área de banco de dados permeia todas as outras e que cada uma delas traz
preocupações implícitas quanto ao acesso a dados. No entanto, se focarmos esta área teremos
trabalhos nos ajustes de parâmetros dos bancos [DUNHAM,1998][ITSC,1990][PTH,1998].
Tratativas de otimização de queries em bancos de dados orientados a objetos tem sido, também,
bem estudadas.
1.4 – CONTRIBUIÇÕES.
O resultado esperado é a definição de um perfil da utilização da análise de desempenho
nas empresas do Distrito Federal, se a falta ou a presença deste tipo de trabalho afeta, de alguma
forma, os resultados da organização; descobrir quais as dificuldades para adotar uma gerência
permanente de Administração de Desempenho nas organizações; identificar quais são as técnicas
mais utilizadas para a solução dos problemas de desempenho de ambientes de tecnologia da
informação e quais as áreas e que componentes de desempenho que são mais afetados nos
trabalhos de ajustes de desempenho; finalmente, propor um modelo que facilite a adoção
permanente de uma política de administração de desempenho nas organizações que possuem
sistemas de informações baseadas em computadores.
1.5 - ORGANIZAÇÃO DO TRABALHO
Tecnologia de Informação não possuem uma política de Administração de Desempenho
implantada. O levantamento dos dados será realizado com uma pesquisa de campo em empresas
de Tecnologia de Informações em organizações do Distrito Federal.
A dissertação está organizada em temas, partindo de uma introdução sobre desempenho no
capítulo 1, passando por uma revisão bibliográfica do estado da arte nos capítulos 2 a 6; a
pesquisa de campo e seus resultados estão descritos nos capítulos 7 e 8; e as conclusões no
capítulo 9. Mais especificamente os capítulos estão assim distribuídos:
q O capítulo 1 conduz a uma introdução da importância do gerenciamento do
desempenho nas organizações, a motivação para o desenvolvimento deste trabalho,
os objetivos esperados no final do mesmo, passando pelas identificações de
trabalhos acadêmicos relacionados a este assunto;
q O capítulo 2 trata dos fatores que impactam o desempenho nos ambientes
corporativos de tecnologia da informação. Estes fatores estão divididos em fatores
de hardware e fatores de software. Este capítulo aborda o Hardware. Os fatores de
hardware analisados se relacionam, principalmente, com as funções do sistema
operacional;
q O capítulo 3 analisa o software como fator impactante de desempenho, relacionado
com sistemas operacionais e aplicativos em geral;
q O capítulo 4 aborda os impactos de desempenho gerados por sistemas de
tecnologia de informação que utilizam gerenciadores de banco de dados;
q O capítulo 5 discorre sobre os impactos de desempenho que ocorrem nos
q O capítulo 6 trata das técnicas utilizadas nas avaliações de desempenho, suas
vantagens e desvantagens; identifica as métricas mais comuns nas avaliações de
desempenho e seu significado dentro deste contexto; e trata dos monitoramentos
das atividades de ambientes de Tecnologia de Informação e as ferramentas mais
utilizadas para estes fins;
q O capítulo 7 define o escopo das amostras, a metodologia e analisa os dados
coletados nas empresas de Brasília, identificando quais os principais problemas
encontrados nas or ganizações pesquisadas;
q O capítulo 8 recomenda um modelo de administração permanente de desempenho
nas organizações com sistemas de informações computadorizadas;
CAPÍTULO 2
O HARDWARE COMO FATOR IMPACTANTE DE DESEMPENHO.
O desempenho de um sistema pode ser percebido de diversas formas. Para um usuário,
significa o tempo gasto para executar um programa. Para o analista de desempenho, no entanto,
administrar o desempenho significa melhorar o desempenho de todo o sistema, que é muito mais
complicado que ajustar um único programa para um usuário. Mas, analisar os problemas
encontrados pelos usuários é um bom começo para ajustes de desempenho. Esses problemas
indicam que alguma coisa pode estar errada na configuração do sistema.
Quando executamos um programa, ele tomará um tempo do sistema compreendido entre o
seu início até o seu final. A esse tempo denominamos tempo decorrido (elapsed ou wall-clock).
Esse é o tempo total gasto para executar o programa. No entanto, esse tempo é um composto de
outros tempos menores gastos pelo sistema para trabalhar operações diversas, tais como:
operações de I/O, tempo de troca (swapping), interfaces de rede e transferência de dados entre
dispositivos, além do tempo de CPU.
No entanto, podemos observar que o desempenho é resultante de uma composição de dois
fatores que ocorrem simultaneamente: o hardware e o software. Este capítulo descreve os
principais componentes de hardware e software que têm influência sobre os resultados de
desempenho em ambientes computacionais.
Diferentes componentes contribuem para o tempo total gasto pelo programa. É necessário
compreender o papel desses componentes, para entender os problemas de desempenho
q Tempo de CPU gasto pelo usuário;
q Tempo de CPU gasto pelo sistema;
q Tempo de I/O;
q Tempo de Rede;
q Tempo gasto executando outros programas;
q Desempenho da Memória Virtual.
Obviamente, essa visão é bem condensada e não mostra quais são, realmente, as áreas
funcionais da organização envolvidas quando estamos trabalhando em um sistema distribuído.
Gitomer [GITOMER,1999] diz que para estudar desempenho quatro fatores devem ser
considerados: a utilização da CPU, os I/O dos discos, a utilização da me mória e o desempenho da
rede. Mas uma política global de administração de desempenho não se limita, basicamente, aos
componentes eletrônicos da arquitetura. Para obtermos o real desempenho, devemos estar
incluindo, também, as falhas geradas por mau uso dos meios. Um mau ajuste de banco de dados,
estruturas de dados não compatíveis, programas sem qualidade podem trazer custos inesperados e,
às vezes, nem observados pelo administrador.
2.1 – HARDWARE.
O hardware é um componente fundamental, no que diz respeito a desempenho, em uma
estrutura de tecnologia de informação. No entanto, ele tem por característica poucas
possibilidades de ajustes para melhorar ou alterar o desempenho. Normalmente, problemas desta
dimensionamento do hardware de acordo com as necessidades de carga de trabalho imposta pelos
sistemas da organização.
2.1.1 – ESTRUTURA INTERNA DE UM COMPUTADOR.
Os principais blocos funcionais que se podem encontrar num computador podem ser
agrupados em apenas 4: a entidade que processa a informação, a entidade que armazena a
informação que está a ser processada, e as unidades que estabelecem a ligação (barramento) deste
par de entidades (processador-memória) com o exterior (dispositivos de I/O). Mais
concretamente, os blocos são:
q Processador (CPU);
q Sistema de Memória;
q Dispositivos de entrada e saída e seus controladores;
q Barramento (Bus).
2.1.1.1 – PROCESSADOR.
Apesar do processador ser o componente mais importante do computador, já que é ele
quem processa quase todas as informações, ele não é, necessariamente, o maior responsável pelo
desempenho. Na verdade, dependendo da aplicação à qual o computador se destina, o
desempenho do processador pode ser menos importante que a quantidade de memória RAM, ou,
depende dos demais para mostrar o seu potencial. Dizemos que um computador é tão rápido
quanto seu componente mais lento. Como estamos falando de um conjunto, apenas um
componente que apresente um baixo desempenho será suficiente para colocar tudo a perder.
Um computador pode ter uma ou mais Unidades Centrais de Processamento (CPU),
eventualmente, processadores auxiliares ou co-processadores para execução de funções
matemáticas, gráficas, de comunicações. É interessante lembrar que a CPU é um recurso limitado.
Ela consegue produzir um número finito de ciclos distribuídos durante um dia. Cada processo
exige uma quantidade de ciclos para ser completado. Olhando sob essa ótica podemos concluir
que a capacidade total da CPU será distribuída entre os processos durante o dia de trabalho. Se a
demanda for maior que a oferta verificaremos uma deficiência.
2.1.1.1.1 – TIPOS DE PROCESSADORES.
Pode-se dizer que, em relação à arquitetura, os tipos de processadores são: CISC
(“Complex Instruction Set Code”), RISC (“Reduced Instruction Set Code”) e VLIW (“Very Long
Instruction Word”). Formalmente, RISC e CISC se diferenciam pela quantidade de instruções que
cada uma possui em seu conjunto. Um processador RISC teria um conjunto menor de instruções
que um outro processador CISC. Porém, apesar desta relação ainda ser válida, os processadores
RISC, como o PowerPC, ultimamente, têm apresentado conjuntos de instruções de tamanho
próximos aos processadores CISC. Portanto, preferimos diferenciar pela simplicidade das
a) Processador CISC:
• conjunto de instruções variado e rico ( > 200 instruções);
• vários modos de endereçamento ( > 10);
• freqüentemente micro-programado;
• mais de um ciclo de máquina por instrução (CPI > 1).
b ) Processador RISC:
• conjunto de instruções pequeno ( < 100 instruções);
• poucos modos de endereçamento (entre 3 e 5);
• não é micro-programado;
• um ciclo de máquina ou menos (super-escalar) por instrução.
c) Processador VLIW:
• Possuem alternativa para a exploração de paralelismo ao nível de instruções (ILP –
“Instruction Level Paralelism”);
• fornecem mais tarefas por instrução (aumento da densidade de código), sem
aumentar a complexidade da decodificação.
2.1.1.1.2 – O
CLOCK
.
A CPU relaciona-se com vários componentes (memória, discos, barramentos) que
possuem diferentes velocidades de processamento, e que precisam comunicar-se entre si. Para
resolver os problemas destas diferentes velocidades existe o clock, cujo papel é sincronizar a
comunicação entre as partes do computador. O clock gera pulsos (pulsos de clock), sinais
os periféricos e CPU se dá, sempre, num pulso de clock, nunca "no meio" do pulso. Assim, existe
um sincronismo na comunicação, sem que isto afete a velocidade particular de cada parte do
hardware. A freqüência de clock dos computadores é medida em MHz (megahertz).
Clock de um computador é um pulso eletrônico gerado periodicamente por um oscilador,
geralmente de cristal, usado para sincronizar o funcionamento dos diversos dispositivos e placas
do sistema. Pode -se dizer, então, que é a velocidade de funcionamento geral do sistema.
Geralmente, é medido em MHz (1 Hz = 1 ciclo/seg | 1 KHz = 1 000 Hz | 1 MHz = 1 000 KHz = 1
000 000 Hz).
2.1.1.1.2.1 – TIPOS DE
CLOCK
.
Existem dois tipos de clocks, cada um com tarefas diferenciadas. São eles:
q Clock interno;
q Clock externo.
O clock interno é aquele que regula a freqüência de trabalho do processador. Estão
submetidas ao clock interno as seguintes operações: cálculos matemáticos, compactação e
descompactação de arquivos, execução de programas, dentre outros.
O clock externo regula a freqüência da placa mãe e dos periféricos. Estão submetidas ao
clock externo as seguintes operações: operações de I/O, como leitura e gravação, envio de dados à
2.1.1.2 – MEMÓRIAS.
A memória é um componente de extrema importância no que diz respeito a desempenho
de um computador. Quase tudo, antes de ir para o processador, tem de passar pela Memória
Principal. Assim, a CPU está constantemente acessando a memória. Os dados entram no
computador por algum periférico, como um teclado, e a CPU os coloca na memória conforme
mostrado na figura 1.
Figura 1 - Subsistema de memória
O subsistema de memórias é formado pelas:
q Memória Principal;
q Memória Secundária;
q Memória Cachê;
q Memória Virtual.
2.1.1.2.1 – MEMÓRIA PRINCIPAL.
É a memória principal que armazena toda a informação que a CPU vai necessitar de
manusear; encontra-se organizada em células que podem ser direta e individualmente endereçadas
pela CPU (ou por outro componente que, também, possa acessar diretamente à memória); cada
lidam com esta dimensão de célula); a dimensão máxima de memória física que um computador
pode ter está associada à largura n do barramento de endereços (2n) [PROENÇA,2000].
Problemas de desempenho de memória são simples: em um determinado instante, o sistema tem
memória ou não tem. Quando não há, o sistema invoca os recursos de memória virtual e, nesse
momento, os problemas com desempenho aparecem. A memória principal divide-se em:
q Memória RAM (Random Access Memory ou Memória de Acesso Randômico);
q Memória ROM (Read Only Memory ou Memória Apenas de Leitura).
A memória RAM é a memória principal do computador e subdividi-se em DRAM e
SRAM. A memória ROM é uma memória fixa, onde não há variação dos dados. É responsável
por armazenar pequenas rotinas e instruções essenciais ao computador.
A memória DRAM (Dynamic RAM) é a memória mais conhecida no computador. Muitas
vezes, quando dizemos que um computador tem 16 ou 32 MB de me mória ou de RAM, na
verdade, estamos nos referindo a DRAM. A DRAM é uma memória relativamente rápida e que
tem o objetivo de armazenar o maior volume de dados na troca dinâmica CPU-Memória.
A memória SRAM (Static RAM), também conhecida como cache, é uma me mória bem
mais rápida do que a DRAM. Na verdade, ela está antes da DRAM, no caminho CPU-Memória,
com o objetivo de absorver rapidamente as informações fornecidas pela CPU e transferi-las para a
DRAM. Isso faz com que a CPU fique "livre" mais rapidamente. Isso aumenta mais ainda a
velocidade de troca de informações. A figura 2 mostra a estruturação destas memórias e seu
Figura 2 - Memória Principal e Memória Cache 1
2.1.1.2.1.1 – MEMÓRIA
CACHE
.
Atualmente, quase todas as estruturas do computador fazem uso da memória cache.
Quando um dado é lido ou gravado, ele é preservado no cache, que é, simplesmente, uma área da
memória RAM usada para armazenar dados já lidos da unidade de disco que, provavelmente,
voltarão a ser necessários no futuro. Confirmando esta situação, o aplicativo que está utilizando a
memória cache terá substituído um acesso a disco por um acesso a memória, um ganho de
performance da ordem de 100 a 1.000 vezes!
A maioria dos sistemas operacionais atuais fornece automaticamente o uso de memória
RAM como cache. Isso permite um aumento no índice de acertos, nome dado à proporção entre a
quantidade de acessos a disco eliminados pela presença do cache e o número total de acessos a
A alocação inteligente de memória RAM como cache é, portanto, crucial. Logo, é
aconselhável tornar o cache do sistema operacional tão grande quanto possível [MAYER,1998].
No entanto, o retorno sobre o investimento em memória RAM alocada como cache não
cresce de forma linear. O perfil exato depende da utilização específica de recurso que utiliza
cache, mas, em geral, os ganhos no índice de acerto começam a crescer mais lentamente, na
medida em que o tamanho do cache atinge uma fração significativa do tamanho total dos dados.
Logo, existe um ponto a partir do qual o investimento em mais memór ia não compensa, mas a
determinação exata desse ponto só pode se dar de forma experimental.
Alguns computadores incorporam caches de nível 1 (L1) e nível 2 (L2). O cache L2 é uma
área de memória de alta velocidade que melhora o desempenho, para isso, reduzindo o tempo
médio de acesso à memória.
O cache de registro de execução nível 1dispõe de um cache de Registro de Execução que
armazena até 12 K de micro-operações codificadas na ordem de execução do programa. Isso
aumenta o desempenho, isentando o decodificador do loop de execução principal e promove uma
utilização mais eficiente do espaço de armazenamento em cache, uma vez que as instruções que
são ramificadas não são armazenadas. Como resultado, é oferecido um alto volume de instruções
às unidades de execução do processador, reduzindo o tempo total exigido para recuperação de
previsões ramificadas equivocadas.
de 256 bits (32 bytes) que transfere dados em cada clock do núcleo. Como resultado, pode
oferecer uma taxa de transferência de dados muito elevada [PROENÇA,2000].
2.1.1.2.2 – MEMÓRIA SECUNDÁRIA.
A memória secundária é, também, chamada de memória externa, auxiliar, ou, ainda, de
massa, por permitir armazenar grandes quantidades de informação. As memórias mais utilizadas e
conhecidas são [PROENÇA,2000]:
q Discos Rígidos;
q Disquetes;
q Discos Óticos (CD);
q Fitas.
Esse tipo de memória, não volátil, tem maior capacidade de armazenamento e é mais barata.
2.1.1.3 – DISPOSITIVOS DE ENTRADA E SAÍDA.
Os dispositivos de entrada e saída (E/S) ou input/output (I /O) são, também, denominados
periféricos. Eles permitem a interação do processador com o meio externo.
q dispositivos que fazem interface com o ser humano: monitor, teclado, mouse,
impressora, caixas de som, etc.;
q dispositivos que armazenam grandes quantidades de informação, também,
designados por memória secundária: disco, banda magnética, CD -ROM, etc.;
q dispositivos de interface para comunicação com outros equipamentos: interfaces
de vídeo, placas de rede local, modems, interface RDIS, etc;
q dispositivos internos auxiliares, como um temporizador, um controlador de
interrupções, um controlador de acessos diretos à memória (DMA), etc.
2.1.1.3.1 – DISCOS.
Segundo Loukides [LOUKIDES,1990], dos dispositivos de entrada/saída, os discos são os
que têm maior importância no que diz respeito a desempenho. O desempenho do disco é um fator
que influencia muito no desempenho global do sistema, determinando o tempo de carregamento
dos aplicativos e arquivos grandes e, até mesmo, a velocidade de acesso ao arquivo de troca. Para
ser carregado um programa ou acessado qualquer outro dado, é preciso, primeiramente,
transferi-lo do disco rígido para a memória. Pouco adianta ter um processador ou memórias ultra-rápidos,
se, todo momento, eles tiverem que esperar por dados a serem transmitidos pelo disco rígido.
Depois da quantidade de memória RAM e cache, o disco rígido é talvez o componente que mais
afeta o desempenho do computador, rivalizando, até mesmo, com o processador.
q Tempo de busca;
q Tempo de latência;
q Tempo de acesso;
q Head Switch Time;
q Taxa de transferência interna;
q Cachê;
q Densidade;
q Velocidade da interface;
q Fragmentação.
2.1.1.3.1.1 – TEMPO DE BUSCA.
Este é um fator importante no desempenho geral do disco, pois é o tempo que a cabeça de
leitura demora para deslocar-se de uma trilha à outra do disco. Este tempo é um pouco difícil de
determinar com exatidão, pois o tempo que a cabeça demora a deslocar-se da trilha 50 à trilha
100, deslocando-se 50 trilhas, por exemplo, não é 5 vezes maior que o demorado para ir da trilha
50 à trilha 60, deslocando-se 10 trilhas. Esses valores variam em cada marca e modelo de disco
2.1.1.3.1.2 – TEMPO DE LATÊNCIA.
Dentro do disco rígido, os discos magnéticos giram continuamente. Por isso, dificilmente,
os setores a serem lidos estarão sob a cabeça de leitura/gravação no exato momento de executar a
operação, podendo, no pior dos casos, ser necessário uma volta completa do disco até o setor
desejado passar novamente sob a cabeça de leitura.
O tempo de latência é tão importante quanto o tempo de busca. Felizmente, ele é fácil de
ser calculado, bastando dividir 60 pela velocidade de rotação do disco, medida em RPM (rotações
por minuto), e multiplicar por 1000. Teremos então o tempo de latência em milessegundos.
Geralmente, é usado o tempo médio de latência, que corresponde à metade de uma rotação
do disco, assumindo que os clusters desejados estarão, em média, a meio caminho do cabeçote.
2.1.1.3.1.3 – TEMPO DE ACESSO.
O tempo de acesso é o tempo médio que o disco demora a acessar um setor localizado em
um local aleatório do disco. Este tempo é um misto do tempo de busca e do tempo de latência do
disco rígido, significando o tempo que o braço de leitura demora a chegar a uma determinada
trilha, somado com o tempo que o disco demora a girar e chegar ao setor certo. O tempo de acesso
2.1.1.3.1.4 – HEAD SWITCH TIME.
Um disco rígido é composto, internamente, de vários discos. Naturalmente, temos uma
cabeça de leitura para cada disco, sendo os dados gravados distribuídos entre eles. Como as
cabeças de leitura são fixas, caso seja necessário ler dois arquivos, um encontrado na face 1 e
outro na face 3, por exemplo, a controladora ativará a cabeça de leitura responsável pela face 1,
lerá o primeiro arquivo e em seguida, ativará a cabeça responsável pela face 3, lendo o segundo
arquivo. O termo "Head Switch Time" pode ser traduzido como "tempo de mudança entre as
cabeças de leitura", por ser, justamente, o tempo que o disco leva para mudar a leitura de uma
cabeça para outra. Este tempo é, relativamente, pequeno e não influencia tanto quanto o tempo de
acesso e a densidade.
2.1.1.3.1.5 – TAXA DE TRANSFERÊNCIA INTERNA.
De todos os fatores vistos até agora, provavelmente, este é o mais complicado, pois é o
fator que envolve mais variáveis. Uma definição simplista sobre a taxa de transferência interna
seria a quantidade de dados que podem ser lidos por segundo pela cabeça de leitura. Porém, vários
fatores podem distorcer esta medição. Se os arquivos estiverem fragmentados, ou for necessário
ler vários arquivos gravados em setores distantes uns dos outros, a taxa de transferência será
2.1.1.3.1.6 –
CACHE
DE DISCO.
Os discos rígidos atuais possuem uma pequena quantidade de memória cache embutida na
controladora, que executa várias funções com o objetivo de melhorar o desempenho do disco
rígido. Neste cache ficam guardados os últimos dados acessados pelo processador, permitindo que
um dado solicitado repetidamente possa ser retransmitido a partir do cache, dispensando uma
nova e lenta leitura dos dados pelas cabeças de leitura. Este sistema é capaz de melhorar
assustadoramente a velocidade de acesso aos dados quando estes forem repetitivos, o que
acontece com freqüência em servidores de rede ou quando é usada memória virtual.Os dados lidos
pelas cabeças de leitura, originalmente, são gravados no cache e, a partir dele, transmitidos
através da interface da controladora do disco. Caso a interface esteja momentaneamente
congestionada, os dados são acumulados no cache e, em seguida, transmitidos de uma vez quando
a interface fica livre, evitando qualquer perda de tempo durante a leitura dos dados. Apesar do seu
tamanho reduzido, geralmente de 512 ou 1024 Kbytes, o cache consegue acelerar, bastante, as
operações de leitura de dados. Quanto maior e mais rápido for o cache, maior será o ganho de
desempenho.
2.1.1.3.1.7 – DENSIDADE.
A densidade dos platers de um disco rígido é outro fator com enorme impacto no
desempenho. Quanto maior for a densidade, menor será o espaço a ser percorrido pela cabeça de
A densidade pode ser calculada muito facilmente, bastando dividir a capacidade total do disco
pela quantidade de cabeças de leitura (e conseqüentemente o número de faces de disco).
A densidade influencia diretamente nos tempos de acesso e de latência do disco, além
disso, com um número menor de cabeças de leitura, o tempo perdido com o Head Switch,
também, é menor. Muitas vezes, encontramos no mercado discos de mesma capacidade, porém
com densidades diferentes. Neste caso, quase sempre, discos com maior densidade utilizarão
tecnologias mais recentes, sendo, por isso, mais rápido.
2.1.1.3.1.8 – VELOCIDADE DA INTERFACE.
A interface determina a velocidade máxima de transferência, mas não, necessariamente, o
desempenho do disco rígido. Em geral, a interface é sempre, muito, mais rápida do que a taxa de
transferência interna alcançada pelo disco. Porém, em muitas situações, a interface fica
congestionada, momentaneamente, deixando de transmitir dados. Nestas situações, os dados são
acumulados no buffer do disco e, em seguida, transmitidos de uma vez quando a interface fica
livre.
2.1.1.3.1.9 - FRAGMENTAÇÃO
A fragmentação nas unidades de discos é o nome dado ao fato de que os arquivos físicos
Esta situação é bastante comum e tende a se agravar quanto mais utilizada (e lotada) é a unidade
de disco.
Quando uma unidade de disco está fragmentada, o desempenho diminui porque a cabeça
de leitura e gravação da unidade de disco precisam deslocar -se mais. O deslocamento radial da
cabeça é, entre todas as operações efetuadas pela unidade de disco, a mais demorada; logo, ela
deve ser evitada sempre que possível [MAYER,1998].
A análise de fragmentação e processos de desfragmentação das unidades de disco são
efetuadas através de utilitários específicos, fornecidos junto com o sistema operacional e/ou
disponíveis através de terceiros. Caso o índice de fragmentação seja pequeno (digamos, inferior a
5%), ele pode ser ignorado. Discos com índices maiores de fragmentações, certamente, serão
beneficiados pela execução do processo de desfragmentação.
2.1.1.4 – BARRAMENTO.
Os dados precisam ser levados dos periféricos de entrada para a CPU, da CPU para a
memória, da memória para a CPU ou para os periféricos de saída. Existe, para isso, uma imensa
rede de "caminhos" para o trânsito dos bits, chamado de barramento (bus).
Este barramento é constituído por um elevado número de ligações físicas, podendo estar
dados (em MHz) e pela capacidade de transferência (em bits), que juntos irão produzir a taxa de
transferência.
As principais categorias de barramentos são designadas por [PROENÇA,2000]:
q Barramentos de dados, que têm por função transportar a informação (códigos dos
programas e dados) entre os blocos funcionais de um computador; quanto maior a sua
"largura", maior o número de bits transportados;
q Barramento de endereços, que tem por função transportar a identificação/localização
("endereço") dos locais onde se pretende ler ou escrever dados (por ex., o endereço de
uma célula de memória ou de um registro de estado de um controlador);
q Barramento de controle, que agrupa todo o conjunto de sinais elétricos de controle
do sistema, necessários ao bom funcionamento do computador como um todo (por ex.,
sinais para indicar que a informação que circula no barramento de dados é para ser
escrita e não lida da célula de memória, cuja localização segue no barramento de
endereços).
2.1.1.4.1 – TIPOS DE BARRAMENTOS.
Existem vários tipos de barramento como o ISA, VESA, PCI, AGP, etc. A diferença reside
na velocidade alcançada em cada um deles. Mas, mesmo o mais veloz dos barramentos, é muito
lento em comparação à CPU, representando, também, outro gargalo na velocidade de
A Velocidade de transferência de dados de um barramento é o número de vezes que um
sistema consegue realizar a transferência de dados no tempo de 1 segundo. Atualmente, é medida
em MHz (1 MHz = 1 milhão de vezes por segundo).
Capacidade de transferência de dados é a quantidade de informações que um sistema
consegue transferir de uma só vez. É medida em bits.
Taxa de transferência de dados é o resultado da multiplicação da velocidade de
CAPÍTULO 3
O
SOFTWARE
COMO FATOR IMPACTANTE DE DESEMPENHO.
Para Loukides [LOUKIDES,1990], os softwares são os componentes mais ajustáveis do
sistema de informação no que diz respeito a desempenho. No entanto, as variáveis que podem ser
parametrizadas são inúmeras e específicas a cada área do sistema de informação. Trabalhar com
desempenho em todos os níveis do sistema de informação exige um grande conhecimento, por
parte dos analistas, de todo o relacionamento dos programas com a estrutura física da máquina.
Além disso, há a necessidade de um acompanhamento constante do desempenho para uma análise
mais apurada do desempenho. As alterações de parâmetros variáveis devem ser feitas uma a uma
e verificado seus efeitos no desempenho, durante algum tempo, antes de serem efetivadas.
Os ajustes de desempenho em softwares devem ser feitos baseados em observações
metódicas e freqüentes do ambiente computacional. Nos sistemas distribuídos, os ajustes possuem
características próprias, além de enfoques diferenciados em cada área de atuação. Podemos
dividir, para efeito deste trabalho, em dois tipos de softwares :
q O sistema operacional;
q Aplicativos.
3.1 – SISTEMAS OPERACIONAIS
Os componentes de desempenho dão uma percepção de desempenho para o usuário.
Existe, no entanto, uma abordagem igualmente importante para esse assunto: a visão de
desempenho do computador. Todo problema de desempenho de sistema é, basicamente, problema
memória e subsistema de I/O. Ajuste de desempenho significa conseguir o melhor
compartilhamento desses recursos pelos usuários do sistema. Configurar esse compartilhamento é
o desafio maior para o ajuste de desempenho, isso porque todos eles interagem entre si e cada um
deles possui seus próprios problemas.
3.1.1 – ALOCAÇÃO DE CPU
Existem poucas maneiras de medir a contenção da CPU e são específicas de cada sistema
operacional. O parâmetro utilizado é a carga média, que mede o número de processos ativos em
qualquer hora. A verificação de desempenho, no entanto, tem que ser avaliada, juntamente, com
os subsistemas de I/O e de memória, pois esses três recursos trabalham em conjunto. Um sistema
com pouca memória ou subsistema de I/O sem velocidade suficiente pode fazer o sistema parecer
muito lento, quando, na realidade, a CPU estará em espera por resposta desses recursos. Numa
situação como essa, trocar a CPU por outra mais rápida vai, simplesmente, aumentar o tempo de
espera sem produzir ganhos de desempenho. De maneira geral, os problemas de CPU são
causados por problemas de memória e de I/O [FIRLEY,1990].
É um erro pensar que ajustes na CPU significam deixar o sistema mais rápido. Significa,
principalmente, garantir que a CPU terá capacidade suficiente para suportar a carga de trabalho.
Para isso, cada sistema possui alguns parâmetros que podem ser ajustados tornando o uso da CPU
mais equilibrado. Apesar do desempenho da memória não ser um ponto ajustável, convém
lembrar que os parâmetros ajustáveis da CPU mudam a quantidade requerida de memória pelos
Um importante parâmetro é tempo de processamento destinado ao usuário ou a um
programa multitarefas (time slice). Ele não combina com qualquer outro parâmetro de capacidade
do sistema, mas fornece um importante elemento de controle sobre o ambiente dinâmico de
sistema. Durante seu time slice, um processo pode ser interrompido por sua própria conveniência
ou, então, por alguma operação de I/O. Quando isso acontece, outro processo é executado e o
processo parado tem sua prioridade aumentada pelo planejador do sistema. Os processos que não
são interrompidos ou que fazem uso da CPU são chamados de processos CPU-bound. Eles,
normalmente, usam todo seu time slice sem parar. Quando isso acontece, o planejador do sistema
escolhe outro process o para rodar e abaixa a prioridade dos processos CPU-bound. Ajustando o
time slice, pode-se ter um efeito significativo no ambiente do sistema, se tiver como característica
executar grandes quantidades de processos CPU-bound. Aumentando o time slice, baixará o
overhead do planejador e deixará o sistema um pouco mais eficiente. O sistema fará um pouco
mais de trabalho real e deixará de importunar o planejador. Em contrapartida, o desempenho
interativo ficará um pouco mais pobre [FIRLEY,1990].
3.1.2 - O SUBSISTEMA DE MEMÓRIA.
Problemas de desempenho de memória são simples: em um determinado instante, o
sistema tem memória ou não tem. Quando não há, o sistema invoca os recursos de memória
virtual e, nesse momento, os problemas com desempenho aparecem.
A contenção de memória acontece quando processos ativos requerem uma quantidade de
memória que excede à memória física existente. Para evitar que o sistema caia ou que mate
paginação. Após copiar uma ou mais páginas da memória física para disco, o sistema pode
reutilizar a memória física para outro propósito. Quando o sistema invoca a paginação,
imediatamente, todo o desempenho cai acentuadamente, até que a memória esteja liberada e o
sistema possa trabalhar com a capacidade real [LOUKIDES,1990]. Até o ponto em que a
memória física suporta a carga do sistema, ela não é assunto de desempenho do sistema, mas, a
partir do momento que o sistema invoca paginação é que deve -se examinar seus efeitos.
Determinar que processos estão consumindo memória não é tarefa com resultados exatos.
A utilização de memória afeta muitos aspectos do desempenho do computador, tais como:
buffering da rede, e o uso de caching das aplicações e o do sistema operacional. Ajuste de
memória consiste em reduzir atividades de disco causadas por swapping e paginação, aumentando
a memória através da redução do tamanho da memória transiente (buffer cache size) e
investigando o uso de memória pelas tabelas do sistema [GITOMER,1999].
3.1.2.1 - PAGINAÇÃO E
SWAPPING.
O sistema operacional usa dois mecanismos para resolver problemas, quando falta
memória física: paginação e swapping. Paginação difere de swapping. A primeira leva partes do
processo para área de memória em disco, enquanto que a segunda leva o processo inteiro para a
memória de disco, no entanto, ambos indicam que o sistema não possui memória física suficiente
para a execução do trabalho exigido. O algoritmo de paginação mantém informações de cada
página e quando ela foi utilizada pela última vez e tenta manter na memória aquelas páginas que
requer bem menos tráfego de I/O, dando um melhor controle sobre a memória do sistema. Nos
sistemas onde ocorrem paginação e swapping, o swapping ocorre em duas situações
[LOUKIDES,1990]:
q Swapping faz parte da operação normal do sistema. Tarefas que estão esperando
por mais que um determinado tempo, definido pelo sistema, são consideradas
“idle” e podem ser swapped a qualquer hora, justamente para mantê-los fora da
memória do sistema;
q Swapping é também uma técnica emergencial usada em ambiente com memória
extremamente pequena. Isso também é conhecido com desperation swapping.
A paginação, normalmente, não apresenta maiores problemas desde que não se mantenha
constante. Um programa inteiro não necessita ficar na memória enquanto esta sendo executado.
Somente, aquelas linhas de código que serão executadas necessitam estar presente. No caso de
desperation swapping indica que o sistema tem uma severa falta de memória e isso,
provavelmente, vai afetar outros aspectos do desempenho do sistema. Como a operação de
swapping leva o programa inteiro para o disco, primeiramente, existe a necessidade de que haja
espaço no disco para isso. Posteriormente, o sistema busca, novamente, todo o programa do disco
para a memória para poder executá-lo. Há um custo muito alto nesse processo, afetando,
principalmente, o susbsistema de I/O. Os efeitos negativos vão desde a CPU, com o aumento da
carga média, porque o sistema não consegue processar os trabalhos rapidamente, até a queda de
desempenho do I/O, que cai, porque os discos ficam ocupados manuseando pedidos de paginação.
A alocação de memória em disco é uma técnica adotada para compensar a falta de
memória real da máquina. Essa prática, também, é conhecida como memória virtual. Porém,
devemos lembrar que isso tem um impacto negativo alto no desempenho do sistema operacional.
Os motivos são os mesmos citados no item anterior, principalmente, pela demora das partes
mecânicas dos discos. A técnica mais recomendada e que produz os melhores resultados é o
striping [FIRLEY,1990].
O striping consiste de uma distribuição dos dados da memória virtual em um pool de
discos ao invés de um único disco com área de paginação, com o intuito de minimizar os efeitos
indesejados de tempo gasto pelas partes mecânicas dos discos. Uma maior quantidade de disco
melhora o desempenho da paginação ou swapping.
3.1.3 - O SUBSISTEMA DE I/O.
O subsistema de I/O é o recurso que mais apresenta problemas de contenção. Isso porque
uma finita capacidade de I/O tem que ser compartilhada com todos os programas que estejam
sendo executados. O canal de I/O é limitado, podendo transferir uma certa quantidade de bytes
por segundo. Os equipamentos são, ainda, mais limitados, cada um deles tendo suas
particularidades e, com isso, seus problemas. A maioria dos sistemas operacionais são pobres em
ferramentas para analisar o subsistema de I/O [LOUKIDES,1990].
Os subsistemas de disco e de rede são, particularmente, importantes para o desempenho
como um todo, pois afetam muitos outros aspectos do desempenho do sistema. Um bom
executar o programa. No que diz respeito ao subsistema de disco, podemos otimizá-los de três
formas [LOUKIDES,1990]:
q Taxa de transferência por processos, que significa a quantidade de dados que um único
programa pode ler ou escrever no disco. O desempenho por processos é, relativamente,
fácil de determinar;
q Taxa de transferência agregada, que é a quantidade de dados que o sistema como um
todo pode ler e escrever no disco. A taxa agregada é difícil de medir efetivamente;
q Eficiência do disco. Discos, particularmente, quando em grande quantidade, tomam uma
grande parte do custo total do sistema.
As duas primeiras formas são, freqüentemente, compatíveis. Um sistema que tem bom
desempenho por processos, provavelmente, terá bom desempenho para agregado. O throughput
por processo e o throughput total do sistema são duas medidas distintas. Um único processo,
normalmente, acessa um único arquivo, lendo-o seqüencialmente. Quando otimizamos o
throughput por processo significa que queremos aumentar a velocidade com a qual os dados são
transferidos seqüencialmente de um sistema de arquivo. No caso da otimização do throughput
global, o sistema como um todo tem que ser capaz de lidar com muitas partes de diferentes discos
em operações concorrentes e assíncronas, lembrando que o sistema como um todo não é
seqüencial nem assíncrono [LOUKIDES,1990].
A escolha de maximização de uma ou outra forma depende muito das características dos
processos que rodam no sistema. Se meu ambiente é composto, basicamente, de programas
programas que fazem uso da transferência de grandes quantidades de dados, será conveniente
maximizar a transferência por processos.
A terceira forma, eficiência do armazenamento, é, freqüentemente, incompatível com o
throughput do disco. A maioria das técnicas para aumentar o throughput diminui a habilidade do
uso do disco. Por exemplo, aumentando o tamanho do bloco de um filesystem, aumentamos o
throughput do filesystem, mas, também, perdemos uma grande porção do espaço do disco. Uma
abordagem para esse problema é isolar arquivos com desempenho crítico em um único filesystem,
tolerando a ineficiência de armazenamento lá e otimizando o resto dos filesystems para uma
armazenagem eficiente [LOUKIDES,1990].
O mais eficiente uso do recurso de I/O pode ser feito utilizando-se de múltiplos discos.
3.2 – APLICATIVOS.
Dificilmente, costuma-se aceitar que os problemas de desempenho sejam causados por
aplicativos. Normalmente, nas situações de maus desempenhos de ambientes de informática as
suspeitas imediatamente recaem sobre as áreas de redes, banco de dados e servidores. No entanto,
existem estudos que apontam que, na maioria das vezes, os aplicativos são os responsáveis por
problemas de desempenho. Programas novos com pouco tempo de testes ou implementados
diretamente em ambientes de produção freqüentemente acabam gerando resultados indesejáveis
[FISCHER,1993].
As falhas mais comuns em programas que acabam gerando problemas de desempenho em
q Algorítmos mal elaborados, que acabam exigindo mais tempo do processador;
q Solicitação de dados que não serão utilizados, sobrecarregando a rede;
q Estruturas de comandos de SQL que exigem maior processamento por parte do servidor
de banco de dados (GROUP BY, ORDER BY, SUBSELECT), em situações que não são
necessárias;
q Pouco conhecimento dos analistas e programadores sobre as opções de concorrência de
acesso aos dados nos bancos de dados (LOCK);
q Falta de índices nos argumentos de pesquisa mais utilizados.
No caso de aplicações basicamente dois fatores são críticos para desempenho [PTH,1998]:
q algoritmos;
q transações com o banco de dados.
3.2.1
– DESEMPENHO DE APLICATIVOS AFETADO POR
ALGORITMOS.
Um dos trabalhos de desempenho em aplicativos tem por objetivo rever o algorítmo e a
sua eficiência dentro do programa. Alguns programas que têm um funcionamento, aparentemente,
normal podem estar alocando recursos desnecessários. A maioria dos profissionais, senão a quase
totalidade, fica satisfeita ao encontrar um algoritmo que resolve um problema, sem se questionar
se existe algoritmo melhor e qual a sua "distância" do ótimo teórico [SETZER,1993].
Algoritmos podem ser analisados abstraindo-se aspectos como tipo de máquina e