1.1. Ajuste de desempenho e planejamento de capacidade
Um sistema de computador consiste de um conjunto finito de componentes de hardware e software. Estes componentes constituem os recursos do sistema. Um dos trabalhos do sistema operacional é compartilhar esses recursos entre os programas que estão sendo executados. Desempenho é a medida que nos informa o quanto este trabalho está sendo eficiente. Os recursos de hardware são mais difíceis de serem ajustados, apesar de ser mais fácil de observar o seu desempenho no sistema. O nosso interesse são os recursos de software junto com o sistema operacional que nos possibilita ajustes sem a necessidade de trocarmos algum dispositivo de hardware, salvo quando este recurso não atende mais a carga de trabalho presente nos computadores.
Com o atual grau de diferentes sistemas que estão presentes nos computadores, não é difícil entender porque medir e observar o desempenho dos softwares é tão importante. Desempenho é o principal critério no desenvolvimento e operação de um sistema de computação. Obviamente as pessoas desejam que suas informações sejam processadas o mais rápido e eficiente possível.
Uma vez que o sistema esteja instalado o mais importante é verificar o tempo em que páginas da Web são carregadas, a eficiência das aplicações ou quanto tempo o Emacs leva para executar, logo, a observação é o principal mecanismo de gerenciamento de desempenho que um administrador possui.
A forma como as aplicações são escritas geralmente tem um largo impacto no desempenho. Se elas fazem um uso ineficiente do processador, memória, discos, comunicação e outros subsistemas, é claro que você não vai conseguir uma melhora significativa com apenas um ajuste no sistema operacional. No entanto, tudo que você pode fazer para aumentar o desempenho do sistema envolve a configuração do kernel, que apesar de difícil, pode trazer uma melhoria significativa no sistema. No entanto muitos ajustes que você pode fazer são nada mais que implementar políticas de um bom gerenciamento no uso do sistema.
Os objetivos principais de um gerenciamento de desempenho são: fornecer as ferramentas necessárias para monitorar o sistema e determinar quais componentes não estão sendo executados satisfatoriamente e tomar as ações corretas para melhorar o sistema.
Em resumo, o desempenho do sistema depende de quanto eficientemente os seus recursos estão sendo aplicados na demanda corrente para vários processos no sistema. Os mais importantes recursos deste sistema do ponto de vista do desempenho são a CPU, memória e operações de escrita e leitura nos discos, apesar da rede e outros dispositivos de entrada e saída também serem relevantes.
2. O que é Performance Tuning ?
2.1. Performance Tuning
É o processo de observação das operações de todo um sistema de computação e baseados nessas observações, promover ajustes nos vários componentes do sistema. O resultado final é que todo o sistema está mais eficiente. Esta definição difere em alguns aspectos das mais tradicionais visões em que tentamos fazer um particular componente do sistema mais eficiente, nós estamos fazendo o sistema todo mais eficiente. Em geral, isto significa melhorar o desempenho de todos os componentes, mas não é necessariamente uma regra, é possível ajustando alguns componentes obter uma melhoria significativa em todo o sistema (todos os componentes do sistema). Vamos usar um exemplo para esclarecer este ponto.
Considere o caso em que o sistema já esteja
em um estado ruim. Os acessos a discos estão muito lentos e a memória
não é mais suficiente para os processos. Como a memória
não é suficiente o sistema é obrigado a promover paginação
nos discos, mas como o acesso está lento o problema só tende
a aumentar. Perceba que aumentar a velocidade de acesso ou o número
de discos não resolverá o problema, o que seria uma solução
imediata mas que possui problemas de custo de novos dispositivos no sistema.
Este é um ponto decisivo no ajuste do sistema: perceber quando a
adição de novos (melhor desempenho) dispositivos não
resolverá o problema do baixo desempenho, apenas aumentará
o número de processos lentos e trará um custo financeiro.
No entanto em alguns casos é claro que a única forma de melhoria
do desempenho do sistema é a troca dos dispositivos existente por
outros mais eficientes.
3. O que é Capacity Planning ?
3.1. Capacity Planning
Planejamento da capacidade complementa o ajuste de
desempenho. Enquanto o ajuste de desempenho é usado para aliviar
algum de tipo de gargalo ou demora no sistema, planejamento da capacidade
é usada para que haja uma adequada capacidade de computação
para a carga do sistema. Na realidade, ajuste de desempenho é um
dos componentes do gerenciamento da eficiência de um sistema, pois
o planejamento apesar de garantir um desempenho compatível com a
carga esperada será sempre necessário promover ajustes no
sistema. Se um adequado serviço pode ser garantido para a maioria
dos usuários na maior parte do tempo, dizemos que o planejamento
da capacidade está atingindo o seu objetivo.
4.1. Teoria
Ajuste de desempenho requer o envolvimento de um grande número de técnicas e áreas de gerenciamento. Problemas com o desempenho pode ser resultado de um número de diferentes fontes. Nenhuma técnica ou ferramenta pode localizar a fonte do problema todas as vezes. Logo, elas também não podem corrigir o problema. Ajuste de desempenho e planejamento de capacidade são ambas arte e ciência. Certamente existem processos e fórmulas matemáticas padrão que podem ser usadas para determinar muitos aspectos do desempenho dos sistemas, mas como a fina arte, o sucesso de um gerenciamento de desempenho depende de conhecimento detalhado do sistema após uma observação e uma cuidadosa seleção das ferramentas e metodologias para serem usadas na determinação da fonte do problema. Logo a teoria envolvida baseia-se no conhecimento adquirido através da observação em conjunto com o conhecimento técnico de Administração de Sistemas.
4.2. Métodos
Os mais importantes métodos usados no ajuste de desempenho são a observação e o bom senso. Antes de qualquer outra análise ocorrer, todo o sistema de computação deve ser inspecionado para ver o que está realmente acontecendo. Na maioria das vezes, os problemas de desempenho aparecem para o administrador de sistemas ou outro responsável trazidos pelo usuário final.
4.3. Ferramentas
Sem dúvida alguma que as ferramentas mais importantes disponíveis para o administrador ou operador que esteja promovendo uma análise de desempenho no sistema são os próprios mecanismos fornecidos pelo sistema operacional UNIX, como o ps, sar, cron, etc. No entanto é necessário um grande conhecimento sobre a utilização dos comandos UNIX sozinhos e em conjunto para obter dados que ajudem no ajuste do desempenho do sistema. Além desta dificuldade de ordem do conhecimento humano existe a baixa eficiência da utilização destes comandos pois o operador necessita construir vários scripts que apresentem dados correlacionados destes comandos. O ideal é que pudéssemos utilizar uma ferramenta que aproveitasse todos os recursos destes comandos, que apresentassem os dados de forma gráfica, com possibilidade de armazenamento em arquivos para posteriores consultas, gerassem uma estatística em tempo real e sem a necessidade de parar o sistema, ou melhor, que os dados fossem colhidos com o desempenho real do sistema sem necessidade de alterara a carga do ambiente devido a aparição deste novo software.
Existem algumas ferramentas comerciais que tentam unir essas características como o PerformanceWorksTM SmartWatch da Landmark Systems Corporation, que é um software específico para gerenciamento de desempenho. Mas também existem outros que incorporam essas funções no seu leque de atividades como os softwares de gerenciamento de sistemas (redes) da Tivoli e Computers Associates (CA).
5.1. Introdução
O objetivo de um gerenciamento de sistema é simples: fornecer um bom e previsível (estável) serviço em um sistema de computação por um custo razoável. No entanto o maior desafio dos sistemas baseados em UNIX é a esmagadora diversidade de métodos disponíveis para atingir este objetivo. Um conjunto de requisitos existe para tornar este trabalho mais racional.
O UNIX International Performance Management Working Group publicou um conjunto de documentos (papers) descrevendo um mecanismo para coletar dados dos sistemas UNIX independente do fabricante. Apesar desses papers apresentarem mais mecanismos (técnicas) do que requisitos, existe um número de requisitos e objetivos que são diretamente aplicáveis.
Os requisitos são listados de acordo com a sua funcionalidade. Cada requisito recebe um nível de prioridade que podem ser "alto" , "médio" ou "baixo".
5.1.1. Metrics
Metrics são as medidas de atividade do sistema que podem ser usadas para disparar alarmes, dispositivos de análise de performance e fornecer dados para um planejamento de capacidades. Uma grande lista de medidas (metrics) pode ser encontrada no Preliminary Report of the Data Capture Committee of the UNIX International Performance Management SIG. Listas adicionais podem ser encontradas no Internet Engineering Task Force’s (IETF’s) Request for Comments (RFC’s) números 1289, 1238, 1231, 1230, 1229, 1227 e 1213. Esses RFC’s e Internet Drafts definem a base de informações de gerenciamento para o Simple Network Management Protocol (SNMP).
R1. Suportar as medidas definidas no SNMP MIBs e no protocolo SNMP. O SNMP é largamente implementado, e ferramentas baseadas nele são facilmente obtidas. Padrões concorrentes (UI PMWG, OSF DME, OSI CMIP) quase não possuem produtos para serem comparados. Já outros padrões ganham significativo mercado. Note que OSF DME é compatível com o SNMP.
Prioridade: Alta
R2. Suportar dados coletados por um monitor, SAR,
daylog, strstat e PEP. Fornece medidas desejáveis isentas da rede.
No entanto qualquer padrão SNMP MIB nesta área deve ser preferido.
Prioridade: Alta
R3. Suportar medidas definidas no documento UI PMWG como parte de um específico fornecedor de SNMP MIB. Permite um rico conjunto de ferramentas de monitoração SNMP.
Prioridade: Baixa
R4. Suportar medidas específicas de aplicações. Algumas aplicações (sistemas, programas, ferramentas, etc) possuem seus próprios dados de desempenho.
Prioridade: Alta
R5. Suportar medidas definidas pelo usuário. Isto permite que o usuário ajuste de acordo com os dados colhidos a sua própria aplicação.
Prioridade: Baixa
R6. Discos, CPU e Memória usados por processos, usuários e aplicações. Esta informação permite uma maior precisão no momento de construir os profiles e fornece ao operador mais segurança quando planejar os recursos do sistema.
Prioridade: Média
5.1.2. Performance Tuning
O objetivo do ajuste de desempenho é aumentar a quantidade de trabalho que pode ser obtida de um sistema de hardware e software. Este objetivo deve estar atrelado a um baixo custo de trabalho e financeiro. Este gerenciamento depende tanto de treinamento e serviços de consultoria quanto de ferramentas específicas.
R7. Ser capaz de armazenar dados e em particular selecioná-los. O histórico seguro desses dados é essencial para o trabalho de ajuste de desempenho.
Prioridade: Alta
R8. Aceitar alarmes como entrada (aceitar disparos
de alarme). Possuir um histórico dos alarmes ocorridos no sistema
é de vital importância para o ajuste de desempenho.
Prioridade: Alta
R9. Suportar intervalos variáveis de log. Diferentes sistemas possuem diferentes desempenhos e cargas de trabalho. A quantidade de dados e a precisão deles depende do tamanho deste período. Em situações especiais é preferível fazer este intervalo muito pequeno, como exemplo na ocasião em que um alarme acontece.
Prioridade: Baixa
R10. Suportar indicadores em tempo real de dados de desempenho. Este tipo de dado é crucial para diagnóstico de problemas transientes de desempenho.
Prioridade: Alta
R11. Suportar indicadores gráficos de dados em tempo real e históricos. Indicadores gráficos permitem que o operador rapidamente relacione as diferentes medidas em um problema de desempenho.
Prioridade: Alta
R12. Utilizar os dados das aplicações, Kernel e hardware como entrada. Problemas de desempenho são causados geralmente pelas características interrelacionadas de hardware, kernel e aplicações.
Prioridade: Alta
R13. Suportar ad hoc benchmarks. Problemas de desempenho são geralmente específicos de uma aplicação (software) e de sua carga de trabalho. O trabalho de ajuste recebe uma grande ajuda por cargas artificiais de trabalho que forçam o problema ocorrer no momento em que está sendo analisado (estudado). Quase todas as aplicações possuem uma forma de capturar as entradas dos usuários para um script.
Prioridade: Alta
R14. Remover os dados de pontos remotos para serem analisados. Os dados nem sempre podem ser analisados nos lugares onde foram coletados. Por falta de recursos é necessário levá-los para outros ponto onde possam ser analisados. Um exemplo pode ser um terminal X ou um dispositivo de carga de trabalho muito pesada.
Prioridade: Alta
R15. Permitir que o operador defina os dados que serão coletados e processados. Não é possível estabelecer os dados que serão necessários para todas as situações. Logo é desejável que o operador possa requisitar apenas aqueles relacionados com aquela situação.
Prioridade: Baixa
R16. Instalar ferramentas que permitam ao analista determinar especificamente quais aplicações estão consumindo quais recursos. Ferramentas que identificam processos "hog" são tão importantes quanto o dia-a-dia do gerenciamento de sistemas.
Prioridade: Alta
R17. O sistema deve ser capaz de funcionar normalmente (ininterruptamente) durante a coleta de dados e a análise.
Prioridade: Alta
5.1.3. Capacity Planning
Os dois maiores objetivos de um planejamento de capacidade são completar os serviços de forma satisfatória com um mínimo de capital (recursos) e custo de trabalho.
R18. Ferramentas de planejamento devem precisar e predizer a quantidade de hardware necessário para suportar uma determinada carga de usuários. Batch jobs devem ser considerados usuários com um profile especial.
Prioridade: Alta
R19. As ferramentas de planejamento de sistemas devem refletir a carga típica de aplicações comuns, mas devem também permitir cargas específicas. Isto se deve ao fato de sistemas possuirem uma variedade de usuários e aplicações.
Prioridade: Alta
R20. O conjunto de ferramentas de planejamento de capacidades deve ser capaz de usar dados armazenados para formar análise de desempenho com dados históricos.
Prioridade: Alta
R21. As ferramentas de planejamento devem ser capazes de fornecer tempos de resposta estimados para uma dada configuração de hardware a software.
Prioridade: Baixa
R22. As ferramentas devem permitir que os dados de saída sejam facilmente incorporados a um editor de texto.
Prioridade: Média
Simple Network Management Protocol (SNMP) Request
for Comments (RFC’s) podem ser obtidos via anonymous file transfer protocol
(FTP) em nnsc.nsf.net no diretório "rfc". Os nomes dos arquivos
estão em rfcnnnn.txt.
5.2. Benchmark
Quando você está em um processo para adquirir uma nova estação de trabalho, cada fornecedor mostram ter o melhor desempenho ou talvez o melhor preço. Frequentemente para dar cobertura a essas promessas, um benchmark, tal como o SPEC, é referenciado. O SPEC tem se tornado uma das formas padrão para se medir desempenho, no entanto ele não atinge os objetivos dos desempenhos de sistemas baseados em usuários e atividades do sistema. Isto porque o SPEC é utilizado em sistemas que não fazem parte de um ambiente que dispute recursos ou compartilhem memória. Recentemente, o benchmark AIM está sendo aceito como um Workload Performance Benchmark. O AIM tenta simular diferentes cargas de aplicações para determinar como o sistema se comporta num ambiente multi-usuário.
Uma vez que o sistema esteja instalado, as medições de desempenho tais como o SPEC (quiescent systems) são menos importante.
Para determinar quais dos recursos é fonte do gargalo, a investigação dessas quatro categorias abaixo é necessária.
6.1. Uso das técnicas e métodos
É fácil perceber que o trabalho de análise de desempenho e por conseguinte o seu ajuste depende de alguns fatores de uma administração de sistema. A utilização de métodos, técnicas, políticas e ferramentas para aumentar ou manter o desempenho satisfatório do sistema podem tranqüilamente ser atribuídas a requisitos e desejos listados nos próximos itens que englobam o trabalho de Análise de Desempenho.
6.1.1. Política de Utilização
Envolve a forma como o sistema será utilizado pelos usuários, operadores e administradores. A política de utilização deve ser determinada desde o planejamento do sistema até o uso no dia-a-dia. Regras de um bom uso das aplicações e recursos devem ser impostas alem de um treinamento para indicar aos usuários como tirar melhor proveito de suas aplicações. Mostrar como utilizar os dispositivos de hardware, também ajudam na manutenabilidade do sistema.
Auditorias periódicas no sistema sobre os usuários e aplicações também ajudam a corrigir problemas.
Portanto, só este ponto da análise
já gasta um tempo considerável de tempo e de conhecimento
das pessoas envolvidas na manutenção de um sistema de computação.
6.1.2. Planejamento do Sistema (Capacity Planning)
Como manter um bom serviço em um sistema multi-usuário
se a própria concepção da arquitetura de hardware
e software do sistema já está comprometida desde a
sua instalação. O planejamento permitirá que os ajustes
do dia-a-dia sejam mais rápidos e fáceis, e o mais importante,
comportará o crescimento da rede com a nova quantidade de usuários,
número de dispositivos de hardware, aplicações e disponibilização
de novos serviços. Isto permitirá um uso dos dispositivos
mais racionalmente e a aquisição de novos dispositivos de
hardware e software mais precisa, diminuindo os custos do
processo de expansão.
6.1.3. Ajustes de desempenho (Performance
Tuning)
O gerenciamento em tempo real (on the fly). É a manutenção diária do sistema com a utilização dos dispositivos do sistema, ferramentas comerciais e o bom senso do operador (administrador) e usuários. Permite que o nível de trabalho disponível no sistema se mantenha satisfatório sem catástrofes inesperadas e que os problemas presentes sejam esperados.
6.1.4. Aquisição, Troca e Atualização de hardware e software
É o último estágio na manutenção
de um sistema de computação, a compra de equipamentos (hardware
e software) deve fazer parte da expansão natural da rede
e não ser utilizada como solução única dos
problemas. No entanto, problemas de desempenho podem ter causa única
devido a obsolescência ou carga inadequada de dispositivos de hardware
e de software para o sistema, o caso inverso também deve ser evitado,
pois o super dimensionamento de dispositivos leva a custos maiores sob
a alegação de planejamento para uma expansão futura.
[Coulouris, 1996]
Coulouris, George; Dollimore, Jean; Kindberg, Tim. (1996). Distributed Systems Concepts and Design. 2ª Edição. Addison-Wesley.
[Cervone, 1998]
Cervone, H. Frank. (1998). Solaris Performance Administration Performance Measurement, Fine Tuning, and Capacity Planning for Releases 2.5.1. and 2.6. McGraw-Hill.[Frisch, 1995]
Frisch, Aeleen. (1995). Essential System Administration. 2ª Edição. O’Reilly.[Loukides, 1990]
Loukides, Mike. (1990). System Performance Tuning. O’Reilly & Associates, Inc.[Tanenbaum, 1996]
Tanenbaum, Andrew S. (1996). Computers Networks. 3ª Edição. Prentice Hall PTR.
Copyright - Solaris, Sun Microsystems, Inc.Copyright - EmacsCopyright - UNIXCopyright - PerformanceWorksTM SmartWatch, Landmark Systems Corporation.Copyright - TivoliCopyright - Computers Associates