Pesquisa de site

Identifique gargalos de desempenho do Linux usando ferramentas de código aberto


Não muito tempo atrás, identificar gargalos de hardware exigia profundo conhecimento. Os monitores de desempenho de GUI de código aberto atuais tornam isso bastante simples.

Os computadores são sistemas integrados que funcionam tão rápido quanto o seu componente de hardware mais lento. Se um componente for menos capaz que os outros – se ficar para trás e não conseguir acompanhar – ele pode atrasar todo o seu sistema. Isso é um gargalo de desempenho. Remover um gargalo sério pode fazer seu sistema falhar.

Este artigo explica como identificar gargalos de hardware em sistemas Linux. As técnicas se aplicam a computadores pessoais e servidores. Minha ênfase está nos PCs – não abordarei gargalos específicos de servidores em áreas como gerenciamento de LAN ou sistemas de banco de dados. Muitas vezes envolvem ferramentas especializadas.

Também não falarei muito sobre soluções. Esse é um tópico muito grande para este artigo. Em vez disso, escreverei um artigo de acompanhamento com ajustes de desempenho.

Usarei apenas ferramentas de interface gráfica do usuário (GUI) de código aberto para realizar o trabalho. A maioria dos artigos sobre gargalos do Linux são bastante complicados. Eles usam comandos especializados e se aprofundam em detalhes misteriosos.

As ferramentas GUI que o código aberto oferece simplificam a identificação de muitos gargalos. Meu objetivo é fornecer uma abordagem rápida e fácil que você possa usar em qualquer lugar.

Onde começar

Um computador consiste em seis recursos principais de hardware:

  • Processadores
  • Memória
  • Armazenar
  • Portas USB
  • conexão de internet
  • Processador gráfico

Se algum recurso tiver um desempenho insatisfatório, poderá criar um gargalo de desempenho. Para identificar um gargalo, você deve monitorar esses seis recursos.

O código aberto oferece uma infinidade de ferramentas para fazer o trabalho. Usarei o Monitor do Sistema GNOME. Sua saída é fácil de entender e você pode encontrá-la na maioria dos repositórios.

Inicie e clique na guia Recursos. Você pode identificar muitos problemas de desempenho imediatamente.

Fig. 1. O Monitor do Sistema detecta problemas (Howard Fosdick, CC BY-SA 4.0)

O painel Recursos exibe três seções: Histórico da CPU, Histórico de memória e troca e Histórico da rede. Uma rápida olhada informa imediatamente se seus processadores estão sobrecarregados, se seu computador está sem memória ou se você está usando toda a largura de banda da Internet.

Explorarei esses problemas abaixo. Por enquanto, verifique primeiro o Monitor do Sistema quando o computador ficar lento. Ele informa instantaneamente sobre os problemas de desempenho mais comuns.

Agora vamos explorar como identificar gargalos em áreas específicas.

Como identificar gargalos do processador

Para detectar um gargalo, primeiro você deve saber qual hardware possui. O código aberto oferece diversas ferramentas para essa finalidade. Gosto do HardInfo porque suas telas são fáceis de ler e são muito populares.

Inicie o HardInfo. Seu painel Computador -> Resumo identifica sua CPU e informa sobre seus núcleos, threads e velocidades. Ele também identifica a placa-mãe e outros componentes do computador.

Fig. 2. HardInfo mostra detalhes de hardware (Howard Fosdick, CC BY-SA 4.0)

HardInfo revela que este computador possui um chip físico de CPU. Esse chip contém dois processadores ou núcleos. Cada núcleo suporta dois threads ou processadores lógicos. Isso é um total de quatro processadores lógicos – exatamente o que a seção Histórico da CPU do System Monitor mostrou na Figura 1.

Um gargalo do processador ocorre quando os processadores não conseguem responder às solicitações durante seu tempo. Eles já estão ocupados.

Você pode identificar isso quando o Monitor do Sistema mostra a utilização do processador lógico acima de 80% ou 90% por um período sustentado. Aqui está um exemplo em que três dos quatro processadores lógicos estão sobrecarregados com 100% de utilização. Isso é um gargalo porque não deixa muita CPU para nenhum outro trabalho.

Fig. 3. Um gargalo no processador (Howard Fosdick, CC BY-SA 4.0)

Qual aplicativo está causando o problema?

