domingo, 15 de maio de 2016

ENDERÇEO IP, MÁSCARA DE SUB-REDE E SUB-REDES



Veja bem. Essa divisão de máscara e sub máscara serve facilitar a transmissão. Se meu computador estiver na mesma rede que outro computador, ele só precisa conhecer o endereço de host para se comunicarem.


1. O ENDEREÇO IP

Tudo começa em como um endereço IP é estruturado. Lembre-se que salvo alguns casos especiais, cada endereço IP é único em todo o mundo. E em qualquer caso, não pode existir dois endereços IPs iguais na mesma rede, isso gera um erro chamado "Conflito de IPs".

 Um endereço IP é composto por um número de 32 bits (4 bytes) separados em 4 grupos de 8 bits (1 byte cada).

--
ex
Em Decimal = 189.6.76.152
Em Binário = 10111101.00000110.01001100.10011000
--

Esse numero do endereço é separado em duas parte. Uma parte é chamado endereço de rede e a outra parte é chamado endereço de host (host é qualquer dispositivo que transmite e/ou recebe dados na rede).

Quem define qual parte é o endereço de rede e qual parte é o endereço de host é a Máscara de sub-rede.


2. A MÁSCARA DE SUB-REDES

A máscara de sub-rede é um número de 32 bits que possui vários 1's da esquerda para a direita.

--
Ex.
Em binário = 11111111.11111111.00000000.00000000
Em decimal = 255.255.0.0
Abreviado = /16
--

Por causa do tanto de 1's é normal uma abreviação. No exemplo acima, a máscara 255.255.0.0 pode ser abreviada por /16 porque possui 16 números 1's. uma máscara /28 = 11111111.11111111.11111111.11110000 = 255.255.255.240

--
Por exemplo:
o endereço = 189.6.76.152
e a máscara = 255.255.255.240

Pode ser representado por 189.6.76.152/28
--

A máscara de sub-rede (ou somente máscara) divide o endereço em dois: O endereço da rede e o endereço do host. No exemplo acima, se colocarmos a máscara de sub rede embaixo do endereço IP e aplicarmos uma operação lógica "AND" obtemos o endereço de rede. Ou seja, o endereço de rede serão os n bits do lado esquerdo do endereço IP, onde n é o número de 1's da máscara.

--
ex:
189.6.76.152/16

10111101.00000110.01001100.10011000 Endereço IP
AND
11111111.11111111.00000000.00000000 Máscara
-----------------------------------
10111101.00000110.00000000.00000000 Rede
(16 bits, o resto é zero)

Então o endereço de rede é 189.6.0.0/16
--

É muito importante você escrever a máscara junto com o endereço de rede porque podem existir ao mesmo tempo duas redes iguais, porém com mascaras diferente.

O endereço de Host se obtém com a operação "XOR" (OU exclusivo) do endereço de rede com o endereço IP. Que são os bits restantes, neste caso 0.0.76.152

--
Ex.
10111101.00000110.01001100.10011000 Endereço IP
XOR
10111101.00000110.00000000.00000000 Rede
-----------------------------------
00000000.00000000.01001100.10011000 Host
em decimal = 0.0.76.152
--

Assim, o endereço IP é uma operação "OR" da Rede com o Host.

--
Ex.
Endereço de rede 189.6.0.0/16
Enderçeo de Host 0.0.76.152

10111101.00000110.00000000.00000000 - Rede
OR
00000000.00000000.01001100.10011000 - Host
-----------------------------------
10111101.00000110.01001100.10011000 - Endereço IP
--


3. EXEMPLOS

1)
Endereço 200.200.100.100/18
11001000.11001000.01100100.01100100/18

a máscara é 11111111.11111111.11000000.000000 (dezoito 1's)
em decimal = 255.255.192.0

são 18 bits da esquerda para a rede e o restante 32-18 = 14 bits (32 é o numero total de bits)... 14 bits da direita são para os host.

endereço de rede =
200.200.64.0/18 (18 bits)
11001000.11001000.01000000.00000000

endereço de host =
0.0.36.100 (14 bits)
00000000.00000000.00100100.01100100

2)
69.1.87.20/12
01000101.00000001.01010111.00010100/12

