quinta-feira, 8 de maio de 2014

Introdução a Performance, Monitoração e Ajuste fino em Linux






Administradores de sistemas Linux deve ser proficiente em Linux monitoramento e ajuste de desempenho. Este artigo fornece uma visão geral de alto nível sobre a forma como devemos abordar o monitoramento e ajuste de desempenho no Linux, e os vários subsistemas (e métricas de desempenho) que precisa ser monitorado.
Para identificar os gargalos do sistema e apresentar soluções para corrigi-lo, você deve entender como vários componentes do Linux funciona. Por exemplo, como o kernel dá preferência a um processo Linux sobre os outros usando valores agradáveis, como I / O interrupções são tratados, como funciona o gerenciamento de memória, como o sistema de arquivos do Linux funciona, como a camada de rede é implementado no Linux, etc ,
Por favor, note que a compreensão de como os vários componentes (ou subsistemas) funciona não é o mesmo que saber o comando para executar a obter determinada saída. Por exemplo, você poderia saber que "uptime" ou o comando "top" dá a "carga média". Mas, se você não sabe o que isso significa e como a CPU (ou processo) subsistema funciona, você pode não ser capaz de compreendê-lo corretamente. Compreender os subsistemas é uma tarefa em curso, o que você vai estar constantemente aprendendo o tempo todo.
Em um nível muito elevado, a seguir estão os quatro subsistemas que precisa ser monitorado.
  • CPU
  • Memória
  • I / O
  • Rede

1. CPU

Você deve compreender as quatro métricas de desempenho críticos para CPU - mudança de contexto, fila de execução, utilização de CPU, e média de carga.

Troca de Contexto

  • Quando CPU muda de um processo (ou thread) para outro, ele é chamado como mudança de contexto.
  • Quando um switch processo acontece kernel armazena o estado atual da CPU (de um processo ou thread) na memória.
  • Kernel também recupera o estado previamente armazenado (de um processo ou segmento) da memória e coloca-lo na CPU.
  • Troca de contexto é muito essencial para multitarefa do processador.
  • No entanto, um maior nível de troca de contexto pode causar problemas de desempenho.

Run Queue

  • Fila de execução indica o número total de processos ativos na fila atual para CPU.
  • Quando CPU está pronta para executar um processo, ele pega a partir da fila de execução com base na prioridade do processo.
  • Por favor, note que os processos que estão em estado de sono, ou i / o estado de espera não estão na fila de execução.
  • Assim, um maior número de processos na fila de execução pode causar problemas de desempenho.

Utilização da CPU

  • Isso indica o quanto da CPU está sendo usado.
  • Isso é bastante para a frente, e você pode ver a utilização da CPU do comando top .
  • 100% de utilização da CPU significa que o sistema é totalmente carregado.
  • Assim, uma idade mais elevada% de utilização da CPU irá causar problemas de desempenho.

Carga Média

  • Isso indica a carga média da CPU durante um período de tempo específico.
  • No Linux, média de carga é exibido para o último 1 minuto, 5 minutos e 15 minutos. Isso é útil para ver se a carga total no sistema é indo para cima ou para baixo.
  • Por exemplo, uma média de carga de "0,75 1,70 2,10" indica que a carga sobre o sistema está descendo. 0,75 é a média de carga no último 1 minuto. 1,70 é a média de carga nos últimos 5 minutos. 2,10 é a média de carga nos últimos 15 minutos.
  • Por favor, note que esta carga média é calculada através da combinação de ambos o número total de processos na fila, eo número total de processos no estado da tarefa ininterrupta.

2. Rede

  • Uma boa compreensão dos conceitos de TCP / IP é útil ao analisar quaisquer problemas de rede. Vamos discutir mais sobre isso em artigos futuros.
  • Para interfaces de rede, você deve monitorar o número total de pacotes (e bytes) recebidos / enviados através da interface, número de pacotes descartados, etc,

3. De I / O

  • I / O de espera é a quantidade de tempo de CPU está à espera de I / O. Se você vê alta consistente i / o espera do sistema, isso indica um problema no subsistema de disco.
  • Você também deve monitorar leituras / segundo, e escreve / segundo. Isto é medido em blocos. ou seja, número de blocos de leitura / escrita por segundo. Estes também são referidos como bi e bo (bloco e bloquear).
  • tps indica o total de transações por segundo, que é a soma de rtPS (leia transações por segundo) e ETAs (operações de escrita por segundo).

