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