Linux > Como garantir melhor performance do sistema

2864 Views
Tempo de leitura: 7 Minutos 
Atualizado em:

Sistemas operacionais podem ficar lentos por diversos motivos. Isso, geralmente, ocorre por mal dimensionamento, crescimento vertiginoso de demanda ou simplesmente falta de manutenção. Veremos a seguir alguns dos principais motivos que levam o sistema a ficar lento. Antes, entendamos por que o sistema fica lento.

Por que o sistema operacional fica lento?

Um sistema com alta demanda de CPU indica que há um problema de performance, e na maioria dos casos interpretarão que a CPU está subdimensionada, pois sobrecarregou, o que não é uma verdade absoluta.

Toda demanda de processamento passa pela CPU, e para qualquer demanda de processamento é alocado parte da CPU total do sistema. A CPU só desaloca esse recurso quando o processamento é concluído. Logo, se o disco demorar para gravar um arquivo, a CPU ficará alocada por mais tempo do que o normal. Havendo processos concorrentes, mais CPU será alocada, e assim a CPU ficará totalmente alocada e começará a enfileirar requisições, incrementando o Load Average e criando essa falsa sensação de que ela, a CPU, é o gargalo desse problema, quando na verdade, neste exemplo, o problema está no disco e/ou no processo de gravação que está onerando toda a CPU.

CPU alocada consiste em ter parte da CPU reservada para processar uma determinada demanda, e por vezes a CPU sequer está em uso, pois, como no exemplo acima, um componente, no caso o disco, está sobrecarregado e a CPU não está realizando processamento; está apenas esperando o disco responder para processar algo. E enquanto essa CPU aguarda o disco responder, nada poderá usar a parte alocada da CPU, o que cria um desperdício de poder computacional do sistema.

Diagrama de fluxo de processo no sistema operacional Linux
Fluxo de execução de um processo na CPU

Portanto, é preciso entender o contexto em que esse sistema está inserido, seus processos e analisar muito bem o tipo de missão do servidor, determinando o que é demanda crítica, urgente, importante e o que não é nada disso.

Neste artigo veremos algumas boas práticas para evitar e/ou solucionar problemas de performance em sistemas Linux.

Processos concorrentes e/ou desnecessários

Concorrência em sistema é coisa séria, e gerenciá-las é fundamental. Processos concorrentes com alta demanda de consumo de recursos como disco e memória criam ciclos de consumos que podem oscilar ou manter o processamento alto e constante. Separar serviços “core” em mais de um sistema é importante, pois dado seus sensos de urgência, colocá-los para concorrer pode ser um problema.

Por exemplo: Um banco de dados que é executado no mesmo sistema que executa uma aplicação pode criar essas concorrências. Mais cedo ou mais tarde haverá picos.

E nunca confunda concorrência com paralelismo. Processos paralelos são processos executados de forma saudável no ponto de vista do sistema. Processos concorrentes são processos de disputam recursos e causam degradação.

Importante: Sistema operacionais possuem 1 escalonador de processos. Esses escalonadores determinam o que tem mais ou menos prioridade de acesso a CPU. Portanto, é mais interessante ter 2 servidores com 1 CPU do que 1 servidor com 2 CPUs.

Outro ponto; alguns processos como compressão de arquivos demandam muito processamento, e quanto melhor o algoritmo de compressão, mais CPU e disco utilizará.

Uma boa prática aqui é evitar execução de serviços “core” em um mesmo sistema e executar processos pesados como backup e compressão para horários não comerciais.

Backup impactando na produção

Há sistemas que não podem ficar inoperantes mesmo de madrugada quando, geralmente, executamos o backup. Nesse momento a lentidão pode ocorrer por haver gravação local, no mesmo disco onde o sistema encontra-se em execução, por criar concorrência na interface de rede ou por consumir muita memória devido a questões como compressão.

Nesse tipo de caso é interessante fazer a gravação em um storage, por exemplo, o que evitará gravação local. Usar uma interface de rede apartada da rede de produção também é uma boa prática, pois assim o backup pode concluir mais rapidamente.

Se essas opções não são aplicáveis, então é preciso trabalhar com prioridade de processos usando os comandos nice, renice e ionice como já mencionado aqui no site. Segue link:

https://www.blogporta80.com.br/2022/04/17/linux-gerenciando-prioridades-de-processos/

Configuração errada de Swap

Sim, a Swap, se mal configurada, pode impactar na performance do sistema. Otimizar a memória Swap é fundamental para o bom funcionamento do sistema, haja visto que o sistema usa Swap mesmo quando há memória RAM livre.

No artigo a seguir há uma explicação completa sobre Swappiness, o parâmetro de determina como o sistema trabalhará com Swap. Segue o link:

https://www.blogporta80.com.br/2020/04/26/artigo-o-que-e-swappiness-e-como-configura-lo/

Falta de manutenção

Falta de manutenção também é um problema sério para sistemas lentos. Consumo elevado de disco útil, ou seja, de arquivos armazenados, pode ser um problema. O sistema tende a ficar mais lento com o passar do tempo. Saber o momento de remover arquivos antigos ou movê-los para outro sistema é muito importante.