Você precisa descobrir quais programas estão consumindo toda essa CPU. Clique na guia Processos do Monitor do Sistema. Em seguida, clique no cabeçalho % CPU para classificar os processos de acordo com a quantidade de CPU que eles estão consumindo. Você verá quais aplicativos estão limitando seu sistema.

Fig. 4. Identificação dos processos infratores (Howard Fosdick, CC BY-SA 4.0)

Cada um dos três principais processos consome 24% do recurso total da CPU. Como existem quatro processadores lógicos, isso significa que cada um consome um processador inteiro. Isso é exatamente como mostra a Fig. 3.

O painel Processos identifica um programa chamado analytical_AI como o culpado. Você pode clicar com o botão direito nele no painel para ver mais detalhes sobre o consumo de recursos, incluindo uso de memória, os arquivos abertos, detalhes de entrada/saída e muito mais.

Se o seu login tiver privilégios de administrador, você poderá gerenciar o processo. Você pode alterar a prioridade e interrompê-lo, continuar, encerrá-lo ou eliminá-lo. Portanto, você poderia resolver imediatamente seu gargalo aqui.

Fig. 5. Clique com o botão direito em um processo para gerenciá-lo (Howard Fosdick, CC BY-SA 4.0)

Como você corrige gargalos de processamento? Além de gerenciar o processo ofensivo em tempo real, você pode evitar que o gargalo aconteça. Por exemplo, você pode substituir o infrator por outro aplicativo, contornar isso, mudar seu comportamento ao usar esse aplicativo, agendar o aplicativo para fora do horário comercial, resolver um problema de memória subjacente, ajustar o desempenho do aplicativo ou do software do sistema ou atualizar seu hardware. Isso é demais para abordar aqui, então explorarei essas opções em meu próximo artigo.

Gargalos comuns do processador

Você encontrará vários gargalos comuns ao monitorar suas CPUs com o System Monitor.

Às vezes, um processador lógico fica com gargalos enquanto todos os outros estão com baixa utilização. Isso significa que você tem um aplicativo que não foi codificado de maneira inteligente o suficiente para aproveitar as vantagens de mais de um processador lógico e está no limite máximo daquele que está usando. Esse aplicativo levará mais tempo para ser concluído do que se usasse mais processadores. Por outro lado, pelo menos deixa seus outros processadores livres para outros trabalhos e não assume o controle do seu computador.

Você também poderá ver um processador lógico travado para sempre com 100% de utilização. Ou está muito ocupado ou um processo está travado. A maneira de saber se ele está travado é se o processo nunca realiza nenhuma atividade no disco (como o painel Processos do Monitor do Sistema mostrará).

Finalmente, você pode notar que quando todos os seus processadores estão com gargalos, sua memória também é totalmente utilizada. Condições de falta de memória às vezes causam gargalos no processador. Nesse caso, você deseja resolver o problema de memória subjacente, não o problema sintomático da CPU.

Como identificar gargalos de memória

Dada a grande quantidade de memória nos PCs modernos, os gargalos de memória são muito menos comuns do que eram antes. No entanto, você ainda pode encontrá-los se executar programas que consomem muita memória, especialmente se tiver um computador que não contenha muita memória de acesso aleatório (RAM).

O Linux usa memória para programas e para armazenar dados em disco. Este último acelera o acesso aos dados do disco. O Linux pode recuperar essa memória sempre que precisar para uso do programa.

O painel Recursos do Monitor do Sistema exibe sua memória total e quanto dela é usada. No painel Processos, você pode ver o uso de memória de processos individuais.

Esta é a parte do painel Recursos do Monitor do Sistema que rastreia o uso de memória agregada:

Fig. 6. Um gargalo de memória (Howard Fosdick, CC BY-SA 4.0)

À direita de Memory, você notará Swap. Este é o espaço em disco que o Linux usa quando fica com pouca memória. Ele grava a memória no disco para continuar as operações, usando efetivamente o swap como uma extensão mais lenta da sua RAM.

Os dois problemas de desempenho de memória que você deve observar são:

  1. A memória parece amplamente utilizada e você vê atividade frequente ou crescente no espaço de troca.
  2. Tanto a memória quanto a troca são amplamente utilizadas.

A situação 1 significa desempenho mais lento porque a troca é sempre mais lenta que a memória. Se você considera isso um problema de desempenho depende de muitos fatores (por exemplo, quão ativo é seu espaço de swap, sua velocidade, suas expectativas, etc.). Minha opinião é que qualquer coisa além do uso de troca de token é inaceitável para um computador pessoal moderno.

