Estou enfrentando uma queda significativa de desempenho ao usar o "rsync" para copiar arquivos pela rede de dentro de um contêiner ou cgroup com limites de memória no Oracle Linux 9.2. O problema ocorre com o Red Hat Compatible Kernel (RHCK) 5.14.0-284.11.1.el9_2.x86_64, mas não com o Unbreakable Enterprise Kernel (UEK) 5.15.0-101.103.2.1.el9uek.x86_64.
Detalhes: Configuração: Oracle Linux 9.2 com contêineres/cgroups com limites de memória. Problema: A velocidade de cópia de arquivos pela rede cai drasticamente quando os limites de memória são atingidos, especialmente quando o cache de páginas (arquivos inativos) fica cheio. Testes:
- Usando "rsync" de dentro de um contêiner ou um cgroup para copiar dados de uma fonte remota.
- Utilizando a replicação de dados PostgreSQL "pg_basebackup" entre dois contêineres PG (Líder vs. Réplica). Resultados:
- As altas velocidades iniciais (~100 MBps) caem significativamente (para ~1 MBps) quando os limites de memória são atingidos.
Comandos para reproduzir:
Crie um cgroup com limite de memória e execute o rsync: sudo systemd-run --scope --property=MemoryMax=1G rsync -av --progress rsync://<source_ip>/files /destination_path
Teste com drop_caches no sistema operacional de hospedagem durante rsync lento: free && sync && echo 3 > /proc/sys/vm/drop_caches && free Após o cache ser descartado, o rsync fica rápido novamente até que o limite de MEM seja atingido novamente
Observações:
- Quando o limite de memória do contêiner é atingido, o cache de páginas (arquivos inativos) fica cheio, levando à degradação da largura de banda da rede.
- Isso afeta, por exemplo, a replicação do PostgreSQL, causando atraso e potencial perda de dados.
Alguém mais já passou por esse problema? Quaisquer dicas ou sugestões sobre como lidar com isso corretamente (ou talvez soluções alternativas) seriam muito apreciadas!
Responderei minha própria pergunta aqui: Parece que é um bug no kernel Oracle Linux (OL) 9.2 RHCK "kernel-5.14.0-284.11.1" (veja a tabela: https://docs.oracle.com/en/operating-systems/oracle-linux/9/boot/oracle_linux9_kernel_version_matrix.html )
Mudar para o Kernel UEK da mesma versão do OL (9.2) resolveu o problema, mas o UEK não é suportado por alguns SW (por exemplo, Vertica DB), então tentei atualizar os Kernels RHCK: somente o Kernel e as dependências do OL9.4 (kernel-5.14.0-427) e OL9.5 (kernel-5.14.0-503.11.1) - ambos corrigiram o problema, com a observação: suspeita-se que a atualização do RHCK usando um do OL9.5 tenha alguns problemas de compatibilidade de HW (sob investigação). Mais alguns detalhes discutidos aqui: https://www.linuxquestions.org/questions/linux-containers-122/performance-degradation-with-rsync-in-container-or-cgroupv2-with-mem-limit-on-oracle-linux-9-2-rhck-5-14-vs-uek-5-15-a-4175749063/