Outro ponto importante é o padrão de montagem de discos. Trabalhar corretamente com noatime pode dar a você melhores entregas quanto a performance de gravação.

Manter a checagem de integridade de filesystem ligado é crucial. Ele garante que o filesystem esteja íntegro e faz isso no boot do sistema. Caso encontre erros, tentará repará-los.

Há outras manutenções importantes que precisam ser feitas, mas falaremos mais a diante.

Subdimensionamento

Se nada foi negligenciado e nada encontra-se em inconformidade, ou seja, não há processos pesados com concorrência, o filesystem está otimizado, pacotes são atualizados com frequência e nenhum gargalo ou item de falha encontra-se degradado ou indisponível, então é hora de pensar em escalar a infraestrutura, pois é provável tratar-se um problema de configuração subdimensionada para a demanda.

Um item de falha é qualquer coisa que o seu sistema dependa para funcionar plenamente, como um storage, por exemplo.

Ou seja, você tem uma configuração “X” para uma demanda “Y”, onde “Y” é maior do que “X”. Nesse caso a conta não fecha e criará degradação de serviço, e qualquer pico nessa demandará poderá resultar em quedas e/ou indisponibilidade total do sistema. É hora de fazer um upgrade e tirar o escorpião do bolso.

Harding e Tuning

Hardening é a ação de desativar serviços desnecessários para as entregas do sistema. Por exemplo, você tem um Postgres instalado e em execução, mas não o utiliza. No caso de fazer um hardening, você precisará desativá-lo, pois além de liberar recursos do sistema, ainda aumentará a segurança do mesmo, pois menos uma porta estará de pé para ser explorada.

Já o tuning é a ação de ajustar configurações para melhorar a performance daquilo que precisa ser entregue. Por exemplo, cada conexão estabelecida no sistema é mantida por até 60 segundos até que o sistema corte essa conexão. Caso essa conexão TCP não precise ficar ativa por tanto templo, você pode otimizá-la para consumir menos tempo. Esse é um parâmetro do Kernel Linux chamado net.ipv4.tcp_fin_timeout que pode ser ajustada via /etc/sysctl.conf.

O sistema, quando instalado, configura algumas coisas com base na quantidade de CPU e Memória disponível no sistema. Porém nem sempre isso atende nossas necessidades. Há diversos parâmetros que podem ser otimizados no Kernel Linux.

Logo mais subirei um artigo aqui no site com dicas de tuning. Por ora, há uma grande variedade de documentações na Web falando disso.

Atualização de pacotes

Claro que eu não poderia deixar de fora a dica 10/10 de mantenimento de sistemas; a atualização de pacotes. Além de corrigir bugs, a atualização provê maior segurança ao sistema.

Tenha sempre um plano de rollback caso algo de errado, mas nunca deixe de atualizar seus sistemas

Monitoração e acompanhamento constante

Acompanhar seus sistemas é fundamental. É inerente à função de Sysadmin conhecer seus sistemas, saber o que está executando e como o executa para saber decidir o que de melhor pode ser feito para incrementar a performance.

Não há um meio mais apropriado do que a monitoração. Cada item de falha, ou seja, cada coisa que pode indisponibilizar seus sistemas deve ser monitorada.

Logs

Observe seus arquivos de log. Verifique o conteúdo dos logs e desative esses registros desnecessários, pois a gravação em arquivos de log consome recursos, e se são logs desnecessários, são consumos que podem interferir no processamento de coisas importantes.

E ainda falando de logs, por fim, sempre os consulte. Os logs dmesg e /var/log/messages ou /var/log/syslog são seus melhores amigos. Logs não mentem!

Resumo

Tudo estará certo enquanto estiver certo, e quando não estiver, é importante conhecer o ambiente para saber o que de melhor pode ser feito para normalizar seu funcionamento. Tudo se resume a isso.

Lembrando que upgrade não é solução para problemas de performance sem que, antes, saiba a causa do problema. Nesse caso, fazer upgrade é, além de um tiro no escuro, pode se tornar uma tentativa frustrada e cara ao não surtir efeito esperado.

Encontrar a causa raiz e atacá-la é o segredo de Tostines.

Resumidamente falando, são boas práticas administrativas:

  • Evitar execução de serviços “core” em um mesmo servidor;
  • Evitar processos concorrentes;
  • Evitar rotinas pesadas de administração, auditoria e backup;
  • Realizar tarefas administrativas em horário não comercial;
  • Aplicar prioridade adequada para cada tarefa executada no sistema;
  • Manter o filesystem íntegro com checagens periódicas;
  • Manter o filesystem otimizado quanto a gravação de arquivos;
  • Controlar logs e evitar registros desnecessários;
  • Desativar serviços desnecessários no sistema – hardening;
  • Otimizar parâmetros do Kernel para tirar mais eficiência;
  • Mantenha seu sistema atualizados;
  • Monitore seus logs e seus sistemas.

Esse foi um artigo bem resumido e meio genérico; nada muito contundente. Logo mais farei um artigo sobre hardening e tuning, gravação de arquivos em cache e falarei um pouco mais sobre filesystem. Por ora é isso. Um abraço e até a próxima.

8 - 0

Thank You For Your Vote!

Sorry You have Already Voted!