A situação 2 é onde tanto a memória quanto a troca são amplamente utilizadas. Isto é um gargalo de memória. O computador deixa de responder. Pode até cair em um estado de thrashing, onde realiza pouco mais do que gerenciamento de memória.

A Figura 6 acima mostra um computador antigo com apenas 2 GB de RAM. À medida que o uso da memória ultrapassou 80%, o sistema começou a escrever para swap. A capacidade de resposta diminuiu. Esta captura de tela mostra mais de 90% de uso de memória e o computador está inutilizável.

A resposta definitiva para problemas de memória é usar menos ou comprar mais. Discutirei soluções em meu artigo de acompanhamento.

Como identificar gargalos de armazenamento

O armazenamento hoje vem em diversas variedades de discos rígidos mecânicos e de estado sólido. As interfaces do dispositivo incluem PCIe, SATA, Thunderbolt e USB. Independentemente do tipo de armazenamento que você possui, use o mesmo procedimento para identificar gargalos de disco.

Comece com o Monitor do Sistema. Seu painel Processos exibe as taxas de entrada/saída para processos individuais. Assim, você pode identificar rapidamente quais processos estão realizando mais E/S de disco.

Mas a ferramenta não mostra a taxa agregada de transferência de dados por disco. Você precisa ver a carga total em um disco específico para determinar se esse disco é um gargalo de armazenamento.

Para fazer isso, use o comando acima. Está disponível na maioria dos repositórios Linux.

Basta digitar atop no prompt da linha de comando. A saída abaixo mostra que o dispositivo sdb está ocupado 101%. Claramente, ele atingiu seu limite de desempenho e está restringindo a rapidez com que seu sistema pode realizar o trabalho.

Fig. 7. O comando atop identifica um gargalo no disco (Howard Fosdick, CC BY-SA 4.0)

Observe que uma das CPUs está aguardando o disco realizar seu trabalho 85% do tempo (cpu001 w 85%). Isso é típico quando um dispositivo de armazenamento se torna um gargalo. Na verdade, muitos olham primeiro para as esperas de E/S da CPU para detectar gargalos de armazenamento.

Portanto, para identificar facilmente um gargalo de armazenamento, use o comando atop. Em seguida, use o painel Processos no Monitor do Sistema para identificar os processos individuais que estão causando o gargalo.

Como identificar gargalos na porta USB

Algumas pessoas usam suas portas USB o dia todo. No entanto, eles nunca verificam se essas portas estão sendo usadas de maneira ideal. Quer você conecte um disco externo, um cartão de memória ou qualquer outra coisa, você desejará verificar se está obtendo desempenho máximo de seus dispositivos conectados por USB.

Este gráfico mostra o porquê. As taxas potenciais de transferência de dados USB variam enormemente.

Fig. 8. As velocidades USB variam muito (Howard Fosdick, com base em números fornecidos pela Tripplite e Wikipedia, CC BY-SA 4.0)

A guia Dispositivos USB do HardInfo exibe os padrões USB que seu computador suporta. A maioria dos computadores oferece mais de uma velocidade. Como você pode saber a velocidade de uma porta específica? Os fornecedores os codificam por cores, conforme mostrado no gráfico. Ou você pode consultar a documentação do seu computador.

Para ver as velocidades reais que você está obtendo, teste usando o programa GNOME Disks de código aberto. Basta iniciar os discos GNOME, selecionar seu recurso Benchmark Disk e executar um benchmark. Isso informa a velocidade real máxima que você obterá para uma porta com o dispositivo específico conectado a ela.

Você pode obter velocidades de transferência diferentes para uma porta, dependendo do dispositivo conectado a ela. As taxas de dados dependem da combinação específica de porta e dispositivo.

Por exemplo, um dispositivo que pode voar na velocidade 3.1 usará uma porta 2.0 – na velocidade 2.0 – se for a isso que você o conectar. (E não vai dizer que está operando em velocidade mais lenta!) Por outro lado, se você conectar um dispositivo USB 2.0 a uma porta 3.1, ele funcionará, mas na velocidade 2.0. Portanto, para obter um USB rápido, você deve garantir que a porta e o dispositivo o suportem. Os discos GNOME fornecem os meios para verificar isso.

Para identificar um gargalo de processamento USB, use o mesmo procedimento usado para discos rígidos e de estado sólido. Execute o comando atop para detectar um gargalo de armazenamento USB. Em seguida, use o Monitor do Sistema para obter detalhes sobre o(s) processo(s) ofensivo(s).