4. Memória

  • Como você sabe, a memória RAM é a memória física. Se você tem 4 GB de RAM instalada no seu sistema, você tem 4 GB de memória física.
  • A memória virtual = O espaço de troca disponível no disco + memória física. A memória virtual contém tanto espaço do usuário e espaço de kernel.
  • Usando um 32-bit ou 64-bit sistema faz uma grande diferença na determinação de quanta memória um processo pode utilizar.
  • Em um sistema de 32 bits de um processo só pode acessar um máximo de 4 GB de memória virtual. Em um sistema de 64 bits não existe essa limitação.
  • A RAM não utilizada será usado como cache do sistema de arquivos no kernel.
  • O sistema Linux vai trocar quando ele precisa de mais memória. ou seja, quando ele precisa de mais memória do que a memória física. Quando se troca, ele grava as páginas de memória menos utilizadas da memória física para o espaço de troca no disco.
  • Lote de troca pode causar problemas de desempenho, como o disco é muito mais lento do que a memória física, e é preciso tempo para trocar as páginas de memória de RAM para o disco.
Todos os acima de 4 subsistemas estão interligados. Só porque você vê um alto leituras / segundo, ou escreve / segundo, ou I / O de espera não significa que o problema está lá com o sub-sistema de I / O. Também depende do que o aplicativo está fazendo. Na maioria dos casos, o problema de desempenho pode ser causado pelo aplicativo que está em execução no sistema Linux.
Lembre-se da regra 80/20 - 80% da melhoria de desempenho vem de ajustar o aplicativo, eo restante 20% vem de ajuste dos componentes de infra-estrutura.
Existem várias ferramentas disponíveis para monitorar o desempenho do sistema Linux. Por exemplo: top, livre, ps, iostat, vmstat, mpstat, sar, tcpump, netstat, IOzone, etc, nós estaremos discutindo mais sobre essas ferramentas e como usá-los nos próximos artigos desta série.
Segue-se a abordagem de 4 etapas para identificar e resolver um problema de desempenho.
  • Passo 1 - Compreender (e reproduzir) o problema: Metade do problema é resolvido quando você entender claramente o que é o problema. Antes de tentar resolver o problema de desempenho, trabalhar primeiro em definir claramente o problema. Quanto mais tempo você gasta com a compreensão e definição do problema vai lhe dar detalhes suficientes para procurar as respostas no lugar certo. Se possível, tente reproduzir o problema, ou pelo menos simular uma situação que você acha que se assemelha ao problema. Isso irá ajudá-lo mais tarde para validar a solução que você venha a corrigir o problema de desempenho.
  • Passo 2 - Monitorar e coleta de dados: Depois de definir claramente o problema, monitorar o sistema e tentar recolher o máximo de dados possível sobre vários subsistemas. Com base nesses dados, chegou-se a lista de problemas potenciais.
  • Passo 3 - Eliminar e limitar as questões: Depois de ter uma lista de possíveis problemas, mergulhar em cada um deles e eliminar qualquer não questões. Reduzi-lo ainda mais para ver se é uma questão de aplicação, ou um problema de infra-estrutura.Aprofundar ainda mais e reduzi-lo a um componente específico. Por exemplo, se é uma questão de infra-estrutura, reduzi-lo e identificar o subsistema que está causando o problema. Se é um problema de subsistema de I / O, reduzi-lo a uma partição específica, ou grupo de ataque, ou LUN, ou disco. Basicamente, manter perfuração para baixo até que você colocar o dedo sobre a causa raiz do problema.
  • Passo 4 - Uma mudança de cada vez: Uma vez que você estreitou para baixo a uma pequena lista de possíveis problemas, não tente fazer várias mudanças ao mesmo tempo.Se você fizer várias alterações, você não sabe qual fixa o problema original. Várias alterações de uma só vez também pode causar novos problemas, o que você vai estar perseguindo, em vez de corrigir o problema original. Então, faça uma mudança de cada vez, e veja se ele corrige o problema original.
Nos próximos artigos da série de desempenho, vamos discutir mais sobre como monitorar e problemas de desempenho no endereço CPU, memória, I / O e subsistema de rede usando várias ferramentas de monitoramento de desempenho do Linux.



Nenhum comentário:

Postar um comentário