Um engenheiro da Clyso resumiu a experiência de criar um cluster de armazenamento baseado em um sistema distribuído de alta disponibilidade Ceph, com uma capacidade de mais de um tebibyte por segundo. É notável que este é o primeiro cluster baseado em Ceph a atingir tal desempenho, mas antes de alcançar o resultado apresentado, os engenheiros tiveram que superar uma série de desafios difíceis de identificar.
Por exemplo, para aumentar o desempenho em 10-20%, foi suficiente ativar nos servidores, nas configurações de economia de energia da BIOS, apenas o modo de desempenho máximo e desativar o c-state (o c-state altera as configurações de economia de energia dependendo da carga, o que afeta o Ceph). Também foi descoberto que ao usar unidades NVMe, o núcleo do Linux gastava um tempo considerável processando bloqueios spin durante a atualização do mapeamento IOMMU. Desativar o IOMMU no núcleo resultou em um aumento significativo no desempenho nos testes de leitura e escrita de blocos de 4MB.
No entanto, a desativação do IOMMU não resolveu o problema da queda de desempenho durante gravações aleatórias de blocos de 4KB. Ao investigar a questão, os engenheiros se depararam com correções nos scripts de construção do Ceph dos projetos Gentoo e Ubuntu, que incluíam a construção com a opção RelWithDebInfo, pois com essa opção o GCC aplicava o modo de otimização "-O2", no qual o desempenho do Ceph aumentava consideravelmente. A compilação com a biblioteca TCMalloc também contribuía para a diminuição do desempenho. A alteração das flags de compilação e a interrupção do uso do TCMalloc resultou em uma redução do tempo de compactação em três vezes e um aumento do desempenho em operações de gravação aleatórias de blocos de 4K em duas vezes. No final, também foram otimizadas as configurações do Reef RocksDB e dos grupos de colocação (PG).
O cluster é formado por 68 nós baseados em servidores Dell PowerEdge R6615 com CPU AMD EPYC 9454P 48C/96T. Cada nó contém 10 unidades NVMe Dell de 15,36TB, dois adaptadores Ethernet 100GbE Mellanox ConnectX-6 e 192GB de RAM. O software é baseado no Ubuntu 20.04.6 e Ceph 17.2.7. No cluster, há 630 OSD (Object Storage Daemon, processo em segundo plano que gerencia o armazenamento de dados no armazenamento local, um OSD por unidade NVMe), três processos MON (monitor, que rastreia o estado do cluster) e um processo MGR (Manager, serviço de gerenciamento). O tamanho do armazenamento é de 8,2 PB.
A largura de banda em operações sequenciais de leitura de blocos de 4M foi de 1025 GiB/s, enquanto a escrita foi de 270 GiB/s. Em leitura aleatória de blocos de 4KB, a performance foi de 25,5 milhões de operações de leitura por segundo e 4,9 milhões na escrita. A ativação da criptografia reduziu a largura de banda de leitura para aproximadamente 750 GiB/s. Com a utilização de códigos de correção de erros EC62, a largura de banda foi de 547 GiB/s em leitura e 387 GiB/s em escrita (a velocidade de escrita foi maior do que sem os códigos de correção), e em acesso aleatório foram obtidos 3,4M IOPS em leitura e 936K IOPS em escrita.


Além disso, é importante destacar que em setembro um marco semelhante de largura de banda em tebibytes por segundo foi alcançado no cluster de armazenamento de exabytes do CERN, implementado com o sistema de armazenamento distribuído aberto EOS, baseado no protocolo XRootD.
Fonte: opennet.ru