a máscara é 11111111.11110000.00000000.00000000 (doze 1's)
em decimal 255.252.0.0

endereço de rede =
69.0.0.0/12 (12 bits)
01000101.00000000.00000000.00000000

endereço de host =
0.0.39.122 (20 bits)
00000000.00000001.01010111.00010100

3)
Endereço
192.168.100.10/24
11000000.10101000.01100100 .00001010/24

Máscara
255.255.255.0
11111111.11111111.11111111.00000000

Endereço de rede
192.168.100.0/24
11000000.10101000.01100100.00000000

Endereço de Host
0.0.0.10
00000000.00000000.00000000.00001010


4. ENDEREÇOS ESPECIAIS

Cada rede comporta um numero de computadores conectados de acordo com sua máscara de sub-rede.

--
por exemplo:
A rede 192.168.0.0/16 possui 16 bits para a rede e 16 bits para os Hosts, isso quer dizer que esta rede pode ter até no máximo 65536 endereços que vão do 192.168.0.0 até o 192.168.255.255.
--

Porém, o primeiro endereço (192.168.0.0) e o último (192.168.255.255)são endereços especiais.

O de final zero é reservados para os endereços de rede (nesse caso para a própria rede 192.168.0.0/16) e os endereços de final 255, por exemplo 192.168.255.255, que são reservados para uma coisa chamada Broadcast (discutiremos isso outra hora).

Tirando esses dois endereços, todos os outros endereços de Host podem ser usados em computadores na mesma rede. Então dos 65536 endereços, apenas 65534 podem ser utilizados.

--
Por exemplo

A rede 71.34.0.0/18
Possui 18 bits para rede e 14 bits para Host. 2^(14) = 16384
Essa rede possui 16384 endereços. Mas como dois são especiais, há 16382 endereços de host.
Se você fizer as contas, verá que os endereços vão de 71.34.0.1 até 71.34.63.254.
--


5. SUB REDES

As vezes uma rede tem uma quantidade muito grande de endereços disponível e para evitar desperdício de endereços (ou seja, muitos endereços não utilizados) é melhor sub dividir uma rede em redes menores. Essas são as sub-redes.

A gente obtém uma sub-rede pegando o endereço de Host e dividindo novamente em sub-rede e host.

OBS. Você só pode dividir em 2^x sub redes, onde x é o numero de bits que vc usa para sub redes. Não tem como dividir em 3 sub redes. tem que arredondar pra cima. Tipo, se vc precisa dividir em 6 sub redes, não dá. Tem que dividir em 8 ou em 4.

--
Exemplo 1
192.168.34.0/24
11000000.10101000.00100010.00000000 Rede
11111111.11111111.11111111.00000000 Mascara
00000000.00000000.00000000.XXXXXXXX Host

Possui 8 bits para Host = 256 endereços.

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Dividindo em 4 sub-redes:
pegamos dois bit porque 2^2 = 4
00000000.00000000.00000000.SSXXXXXX

Assim teremos 6 bits para hosts que dará 64 endereços em cada rede. Mas como dois endereços de cada sub rede são especiais (endereço de rede e endereço de broadcast), cada sub-rede poderá conectar 62 dispositivos totalizando 248 dispositivos nas quatro sub-redes.

|Rede 192.168.34.0/24
||192.168.34.0/26 -> Endereço de rede /25 = 24 + 2
||.
||. (Sub-Rede 1)
||.
||192.168.34.63 -> Endereço de Broadcast
||
||192.168.34.64/26 -> Endereço de rede /26 = 24 + 2
||.
||. (Sub-Rede 2)
||.
||192.168.34.127 -> Endereço de Broadcast
||
||192.168.34.128/26 -> Endereço de rede /26 = 24 + 2
||.
||. (Sub-Rede 3)
||.
||192.168.34.191 -> Endereço de Broadcast
||
||192.168.34.192/26 -> Endereço de rede /26 = 24 + 2
||.
||. (Sub-Rede 4)
||.
||192.168.34.255 -> Endereço de Broadcast

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Dividindo em 64 sub-redes (O máximo possível):
pegamos seis bit porque 2^6 = 64
00000000.00000000.00000000.SSSSSSXX