Como identificar gargalos de largura de banda da Internet

O painel Recursos do Monitor do Sistema informa em tempo real qual velocidade de conexão com a Internet você está enfrentando (veja a Fig. 1).

Existem ótimas ferramentas Python para testar a velocidade máxima da Internet, mas você também pode testá-las em sites como Speedtest, Fast.com e Speakeasy. Para melhores resultados, feche tudo e execute somente o teste de velocidade; desligue sua VPN; realizar testes em diferentes horários do dia; e compare os resultados de vários locais de teste.

Em seguida, compare seus resultados com as velocidades de download e upload que seu fornecedor afirma que você está obtendo. Dessa forma, você pode confirmar que está obtendo as velocidades pelas quais está pagando.

Se você tiver um roteador separado, teste com e sem ele. Isso pode dizer se o seu roteador é um gargalo. Se você usa WiFi, teste com e sem ele (cabeando diretamente seu laptop ao modem). Muitas vezes tenho visto pessoas reclamando de seu fornecedor de Internet quando o que realmente têm é um gargalo de WiFi que elas mesmas poderiam consertar.

Se algum programa está consumindo toda a sua conexão com a internet, você quer saber qual. Encontre-o usando o comando nethogs. Está disponível na maioria dos repositórios.

Outro dia, meu Monitor do Sistema mostrou de repente um pico de acesso à Internet. Acabei de digitar nethogs na linha de comando e ele identificou instantaneamente o consumidor de largura de banda como uma atualização do antivírus Clamav.

Fig. 9. Nethogs identifica consumidores de largura de banda (Howard Fosdick, CC BY-SA 4.0)

Como identificar gargalos no processamento gráfico

Se você conectar seu monitor à placa-mãe na parte traseira de seu computador desktop, você estará usando gráficos integrados. Se você conectá-lo a uma placa na parte traseira, terá um subsistema gráfico dedicado. A maioria a chama de placa de vídeo ou placa gráfica. Para computadores desktop, as placas complementares são normalmente mais poderosas e mais caras que as placas gráficas da placa-mãe. Laptops sempre usam gráficos integrados.

O painel Dispositivos PCI do HardInfo informa sobre sua unidade de processamento gráfico (GPU). Ele também exibe a quantidade de memória de vídeo dedicada que você possui (procure a memória marcada como “pré-buscável”).

Fig. 10. Informações de processamento gráfico do HardInfo (Howard Fosdick, CC BY-SA 4.0)

CPUs e GPUs trabalham em estreita colaboração. Para simplificar, a CPU prepara os frames para a GPU renderizar e, em seguida, a GPU renderiza os frames.

Um gargalo de GPU ocorre quando suas CPUs estão aguardando uma GPU que está 100% ocupada.

Para identificar isso, você precisa monitorar as taxas de utilização de CPU e GPU. Monitores de código aberto como Conky e Glances fazem isso se suas extensões funcionarem com seu chipset gráfico.

Dê uma olhada neste exemplo de Conky. Você pode ver que este sistema tem muita CPU disponível. A GPU está apenas 25% ocupada. Imagine se esse número de GPU estivesse próximo de 100%. Então você saberia que as CPUs estavam esperando na GPU e teria um gargalo na GPU.

Fig. 11. Conky exibindo a utilização de CPU e GPU (imagem cortesia do fórum AskUbuntu)

Em alguns sistemas, você precisará de uma ferramenta específica do fornecedor para monitorar sua GPU. Todos eles podem ser baixados do GitHub e são descritos neste artigo sobre monitoramento de GPU e ferramentas de linha de comando de diagnóstico.

Resumo

Os computadores consistem em uma coleção de recursos de hardware integrados. Se algum deles ficar muito atrás dos outros em sua carga de trabalho, isso criará um gargalo de desempenho. Isso pode atrasar todo o seu sistema. Você precisa ser capaz de identificar e corrigir gargalos para alcançar o desempenho ideal.

Não muito tempo atrás, a identificação de gargalos exigia profundo conhecimento. Os monitores de desempenho de GUI de código aberto atuais tornam isso bastante simples.

No meu próximo artigo, discutirei maneiras específicas de melhorar o desempenho do seu PC Linux. Enquanto isso, compartilhe suas próprias experiências nos comentários.

Artigos relacionados: