• Nenhum resultado encontrado

Administração de desempenho de ambientes de tecnologia da informação em organizações do Distrito Federal

N/A
N/A
Protected

Academic year: 2017

Share "Administração de desempenho de ambientes de tecnologia da informação em organizações do Distrito Federal"

Copied!
162
0
0

Texto

(1)

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

(2)

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.

(3)

Ao Professor Dr. Sérgio Moraes

(4)

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

(5)
(6)

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.

(7)

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.

(8)

Í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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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;

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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;

(24)

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

(25)

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

(26)

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,

(27)

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

(28)

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

(29)

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 à

(30)

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

(31)

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

(32)

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

(33)

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.

(34)

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.

(35)

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.

(36)

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

(37)

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

(38)

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á

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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.

(49)

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

(50)

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

(51)

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

(52)

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

Imagem

Figura 1 - Subsistema de memória
Figura 2  - Memória Principal e Memória  Cache 1
Tabela 1 – Critério para seleção de técnica de avaliação
Figura 5 – Pedido e resposta realísticos.[JAIN,1991]
+6

Referências

Documentos relacionados

• The definition of the concept of the project’s area of indirect influence should consider the area affected by changes in economic, social and environmental dynamics induced

a) AHP Priority Calculator: disponível de forma gratuita na web no endereço https://bpmsg.com/ahp/ahp-calc.php. Será utilizado para os cálculos do método AHP

ITIL, biblioteca de infraestrutura de tecnologia da informação, é um framework que surgiu na década de mil novecentos e oitenta pela necessidade do governo

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

Nas leituras de falhas efetuadas, foram obtidos códigos de anomalia por meio de dois diferentes protocolos de comunicação: o ISO 14230 KWP (2000) e o ISO 15765-4 CAN. A seguir, no

de uma instituição de ensino público federal e sua principal contribuição, tanto na perspectiva prática quanto teórica, reside na análise de aspectos da

Dentro do processo utilizado para a gestão de projetos, existe alguma diferenciação entre a gestão de equipes locais e virtuais (quanto à gestão de recursos humanos,