Assim teremos 2 bits para hosts que dará 4 endereços em cada rede. Mas como dois endereços de cada sub rede são especiais (endereço de rede e endereço de broadcast), cada sub-rede poderá conectar 2 dispositivos (veja que vai sobrar apenas 2 endereços para os dispositivos e não tem jeito de sobrar menos) totalizando 128 dispositivos nas duas sub-redes.

Os endereços 192.168.34.0, 192.168.34.127, 192.168.34.128 e 192.168.34.255 são os endereços especiais.

|Rede 192.168.34.0/24
||192.168.34.0/30 -> Endereço de rede /30 = 24 + 6
||.
||. (Sub-Rede 1)
||.
||192.168.34.3 -> Endereço de Broadcast
||
||192.168.34.4/30 -> Endereço de rede /30 = 24 + 6
||.
||. (Sub-Rede 2)
||.
||192.168.34.7 -> Endereço de Broadcast
||
||.
||.
||.
||
||192.168.34.252/30 -> Endereço de rede /30 = 24 + 6
||.
||. (Sub-Rede 64)
||.
||192.168.34.255 -> Endereço de Broadcast


--
Exemplo 2:

A rede 71.34.0.0/18 possui 14 bits para os host. Podemos dividi-los em 64 redes menores pegando os 6 bits do endereço de host (2^6=64) para usar como sub redes e os bits restantes (8 bits) serão 256 endereços dentro dessa sub-rede. Mas como dois endereços são especiais, cada sub-rede terá no máximo 254 hosts.

71.34.0.0/18 Rede e Máscara
01000111.00100010.00000000.00000000 -> Rede
11111111.11111111.11000000.00000000 -> Mascara
00000000.00000000.00XXXXXX.XXXXXXXX -> Hosts

00000000.00000000.00SSSSSS.XXXXXXXX
Pego 6 bits para sub-redes (S) teremos 2^6=64 sub redes
Cada sub-rede terá 8 bits de hosts = 2^8 = 256 endereços.
Como dois endereços são especiais, cada sub-rede pode conectar 254 dispositivos.
--

"Esse resumo foi feito com base em memórias sem nenhuma referência específica, mas de acordo com o que eu me lembrava do Tanenbaum, Kurose, Soares, Fourozan, Wikipedia, Cormer, etc."

segunda-feira, 4 de abril de 2016

Corrigindo codificação e idioma em Latex

Minha orientadora sugeriu usar o Overleaf para terminarmos um artigo em Latex. É uma ótima ferramenta para trabalho colaborativo, mas tive alguns problemas com a codificação dos caracteres após a compilação. Sem muito esforço consegui solucionar adicionando ao preâmbulo do documento os seguintes pacotes:

