{"id":640,"date":"2013-10-10T17:45:46","date_gmt":"2013-10-10T20:45:46","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=640"},"modified":"2013-10-10T17:45:46","modified_gmt":"2013-10-10T20:45:46","slug":"bottlenecks-metricas-de-performance-de-servidores","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=640","title":{"rendered":"Bottlenecks &#8211; M\u00e9tricas de performance de servidores"},"content":{"rendered":"<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><b>M\u00e9tricas para avalia\u00e7\u00e3o de performance &#8211; An\u00e1lise de utiliza\u00e7\u00e3o de disco<\/b><\/p>\n<div>Ter um servidor bem dimensionado que suporte uma aplica\u00e7\u00e3o para um ambiente produtivo empresarial de mais de 30.000 usu\u00e1rios \u00e9 um desafio. O que fazer para obter confian\u00e7a, performance, desempenho e sossego na manuten\u00e7\u00e3o? A resposta \u00e9 investir em testes de performance. Os testes de performance certificar\u00e3o que o hardware escolhido ir\u00e1 suprir as necessidades da aplica\u00e7\u00e3o e do ambiente produtivo da empresa.<\/p>\n<p>Para realizar estes testes, antes, \u00e9 necess\u00e1rio criar as m\u00e9tricas que ser\u00e3o observadas e mensuradas durante os testes. \u00c9 sobre isso que trata esse artigo.<\/p>\n<p>As m\u00e9tricas aqui identificadas poder\u00e3o servir como verificadores de exist\u00eancia de bottlenecks em um equipamento dimensionado para um ambiente produtivo com S.O.\u00a0<a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>.<\/p>\n<p>M\u00e9tricas para avalia\u00e7\u00e3o de performance &#8211; An\u00e1lise de utiliza\u00e7\u00e3o de disco:<\/p>\n<p><em>Physical Disk Read Latency Analysis<\/em>: Esta m\u00e9trica corresponde \u00e0 m\u00e9dia da velocidade de leitura de uma parti\u00e7\u00e3o prim\u00e1ria de uma unidade de disco r\u00edgido. Esta an\u00e1lise determina se uma unidade de disco r\u00edgido est\u00e1 respondendo em uma velocidade lenta. Se o tempo de resposta permanecer entre 0.015 e 0.025 milissegundos ent\u00e3o o sistema de leitura do disco r\u00edgido est\u00e1 respondendo de forma normal. Por\u00e9m, caso a aferi\u00e7\u00e3o seja superior a 0.025 milissegundos ent\u00e3o o disco r\u00edgido estar\u00e1 respondendo lentamente caracterizando um bottleneck de leitura de disco r\u00edgido.\u00a0<!--more--><\/p>\n<p><em>Physical Disk Write Latency Analysis<\/em>: Afere a m\u00e9dia da velocidade de grava\u00e7\u00e3o em uma parti\u00e7\u00e3o prim\u00e1ria de uma unidade de disco r\u00edgido. Esta an\u00e1lise determina se uma unidade de disco r\u00edgido est\u00e1 gravando os dados de forma lenta demais. Como ocorre com a lat\u00eancia de leitura, o recomendado \u00e9 que os valores permane\u00e7am entre 0.015 e 0.025 milissegundos para que se possa homologar como uma situa\u00e7\u00e3o normal, por\u00e9m a aferi\u00e7\u00e3o superior a 0.025 caracterizar\u00e1 um bottleneck.<\/p>\n<p><em>Logical Disk Read Latency Analysis<\/em>: Esta m\u00e9trica corresponde \u00e0 m\u00e9dia da velocidade de leitura de uma parti\u00e7\u00e3o l\u00f3gica de uma unidade de disco r\u00edgido. Esta an\u00e1lise determina se uma unidade de disco r\u00edgido est\u00e1 respondendo em uma velocidade lenta. Se o tempo de resposta permanecer entre 0.015 e 0.025 milissegundos ent\u00e3o o sistema de leitura do disco r\u00edgido est\u00e1 respondendo de forma normal. Por\u00e9m, caso a aferi\u00e7\u00e3o seja superior a 0.025 milissegundos ent\u00e3o o disco r\u00edgido estar\u00e1 respondendo lentamente caracterizando um bottleneck de leitura de disco r\u00edgido.<\/p>\n<p><em>Logical Disk Write Latency Analysis<\/em>: Afere a m\u00e9dia da velocidade de grava\u00e7\u00e3o em uma parti\u00e7\u00e3o l\u00f3gica de uma unidade de disco r\u00edgido. Esta an\u00e1lise determina se uma unidade de disco r\u00edgido est\u00e1 gravando os dados de forma lenta demais. Como ocorre com a lat\u00eancia de leitura, o recomendado \u00e9 que os valores permane\u00e7am entre 0.015 e 0.025 milissegundos para que se possa homologar como uma situa\u00e7\u00e3o normal, por\u00e9m a aferi\u00e7\u00e3o superior a 0.025 caracterizar\u00e1 um bottleneck.<\/p>\n<p><em>Disk Transfers\/sec: Disk Transfers\/sec<\/em>\u00a0\u00e9 a taxa de transfer\u00eancia de grava\u00e7\u00e3o e leitura em disco.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>M\u00e9tricas para avalia\u00e7\u00e3o de performance &#8211; An\u00e1lise de utiliza\u00e7\u00e3o do processador<\/b><\/p>\n<div><em>Processor Time<\/em>: \u00c9 a porcentagem de tempo que o processador leva para processar um thread. \u00c9 calculado mensurando-se o tempo que um thread em espera leva para tornar-se ativa e subtraindo-se do intervalo total de processamento. Esta m\u00e9trica \u00e9 um indicador prim\u00e1rio de atividade do processador e, em porcentagem, revela a m\u00e9dia dos dados processados em um intervalo de tempo. Essa m\u00e9dia \u00e9 calculada aferindo-se o tempo que o servi\u00e7o encontra-se inativo e subtraindo-se de 100%.<\/p>\n<p><em>Processor Queue Length<\/em>: \u00c9 o n\u00famero de threads na fila de dados a serem processados pelo processador. Encontramos somente uma fila para um processador. No caso de um computador com dois ou mais processadores teremos uma fila para cada processador. A aferi\u00e7\u00e3o de 10 threads por segundo em uma processor queue \u00e9 considerada normal, dependendo da carga de trabalho imposta ao processor. Caso a an\u00e1lise da m\u00e9dia do comprimento da fila de processamento for maior do que o n\u00famero de processos, ent\u00e3o, teremos um bottleneck.<\/p>\n<p><em>Priority Process CPU Analysis<\/em>: Indica a prioridade que um processo pode assumir na fila de processos do processador. Pode variar de -20 a 20. Quanto menor o n\u00famero maior ser\u00e1 a sua prioridade. Muitos processos com prioridade alta podem constituir um bottleneck.<\/p>\n<p><em>Interrupt Time<\/em>: \u00c9 o tempo que o processador leva para receber e responder as interrup\u00e7\u00f5es de hardware. Este valor \u00e9 um indicador indireto das atividades nos dispositivos de hardware que geram interrup\u00e7\u00f5es, como mouse, teclado, discos r\u00edgidos, placas de rede e outros dispositivos de perif\u00e9ricos. A maioria dos sistemas interrompem os processadores de 10 em 10 milissegundos, criando uma atividade de interrup\u00e7\u00e3o em background. Um grande aumento neste contador indica um potencial problema de hardware.<\/p>\n<p><em>Network Utilization Analysis<\/em>: Aferido em Bytes total\/segundos, refere-se \u00e0 taxa de envio e de recebimento de cada interface de rede. Corresponde a soma de cada byte enviado e recebido por cada interface de rede a cada segundo. Este indicador nos permite conhecer a capacidade de envio e recebimento de bytes de cada interface de rede. Com o conhecimento da capacidade de cada interface de rede \u00e9 poss\u00edvel saber se existe um bottleneck no tr\u00e1fego de rede. Esta an\u00e1lise convert Bytes total\/segundos em bits e compara com a largura de banda dispon\u00edvel na rede. Uma porcentagem segura \u00e9 manter o indicador abaixo de 50% de consumo de banda de rede.<\/p>\n<p><em>Network Output Queue Length<\/em>: Esta m\u00e9trica informa a quantidade de threads aguardando na interface de rede. Caso haja uma grande quantidade de threads aguardando podemos considerar um bottleneck de I\/O similar a baixa lat\u00eancia ou baixa bandwith da rede. Caso haja pelo menos dois pacotes na fila (sim, medimos as threads em pacotes) \u00e9 necess\u00e1rio corrigir este bottleneck. Uma aferi\u00e7\u00e3o que n\u00e3o caracteriza a presen\u00e7a de um bottleneck \u00e9 zero.<\/p>\n<p><em>Memory Committed Bytes<\/em>: Este indicador refere-se \u00e0 quantidade (bytes) em mem\u00f3ria virtual. Mem\u00f3ria virtual s\u00e3o espa\u00e7os f\u00edsicos reservados para pagina\u00e7\u00e3o no disco r\u00edgido. Podem haver um ou mais arquivos em cada disco r\u00edgido. Memory Committed Bytes \u00e9 aferido de forma precisa e n\u00e3o por m\u00e9dia, geralmente retorna o \u00faltimo valor observado.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>M\u00e9tricas para avalia\u00e7\u00e3o de performance &#8211; An\u00e1lise de utiliza\u00e7\u00e3o da Mem\u00f3ria<\/b><\/p>\n<div><em>Total Available Memory<\/em>: Available Memory \u00e9 o tamanho, em Mbytes, de mem\u00f3ria dispon\u00edvel no sistema para os processos rodarem.<\/p>\n<p><em>Total Used Memory<\/em>: Used memory \u00e9 a mem\u00f3ria total utilizada pelos processos em estado de execu\u00e7\u00e3o, hiberna\u00e7\u00e3o, Zumbi e Interrompido.<\/p>\n<p><em>Maximum number of processes<\/em>: Maximum number of processes \u00e9 o n\u00famero m\u00e1ximo de processos na mem\u00f3ria, n\u00e3o importando o seu estado atual.<\/p>\n<p><em>Priority processor number<\/em>: Priority processor number \u00e9 a prioridade que um processo recebe ao ser iniciado. Esta prioridade reflete na disposi\u00e7\u00e3o do sistema operacional em process\u00e1-lo. Processo com baixa prioridade (-20) ter\u00e3o uma maior prioridade de processamento por parte do sistema. Processos com alta prioridade (20) ser\u00e3o executados ap\u00f3s os outros processos. Um processo em estado de sleeping ou zombie, com baixa prioridade pode caracterizar um bottleneck.<\/p>\n<p>Total SWAP space available: O espa\u00e7o total da parti\u00e7\u00e3o, de tipo swap\u00a0<a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>, \u00e9 utilizado como mem\u00f3ria de swap para processos. No Linux essa mem\u00f3ria s\u00f3 \u00e9 utilizada como mem\u00f3ria virtual para pagina\u00e7\u00e3o de processos a partir do momento em que toda a mem\u00f3ria RAM do sistema j\u00e1 fora consumida. Enquanto ainda sobrar mem\u00f3ria RAM dispon\u00edvel a parti\u00e7\u00e3o swap ser\u00e1 utilizada como mem\u00f3ria cached do sistema.<\/p>\n<p><em>Used SWAP memory<\/em>: Refere-se ao espa\u00e7o na parti\u00e7\u00e3o SWAP utilizado. Este espa\u00e7o poder\u00e1 ser\u00e1 utilizado como cached.<\/p>\n<p><em>Shared memory<\/em>: O sistema operacional Linux utiliza um recurso de compartilhamento de bibliotecas para economizar o espa\u00e7o utilizado na mem\u00f3ria do sistema. Esta mem\u00f3ria compartilhada \u00e9 tamb\u00e9m chamada de Shared Memory. Atrav\u00e9s da sua aferi\u00e7\u00e3o \u00e9 poss\u00edvel obter um valor mais preciso de utiliza\u00e7\u00e3o da mem\u00f3ria de um processo.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>M\u00e9tricas para avalia\u00e7\u00e3o de performance &#8211; An\u00e1lise de utiliza\u00e7\u00e3o da Rede<\/b><\/p>\n<div><em>Incoming traffic<\/em>: Incoming traffic \u00e9 o total de tr\u00e1fego que \u00e9 recebido pela placa de rede em um determinado espa\u00e7o de tempo. \u00c9 medido comumente em Kbps, ou seja, kilobytes per second ou Mbps, Megabytes per second. Toda placa de rede suporta uma determinada taxa de transmiss\u00e3o e recebimento medida em Mbps. Caso o volume de dados recebido em um determinado espa\u00e7o de tempo seja maior que a taxa de recebimento de dados da interface de rede, teremos um bottleneck.<\/p>\n<p><em>Outgoing traffic<\/em>: Outgoing traffic \u00e9 o total de tr\u00e1fego que \u00e9 enviado pela placa de rede em um determinado espa\u00e7o de tempo. \u00c9 medido comumente em Kbps, ou seja, kilobytes per second ou Mbps, Megabytes per second. Toda placa de rede suporta uma determinada taxa de transmiss\u00e3o e recebimento medida em Mbps. Caso o volume de dados recebido em um determinado espa\u00e7o de tempo seja maior que a taxa de recebimento de dados da interface de rede, teremos um bottleneck.<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>M\u00e9tricas para avalia\u00e7\u00e3o de performance &#8211; An\u00e1lise de utiliza\u00e7\u00e3o de disco Ter um servidor bem dimensionado que suporte uma aplica\u00e7\u00e3o para um ambiente produtivo empresarial de mais de 30.000 usu\u00e1rios \u00e9 um desafio. O que fazer para obter confian\u00e7a, performance, desempenho e sossego na manuten\u00e7\u00e3o? A resposta \u00e9 investir em testes de performance. Os testes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1,42,51,68,271],"tags":[374,353,375,376,377],"class_list":["post-640","post","type-post","status-publish","format-standard","hentry","category-viazap","category-leitura-recomendada","category-linux-linuxrs","category-redes-2","category-seguranca-2","tag-bottlenecks","tag-de","tag-metricas","tag-performance","tag-servidores"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=640"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/640\/revisions"}],"predecessor-version":[{"id":641,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/640\/revisions\/641"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}