\usepackage[brazilian]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
Não sou expert em Latex a ponto de descrever cada um destes pacotes, mas sei que são responsáveis pela codificação dos caracteres, substituindo o uso de macros (\'a por á) e a linguagem de alguns elementos como Capítulo em vez de Chapter, por exemplo, não necessariamente nesta ordem.

Achei essa dica em https://aleteia.wordpress.com/2008/07/30/latex_e_acentos/

Mas caso a opção brazilian estiver com erro, talvez o pacote de língua portuguesa não está instalado. Procure instalar o pacote faltando. No ubuntu 16.04.1 o comando é:

sudo apt-get install texlive-lang-portuguese


quinta-feira, 25 de abril de 2013

Resumo: Art of Computer Systems Performance Analysis: Techniques for Experimental Measurements Simulation and Modeling - Capítulo 2



Livro: "Art of Computer Systems Performance Analysis: Techniques for Experimental Measurements Simulation and Modeling" de Raj Jain

 Resumo do capítulo 2:

 
CAPÍTULO 2. – ERROS COMUNS E COMO EVITÁ-LOS
Este capítulo inicia com uma lista de erros comumente observados em projetos de avaliação de desempenho, em seguida é então formulado um resumo da avaliação de desempenho, os passos para uma correta avaliação de desempenho e em que ordem devem ser executados.
2.1 - Erros comuns em avaliação de desempenho
Diferentemente do “Game Ratio” do capítulo anterior, a maioria dos erros não são intencionais. São causados por descuido, equívocos e falta de conhecimentos sobre as técnicas de avaliação de desempenho.
1.       FALTA DE OBJETIVOS: Qualquer projeto sem metas não deve funcionar. Parece obvio, mas muitos projetos se iniciam sem objetivos claros. Modelos de propósito gerais não existem. Não há como o modelo ser flexível suficiente para ser facilmente modificado para diferentes problemas. Cada modelo deve ter um objetivo específico. Métricas, carga de trabalho e toda a metodologia dependem do objetivo. Cada problema possui uma área diferente a ser observada. Antes de qualquer modelagem, é importante que o projetista entenda o sistema e identifique o problema. E encontrar um objetivo não é uma tarefa simples. A maioria dos problemas são bastante vagos no início, então encontrar um conjunto de objetivos é bastante difícil. Uma vez que se entende o problema e seu objetivo foi definido fica mais fácil encontrar uma solução.
2.       OBJETIVOS TENDENCIOSOS: Principalmente quando uma comparação é feita na forma de competição, as métricas, funções, cargas, etc, podem ser escolhidas visando um resultado que favoreça um lado e não o de encontrar o melhor modelo para comparar os sistemas. Assim, o analista deve ser imparcial.
3.       ABORDAGEM SEM MÉTODO: Muitos analistas adotam uma abordagem sem sistemática onde os parâmetros, fatores, métricas e cargas são escolhidos arbitrariamente, levando a resultados imprecisos. Um método bem definido ajuda na escolha de um conjunto completo de todos esses elementos
4.       ANÁLISE SEM ENTENDIMENTO DO PROBLEMA: Uma grande parte do esforço da análise está em definir o problema. Desenvolver um modelo é apenas uma parte do problema. Modelos são a ferramenta para alcançar as conclusões. Pessoas que precisam fazer decisão muitas vezes ignoram um trabalho que foca apenas na sistemática, pois não precisam apenas de um modelo, mas um guia.
5.       MÉTRICAS DE DESEMPENHO INCORRETAS: Métricas são critérios usados para quantificar o desempenho do sistema. A escolha da métrica correta depende do serviço oferecido pelo sistema em questão. Assim, manipular a escolha da métrica pode mudar a conclusão de um estudo de desempenho. Outro erro bastante comum é escolher apenas métricas fáceis de medir ou computar e ignorar as mais difíceis.
6.       CARGA DE TRABALHO REPRESENTATIVA: A carga usada para comparar dois sistemas deve ser capaz de representar o atual uso do sistema em estudo. Seu uso de forma inadequada levará a resultados imprecisos que não representa o real funcionamento do sistema.
7.       TÉCNICA DE AVALIAÇÃO ERRADA: Há três técnicas de avaliação: medição, simulação e modelagem. Se o analista tiver preferência por alguma técnica, mesmo que seja mais fácil utilizar outra pode levar a melhores resultados do que de outra forma, mas também pode causar problemas introduzindo fenômenos que antes não estavam presentes ou ignorando algum fenômeno importante no sistema original. Por isso a necessidade de dominar o básico das três técnicas. Há número de fatores a ser considerado na escolha da técnica correta.
8.       SUPERVALORIZAR IMPORTANTES PARAMETROS: É uma boa ideia fazer uma lista completa das características da carga e do sistema que afetam seu desempenho. Estas características chamam-se parâmetros. O analista então escolhe um conjunto de valores para cada um destes parâmetros. O resultado final depende destas escolhas. Supervalorizar um ou os parâmetros mais importantes pode tornar todo resultado inútil.
9.       IGNORAR FATORES SIGNIFICANTES: Um parâmetro que pode variar durante o estudo é chamado de fator. O restante dos parâmetros permanecem com valores fixos. Não são todos os fatores que afetam significativamente o desempenho do sistema. É necessário identificar os fatores que sejam relevantes para o desempenho. A menos que haja uma razão, estes parâmetros devem ser usados como fator no estudo de desempenho. Fatores que estão sob o controle do usuário final são facilmente manipuláveis e devem ter prioridade a fatores que são mais difíceis de serem alterados. Não gaste tempo comparando alternativas que o usuário final não pode adotar por envolver ações inaceitáveis ou fogem da sua esfera de influência. Também é importante conhecer a aleatoriedade de vários parâmetros e cargas que afetam o desempenho, pois a escolha dos fatores deve ser feita baseada em sua relevância e não no conhecimento do fator. Deve ser feito todo esforço para gerar resultados realistas de todos os para metros. Para parâmetros desconhecidos deve ser feita uma sensível análise mostrando o efeito de mudar seus valores para quantificar o impacto de sua incerteza.
10.   PROJETO EXPERIMENTAL INADEQUADO: Projetos experimentais relatam o numero de medidas ou experimentos de simulação para serem conduzidos e os valores dos parâmetros usados em cada experimento. A escolha correta destes valores pode gerar mais informações em um mesmo numero de experimentos enquanto seleções impróprias pode gerar perda de tempo e recurso. Além disso, projetos muito simples onde os fatores são alterados um por um pode levar a conclusões errôneas se o efeito de um depende dos valores de outros.
11.   NÍVEL DE DETALHE INADEQUADO: o nível de detalhe usado na modelagem de um sistema tem muito impacto na formulação do problema. Para estudar pequenas variações de uma abordagem comum, usar um modelo detalhado pode ser mais útil, mas em situações muito diferentes um modelo de alto nível pode ser analisado mais rápido e de forma mais barata. É um erro comum criar um tipo de modelo quando a situação pede outro tipo. Assim, o objetivo de um estudo tem um impacto significativo no modelo e como ele é analisado.
12.   SEM ANALISE: Um erro muito comum em projetos de medição é quando se gera uma enorme quantidade de dados, mas o analista não consegue direcionar seu uso. Ema alguns casos um grande relatório cheio de dados brutos são apresentados sem nenhuma explicação de como se usa os resultados.
13.   ANÁLISE ERRADA: Há um número de erros de análises feitas em medidas, simulações e modelos analíticos, como considerar médias em taxas ou simulações muito curtas. Estes erros são discutidos ao longo do livro quando for tratada cada técnica.
14.   SEM ANALISE DE SENSIBILIDADE: Às vezes o analista coloca muita ênfase no resultado da sua análise e esquece o valor do sistema ou da carga de entrada. Sem uma análise da sensibilidade não é possível determinar se o resultado pode variar com pequenas mudanças no cenário e sem a análise de sensibilidade é difícil entender a relativa importância dos parâmetros.
15.   IGNORAR ERROS DE ENTRADA: muitas vezes um parâmetro de interesse não pode ser medido. Em vez disso outra variável que pode ser medida serve de base para estimar o parâmetro. Isso pode introduzir incertezas nos dados de entrada e consequentemente nos dados de saída. O analista precisa ajustar o nível de confiança do resultado do modelo a partir dessa informação. Além disso, pode ser que não valha a pena produzir esses dados com precisão se a entrada for significativamente grande a ponto das variações não produzirem diferença. Nem sempre erros de entrada podem ser igualmente distribuídos em torno da média gerando uma entrada tendenciosa.
16.   TRATAMENTO INDEVIDO DAS DISCREPÂNCIAS: Valores que fogem da média são chamados de discrepantes. Essas discrepâncias podem representar um problema. Se essa discrepância não for causada pelo sistema real, deve ser ignorada, pois incluí-la pode produzir um modelo inválido. Por outro lado, se a discrepância ocorre no modelo real, deve ser levado em conta ou o modelo será considerado errado. Decidir quais discrepâncias devem ser ignoradas e quais devem ser incluídas é parte da avaliação de desempenho e requer um cuidadoso entendimento do sistema que está sendo modelado.
17.   NÃO ASSUMIR MUDANÇAS NO FUTURO: Isto quer dizer que o modelo funcionará tanto no futuro quanto no passado. Um modelo baseado em carga e desempenho observados no passado é usado para prever a o desempenho no futuro. E tanto a carga quanto o comportamento do sistema no futuro será o mesmo do medido atualmente. O analista deve considerar essa suposição e limitar a quantidade de tempo que a previsão é feita.
18.   IGNORAR VARIABILIDADE: É comum o analista utilizar apenas a média do desempenho quando a variabilidade é muito complicada ou impossível. Se a variabilidade for muito alta, a média sozinha pode ser enganosa, principalmente em sistemas em que há momentos de picos e momentos de ociosidade, podendo impactar o desempenho do usuário.
19.   ANÁLISE MUITO COMPLEXA: Sempre é preferível que se explique o resultado com o modelo mais simples possível. Muitos problemas do dia a dia são resolvidos por modelos simples, mesmo que no meio acadêmico se valorize modelos mais complexos. No mercado de trabalho onde o tempo é essencial, desenvolver um modelo funcional e simples o suficiente que seja fácil de comercializar dentro de um tempo hábil é mais valorizado. O ideal é começar com um modelo simples e após os primeiros resultados, inserir as complicações. Modelos complexos também podem ser difíceis de entender para quem realmente toma as decisões e seus resultados podem não ter credibilidade.
20.   APRESENTAÇÂO DOS RESULTADOS INDEVIDA: Ocasionalmente o estudo de desempenho ajuda na tomada de decisões. Uma análise que não produza resultados ou uma análise em que os resultados são difíceis de entender resulta e um uma falha e a entidade que toma decisões pode não conseguir projetar, vender ou conseguir patrocínio. Transmitir os resultados para os tomadores de decisão é responsabilidade do analista, por isso deve-se tomar cuidado com as palavras, imagens e gráficos explicando a análise. “A métrica para o desempenho de uma análise não é o numero de análises feitas, mas sim o número de análises que ajuda na tomada de decisão”.
21.   IGNORAR OS ASPECTOS SOCIAIS: Uma boa apresentação do resultado da análise querer dois tipos de habilidades: sociais e materiais. Escrever e falar são habilidades sociais enquanto modelar e analisar são habilidades materiais. Muitos analistas possuem suas habilidades materiais bem desenvolvidas, mas na hora de apresentar os resultados não tem boas habilidades sociais. A aceitação da análise depende da confiança entre quem toma decisões e o analista e a apresentação dos resultados é uma forma de compreendê-lo. Assim as habilidades sociais são importantes para apresentar resultados que são contra o que quem toma decisão acredita ou para grandes mudanças em projetos. Porém, em alguns casos, a pessoa que verá a apresentação do analista também é um analista e está mais interessado na metodologia adotada do que no resultado final. Nesse caso pode ser interessante fazer duas apresentações: uma focando a linguagem, crença e jargões dos tomadores de decisões e outra focando a metodologia. Às vezes os tomadores de decisões possuem objetivos diferentes que não são interessantes para o analista, como cronograma, política ou viabilidade de implementação e podem ser ótimos em analisar os resultados, mas não entender a análise em si. Um esforço em entender seus interesses e incorpora-los na apresentação pode aumentar suas chances de vender seu peixe.
22.   OMITIR HIPÓTESES E LIMITAÇÕES: Muitas vezes o analista omite suposições e limitações no relatório final. Isso pode levar usuários a usar a análise em outro contexto que não é válido, ou mesmo o analista cria uma teoria no início, mas se esquece das limitações fazendo conclusões sobre ambientes que a análise não se aplica.

A seguir tem-se um checklist de perguntas que devem ser respondidas afirmativamente em uma análise de desempenho.
1.       O sistema foi definido corretamente e os objetivos estão claros?
2.       Os objetivos foram definidos de forma imparcial?
3.       Seguiu todos os passos da análise metodicamente?
4.       O problema foi compreendido antes da análise?
5.       As métricas de desempenho são relevantes para este problema?
6.       A carga de trabalho (entrada) está correta neste problema?
7.       A técnica de avaliação usada é apropriada?
8.       Possui uma lista de parâmetros que afetam o desempenho do sistema?
9.       Da lista de todos os parâmetros, foram escolhidos os fatores que serão variados?
10.   O projeto experimental é eficiente em termo de tempo e resultados?
11.   O nível de detalhamento é ideal?
12.   Os dados medidos são apresentados com análise e interpretação?
13.   A análise está estatisticamente correta?
14.   A análise de sensibilidade foi feita?
15.   Erros na entrada causam significantes alterações no resultado?
16.   As discrepâncias na entrada ou saída foram corretamente tratados?
17.   Foram modeladas as futuras mudanças na carga e no sistema?
18.   A variância da entrada foi levada em conta?
19.   A variância dos resultados foi levada em conta?
20.   A análise é de fácil explicação?
21.   O estilo da apresentação está de acordo com sua audiência?
22.   Os resultados foram apresentados graficamente tanto quanto possível?
23.   As teorias e limitações da análise foram claramente documentadas?

2.2 - Uma abordagem sistemática da avaliação de desempenho
A maioria dos problemas de desempenho são únicos. Os parâmetros usados em um projeto não podem ser usados em outros, mas alguns passos são comuns a todos para evitar os erros da seção anterior.
1.       DECLARE OBJETIVOS E DEFINA O SISTEMA: O primeiro passo é declarar quais são os objetivos da avaliação assim como limites do sistema. Esse limite depende do objetivo do estudo. A escolha destes limites afetam as métricas de desempenho assim como a carga que será usada para comparar os sistemas, por isso é importante entender o sistema. Outras considerações também devem ser feitas, como o controle administrativo. Se os patrocinadores (sponsors) não tiver controle sobre algum componente, eles podem querer manter este componente fora do sistema.
2.       LISTAR SERVIÇOS E RESULTADOS: cada sistema provê um conjunto de serviços. Quando um usuário requer algum destes serviços, diversos tipos de resultados são possíveis. E alguns destes resultados são desejáveis, outros não. Então uma lista dos serviços e saídas são uteis para determinar a correta métrica e cargas.
3.       SELECIONAR MÉTRICAS: O próximo passo é selecionar os critérios para comparar o desempenho. Esses critérios são chamados de métrica. Normalmente estão relacionadas à velocidade, precisão ou disponibilidade dos serviços. A seleção correta das métricas é discutida no capítulo 3
4.       LISTAR PARÂMETROS: o próximo passo é listar todos os parâmetros que afetam o desempenho. Divide-se em parâmetros do sistema e parâmetros da carga (parâmetros da carga são as características das requisições dos usuários). No início a lista não estará completa, mas depois da primeira análise novos parâmetros podem ser adicionados. O ideal é que a lista esteja sempre atualizada e de fácil compreensão para que se possa discutir o impacto de vários parâmetros e que dados devem ser coletados antes e durante a análise.
5.       SELECIONAR OS FATORES DO ESTUDO: Os parâmetros que variam podem variar no sistema se chamam fatores e seus valores se chamam níveis. No geral a lista de fatores é muito grande. O ideal é considerar apenas um pequeno úmero de fatores que afetam muito o desempenho do sistema e manter com valores fixos o restante. Um erro comum é escolher como fatores parâmetros de fácil medição e ignorar outros às vezes mais influentes apenas por ser difícil de medir ou variar. A escolha dos fatores também deve levar em conta a economia, política e as limitações impostas por quem toma decisão. Isto ajuda a encontrar uma solução que é aceitável e implementável.
6.       ESCOLHER A TÉCNICA DE AVALIAÇÃO: Há três técnicas para avaliação do desempenho: simulação, medição de um sistema real e modelagem analítica. A seleção da técnica depende do nível desejado de precisão assim com dos recursos avaliados para resolver os problemas. A seleção das técnicas está avaliada no capitulo 3
7.       SELECIONAR A CARGA DE TRABALHO: A carga de trabalho consiste em uma lista de serviços solicitados ao sistema. Ela depende de cada técnica de avaliação escolhida. Em todo caso é essencial que a carga represente o uso do sistema na vida real e para produzir uma carga representativa é necessário medir e caracterizar a carga em um sistema já existente.
8.       PROJETAR EXPERIMENTOS: Com os fatores e seus níveis definidos é necessário decidir uma sequencia para que o experimento forneça o máximo de informação com o mínimo de esforço. Na pratica é interessante conduzir o experimento em duas partes. Uma primeira parte com um grande número de fatores, mas um pequeno número de níveis. Sem seguida é escolhido os fatores que mais afetam o sistema e então gerados um maior numero de níveis a eles.
9.       ANALISAR E INTERPRETAR DADOS: É importante reconhece que a saída das medidas e simulações são quantidades aleatórias e que variam quando o experimento é repetido. Ao comprar duas alternativas é necessário levar em conta a variabilidade dos resultados, pois comparar as médias pode resultar em conclusões imprecisas. E interpretar é a chave da “arte da análise”. O experimento em si não gera conclusões, apenas resultados e são este resultados que farão com que o analista ou o tomador de decisão chegar a uma conclusão. E ainda existe a possibilidade de vários analistas obterem o mesmo resultado, porém tirarem conclusões diferentes.
10.    APRESENTAR OS RESULTADOS: No fim de todos os passos do projeto de desempenho, é necessário comunicar a comunidade os resultados. É importante que os resultados sejam fáceis de entender. Normalmente são apresentados na forma de gráfico e sem jargão estatístico em suas escalas corretas. Outro ponto é que, com o conhecimento obtido no estudo pode ser necessário redefinir alguma decisão dos passos anteriores como redefinir as limitações e os fatores, por exemplo. Isso leva a conclusão que o projeto completo consiste em vários ciclos e não em uma simples sequencia de passos.
Resumindo:
1.       Definir os objetivos do estudo e limitações do sistema.
2.       Listar serviços e possíveis saídas.
3.       Selecionar métricas de desempenho
4.       Listar parâmetros da carga e do sistema
5.       Selecionar fatores e seus níveis
6.       Selecionar a técnica de avaliação
7.       Selecionar a carga de trabalho
8.       Projetar o experimento
9.       Analisar e interpretar os dados.
10.   Apresentar os resultados ou fazer de novo, se necessário.

sexta-feira, 12 de abril de 2013

Resumo: Art of Computer Systems Performance Analysis: Techniques for Experimental Measurements Simulation and Modeling - Capítulo 1



Livro: "Art of Computer Systems Performance Analysis: Techniques for Experimental Measurements Simulation and Modeling" de Raj Jain

Formato: CHM

http://www.4shared.com/file/VgR6Arts/Art_of_Computer_Systems_Perfor.htm

 
(Leia abaixo o resumo do Capítulo 1)

O Objetivo do livro é explicar os termos e as técnicas de avaliação de desempenho com ênfase em técnicas simples para solução de problemas, avaliação de arquiteturas alternativas, comparação de dois ou mais sistemas, determinar o melhor valor de um parâmetro, encontrar gargalos, caracterização de carga (entrada do sistema), número de componentes (capacidade de planejamento) e prever futuras cargas, onde endende-se que sistema quer dizer qualquer conjunto de hardware, software e firmware.

Objetivos após ler esse livro:

1.      Selecionar a técnica de avaliação, métricas de desempenho e cargas de trabalho ideais: Técnicas de medida e avaliação de desempenho que devem ser usadas para análise de desempenho e modelagem analítica. (Parte I)

2.      Conduzir medidas de desempenho corretamente: Escolher as melhores técnicas e ferramentas (entre monitores e geradores de carga) para medição de desempenho em cada caso corretamente. (Parte II)

3.      Usar as técnicas estatísticas próprias para comparar diversas alternativas: A maioria das avaliações de desempenho consiste em encontrar a melhor alternativa entre todas. As técnicas estatísticas usadas para comparar diversas situações são discutidas na Parte III.

4.      Projetar medidas e simular experimentos para prover a maior quantidade de informações com o mínimo de esforço: Projetar experimentos e técnicas para organizar experimentos para obter o máximo de informações com um número mínimo de experimentos apresentados. (Parte IV)

5.      Executar a simulação corretamente: Determinar questões como a linguagem da simulação, assim como seeds e algoritmos para geração de números aleatórios, comprimento da simulação e analisar o resultado da simulação. (Parte V)

6.      Usar modelos de fila simples para analisar o desempenho de sistemas: Diferentes tipos de filas e redes de fila. Modelos de filas em modelagem analítica de sistemas de computadores. (Parte VI)

A arte da avaliação de desempenho.

A avaliação do desempenho de um sistema pode ser considerada uma arte. Uma avaliação não pode ser efetuada mecanicamente, isto é, depende da interação com o conhecimento de quem avalia. Dado um mesmo dado, dois analistas podem interpreta-los diferentemente. Isso pode gerar um problema chamado de Disputas de Razão ("Ratio Game"). Algumas podem ser propositais ou resultado da falta de conhecimento e da metodologia correta.