Este artigo foi escrito pelo Nirmala Sundararajan, HPC e o laboratório de inovação do AI, abril de 2020
As Dell EMC soluções prontas para HPC armazenamento de alta capacidade do BeeGFS é uma solução de armazenamento em File System paralelo totalmente compatível e com alto throughput. Esse blog discute a arquitetura da solução, como ela é ajustada para HPC desempenho e apresenta desempenho de I/O usando benchmarks IOZone sequenciais e aleatórios. Uma solução de armazenamento de alto desempenho do BeeGFS construída em dispositivos NVMe foi descrita neste blog publicado durante o 2019 de novembro. Essa arquitetura enfatizava o desempenho e a solução descrita aqui é uma solução de armazenamento de alta capacidade. Essas duas soluções para BeeGFS são diferentes em termos de metas de projeto e casos de uso. A solução de alto desempenho é projetada como uma solução de armazenamento transitório, uma base de transferência para conjuntos de dados transitórios que geralmente não são mantidas além da vida útil do trabalho. A solução de alta capacidade utiliza PowerVault arrays ME4084 de Dell EMC 4 slots totalmente preenchidos com um total de 336 unidades e oferece uma capacidade bruta de 4 PB, se equipados com unidades de SAS de 12 TB.
A solução Dell EMC pronta para HPC armazenamento de alta capacidade BeeGFS consiste em um servidor de gerenciamento, um par de servidores de metadados, um par de servidores de armazenamento e os storage arrays associados. A solução fornece armazenamento que usa um único namespace que é facilmente acessado pelos nós de computação do cluster. A figura a seguir mostra a arquitetura de referência da solução com estes componentes principais:
A Figura 1 mostra a arquitetura de referência da solução.
Figura 1: Solução Dell EMC pronta para HPC armazenamento BeeGFS
Na Figura 1, o servidor de gerenciamento que executa o daemon de monitoramento do BeeGFS é um R640 do PowerEdge. Os dois servidores de metadados (MDS) são PowerEdge servidores R740 em uma configuração de alta disponibilidade ativo-ativo. O par MDS está conectado ao array de 2U PowerVault ME4024 por links de SAS de 12 GB/s. O storage array ME4024 hospeda os destinos de metadados (MDTs). Outro par de servidores de PowerEdge R740, também em uma configuração de alta disponibilidade ativo-ativo, é usado como servidores de armazenamento (SS). Esse par SS está conectado a quatro storage arrays totalmente preenchidos PowerVault ME4084 usando links SAS de 12 GB/s. Os arrays ME4084 são compatíveis com uma opção de 4 TB, 8 TB, 10 TB, ou 12 TB NL SAS 7,2 K RPM discos rígidos (HDDs e hospedam os destinos de armazenamento (STs) para o File System do BeeGFS. Esta solução usa Mellanox InfiniBand HDR100 para a rede de dados. Os clients e os servidores são conectados ao switch de borda HDR de QM8790 de 1U Mellanox, que suporta até 80 portas de HDR100 usando cabos de divisor HDR.
As tabelas a seguir descrevem as versões de hardware speficiations e software validadas para a solução.
Management Server | 1 x Dell EMC PowerEdge R640 |
---|---|
Servidores de metadados (MDS) | 2 Dell EMC PowerEdge R740 |
Servidores de armazenamento (SS) | 2 Dell EMC PowerEdge R740 |
Processador | Management Server 2 x Intel Xeon Gold 5218 @ 2,3 GHz, 16 núcleos MDS e SS: 2 processadores Intel Xeon Gold 6230 a 2,10 GHz, 20 núcleos por processador |
Memória | Management Server 12 DIMMs 2666MT/s de 8 GB DDR4-96GB MDS e SS: 12 x de 32 GB DDR4 2933MT/s DIMMs-384 GB |
InfiniBand HCA (slot 8) | 1x Mellanox adaptador HDR100 ConnectX-6 de porta única por MDS e SS |
Controladores de armazenamento externo | 2x Dell 12 Gbps SAS HBAs (em cada MDS) 4x Dell HBAs de 12 gbps SAS (em cada SS) |
Gabinete de armazenamento de dados | Dell EMC 4 ME4084 PowerVault gabinetes de totalmente preenchidos com um total de 336 unidades 2,69 PB de capacidade bruta de armazenamento, se equipados com unidades 8 tb SAS em 4 vezes ME4084 |
Enclosure de armazenamento de metadados | 1x Dell EMC PowerVault gabinete ME4024 totalmente preenchido com 24 unidades |
Controladores RAID | Controladores RAID duplex nos enclosures ME4084 e ME4024 |
Discos rígidos | 84-8 TB 7200 RPM unidades NL SAS3 por gabinete ME4084 24-960 GB SAS3 SSDs por gabinete ME4024 |
Sistema operacional | 8.1.1911 Linux da versão do CentOS (núcleo) |
Versão do kernel | 4.18.0-147.5.1. EL8 _1. x86_64 |
Versão do Mellanox OFED | 4,7 – 3.2.9.0 |
Grafana | 6.6.2-1 |
InfluxDB | 1.7.10-1 |
BeeGFS FILE SYSTEM (SISTEMA DE ARQUIVOS FAT) | 7,2 beta2 |
Tabela 1: Configuração do ambiente de teste
Nota: Para fins de caracterização de desempenho, o BeeGFS versão 7,2 beta2 foi usado.
A arquitetura do BeeGFS consiste em quatro serviços principais:
Também há um serviço opcional de monitoramento do BeeGFS.
A menos que o serviço do Client que é um módulo do kernel, os serviços de gerenciamento, metadados e armazenamento são processos de espaço do usuário. É possível executar qualquer combinação de serviços do BeeGFS (componentes do Client e do servidor) em conjunto nas mesmas máquinas. Também é possível executar várias instâncias de qualquer serviço de BeeGFS na mesma máquina. No Dell EMC configuração de alta capacidade do BeeGFS, o serviço de monitoramento é executado no servidor de gerenciamento, várias instâncias do serviço de metadados são executadas nos servidores de metadados e uma instância única de serviço de armazenamento é executada em servidores de armazenamento. O serviço de gerenciamento do é instalado nos servidores de metadados.
O serviço de monitoramento do BeeGFS (BeeGFS-Mon. Service) coleta estatísticas do BeeGFS e as oferece ao usuário usando o banco de dados da série time InfluxDB. Para visualização de dados, o beegfs-Mon-grafana oferece painéis de controle predefinidos do grafana que podem ser usados de uma caixa de diálogo. A Figura 2 fornece uma visão geral do cluster do BeeGFS que exibe o número de serviços de armazenamento e serviços de metadados na configuração (conhecidos como nós no painel de controle). Ele também lista as outras visualizações do painel de controle disponíveis e oferece uma visão geral dos destinos de armazenamento.
Figura 2 Grafana painel de controle-visão geral do BeeGFS
O storage array ME4024 usado para armazenamento de metadados é totalmente preenchido com SSDs de 24 x 960 GB. Essas unidades são configuradas em grupos de discos 12 x lineares de duas unidades, cada como mostrado na Figura 3. Cada grupo RAID1 é um destino de metadados.
Figura 3 Array ME4024 totalmente preenchido com 12 MDTs
No uniBeeGFS, cada serviço de metadados trata apenas de uma MDT única. Como existem 12 MDTs, deve haver 12 instâncias do serviço de metadados. Cada um dos dois servidores de metadados Executa seis instâncias do serviço de metadados. Os destinos de metadados são formatados com um File System do ext4 (os File Systems do ext4 são executados bem com arquivos pequenos e operações de arquivo pequeno). Além disso, o BeeGFS armazena informações nos atributos estendidos e diretamente nos inodes do File System para otimizar o desempenho, ambos funcionando bem com o File System do ext4.
Voltar para a parte superior
O serviço beegfs-MGMT está configurado em ambos os servidores de metadados. O armazenamento de Gerd do beegfs é inicializado no diretório MGMT no destino de metadados 1, conforme mostrado abaixo:
/opt/beegfs/sbin/beegfs-setup-mgmtd-p/beegfs/metaA-numa0-1/mgmtd-S beegfs-MGMT
O serviço de gerenciamento é iniciado no servidor de metaLUNs.
Nesta solução BeeGFS de alta capacidade, o armazenamento de dados está em quatro storage arrays PowerVault ME4084. Grupos de discos RAID-6 lineares de 10 unidades (8 + 2) cada são criados em cada array. Um único volume usando todo o espaço é criado para cada grupo de discos. Isso resultará em 8 grupos de discos por array. Cada array tem 84 unidades e a criação de 8 x grupos de discos RAID-6 deixa 4 unidades que podem ser configuradas como hot spares globais em todos os volumes do array.
Com o layout descrito acima, há um total de 32 x RAID-6 volumes em 4 x ME4084 em uma configuração básica mostrada na Figura 1. Cada um desses volumes RAID-6 é configurado como um destino de armazenamento (ST) para o File System do BeeGFS, resultando em um total de 32 STs em todo o File System.
Cada array ME4084 tem 84 unidades, com unidades numeradas 0-41 na gaveta superior e os números 42-84 na gaveta inferior. Na Figura 5, cada conjunto de 10 unidades marcadas como 1 a 8 representam o grupo 8xRAID6. Um volume é criado a partir de cada grupo de RAID6. As unidades marcadas como "S" representam os hot spares globais. A Figura 5 mostra a visão frontal do array após a configuração de 8 volumes e 4 hot spares globais.
Figura 4 layout do grupo de discos RAID 6 (8 + 2) em uma ME4084
O módulo do Client do BeeGFS é carregado em todos os hosts que exigem acesso ao File System do BeeGFS. Quando o módulo BeeGFS é carregado e o serviço BeeGFS-Client é iniciado, o serviço monta os File Systems definidos no arquivo/etc/BeeGFS/beegfs-mounts. conf , em vez da abordagem normal com base no /etc/fstab. Com essa abordagem, o beegfs-Client inicia como qualquer outro serviço Linux por meio do script de inicialização do serviço e permite a recompilação automática do módulo do Client do beegfs depois das atualizações do sistema.
Esta seção apresenta as características de desempenho das soluções Dell EMC pronta para HPC solução de armazenamento de alta capacidade do BeeGFS usando benchmarks sequenciais e IOzone. Para maior caracterização de desempenho usando IOR e MDtest e detalhes sobre a configuração de alta disponibilidade, procure um White paper que será publicado mais tarde.
O desempenho de armazenamento foi avaliado usando o benchmark do IOzone (v 3.487). O throughput de leitura e de gravação sequencial e o IOPS de leitura e gravação aleatórios foram medidos. A tabela 2 descreve a configuração dos servidores PowerEdge R840 usados como BeeGFS clients para esses estudos de desempenho.
Clients | 8 Dell EMC PowerEdge R840 |
---|---|
Processador | 4 x processadores Intel (R) Xeon (R) Platinum de 8260 a 2,40 GHz, 24 núcleos |
Memória | 24 x 16 GB DDR4 2933MT/s DIMMs-384 GB |
Sistema operacional | Red Hat Enterprise Linux Server release 7,6 (Maipo) |
Versão do kernel | 3.10.0-957.el7.x86_64 |
Interconexão | módulo de HDR100 de porta única ConnectX-6 Mellanox |
Versão do OFED | 4,7 – 3.2.9.0 |
Tabela 2: Configuração de cluster de clientes
Os servidores e clients são conectados por uma rede HDR100 e os detalhes de rede fornecidos na tabela 3 abaixo:
Opção InfiniBand | Switch de borda HDR de Quantum QM8790 Mellanox-PACING com 80x HDR 100 de 100 GB/s portas (usando cabos de divisor) |
---|---|
Switch de gerenciamento | Dell Networking S3048 ToR switch – 1U com 1 GbE 48X, 4 portas de 10 GbE e SFP |
Tabela 3: Networking
As leituras e gravações sequenciais foram medidas usando o modo de leitura sequencial e gravação do IOzone. Esses testes foram realizados com várias contagens de threads, começando por 1 thread e aumentando em potências de 2, até 512 threads. A cada contagem de threads foi gerado um número idêntico de arquivos, pois esse teste funciona em um arquivo por thread, ou o caso N-N. Os processos foram distribuídos em 8 nós de Client físico de modo Round-Robin para que as solicitações tenham sido distribuídas igualmente com o balanceamento de carga.
Para contagens de threads 16 e acima, um tamanho de arquivo agregado de 8 TB foi escolhido para minimizar os efeitos de armazenamento em cache dos servidores do, bem como de clients BeeGFS. Para contagens de threads inferiores a 16, o tamanho do arquivo é 768 GB por thread (ou seja, 1,5 TB para 2 threads, 3 TB para 4 threads e 6 TB por 8 threads). Dentro de um determinado teste, o tamanho do arquivo agregado usado era igualmente dividido entre o número de threads. O tamanho de um registro de 1MiB foi usado para todas as execuções. O comando usado para testes sequenciais N-N é dado abaixo:
Gravações sequenciais: iozone -i 0 -c -e -w -r 1024K -s $Size -t $Thread -+n -+m /path/to/threadlist
Os caches de so também foram removidos dos servidores entre iterações, bem como entre os testes de gravação e leitura executando o comando:
# Sync & & eco 3 >/proc/sys/VM/drop_caches
O File System foi desmontado e remontado nos clients entre iterações e entre testes de gravação e leitura para limpar o cache.
Figura 5: performance de leitura sequencial no N-N
Na Figura 5, o throughput máximo de 23,70 GB/s é atingido em 256 threads e a gravação de pico de 22, 7 GB/s foi obtida em threads de 512. O desempenho de gravação de thread único é 623 MB/s e Read é 717 MB/s. O desempenho é dimensionado quase linearmente até 32 threads. Depois disso, vemos que as leituras e gravações são saturadas conforme dimensionamos. Isso nos permite entender que o desempenho sustentado geral dessa configuração para leituras é ≈ 23GB/s e que, para as gravações, é ≈ 22GB/s com os picos conforme mencionado acima. As leituras são muito próximas ou ligeiramente superiores às gravações, independentemente do número de threads usados.
O IOzone foi usado no modo aleatório para avaliar o desempenho de i/o aleatório. Testes foram realizados em contagens de thread de 16 a 512 threads. A opção de i/o direto (-I) foi usada para executar o IOzone para que todas as operações ignorem o cache de buffer e vá diretamente para o disco. O número de frações de BeeGFS de 1 e o tamanho do fragmento de 1MB foi usado. O tamanho da solicitação foi definido como 4KiB. A performance é avaliada em operações de E/S por segundo (IOPS). Os caches de so foram descartados entre as execuções nos servidores do BeeGFS. O File System foi desmontado e remontado em clients entre iterações do teste. O comando usado para testes aleatórios de leitura e gravação é o seguinte:
IOzone-i 2-w-c-O-I-r 4K-s $Size-t $Thread-+ n-+ m/Path/to/threadlist
Figura 6n-n de desempenho aleatório
A Figura 6 mostra que o desempenho de gravação alcança em torno do 31K IOPS e permanece estável de 32 threads para 512 threads. Por outro lado, o desempenho de leitura aumenta com o aumento do número de solicitações de i/o com um desempenho máximo de cerca de 47K IOPS a 512 threads, que é o número máximo de threads testados para a solução. O ME4 requer um tamanho de fila maior para atingir o desempenho máximo de leitura e o gráfico indica que podemos obter um melhor desempenho se executarmos os threads simultâneos de 1024. No entanto, à medida que os testes são executados apenas com 8 clients, não temos núcleos suficientes para executar a contagem de threads do 1024.
Voltar para a parte superior
Os seguintes parâmetros de ajuste estavam no lugar durante a execução da caracterização de desempenho da solução.
O número de faixas padrão para o BeeGFS é 4. No entanto, o tamanho do fragmento e o número de destinos por arquivo (contagem de Stipe) podem ser configurados por diretório ou por arquivo. Para todos esses testes, o tamanho da fração do BeeGFS foi definido como 1MB e o número da fração foi definido como 1, conforme mostrado abaixo:
$beegfs-CTL--getentryinfo--Mount =/mnt/beegfs//mnt/beegfs/benchmark/--Verbose
Tipo de entrada:
EntryID do diretório: 1-5E72FAD3-1
parentID:
nó de metadados raiz: meta-numa0-1 [ID: 1]
detalhes do padrão de fração:
+ Type: RAID0
+ ChunkSize: 1m
+ Número de destinos de armazenamento: desejado: 1
+ Pool de armazenamento: 1 (padrão)
caminho do hash do inode: 61/4C/1-5E72FAD3-1
As páginas enormes transparentes foram desabilitadas e as seguintes configurações de memória virtual configuradas nos servidores de armazenamento e metadados:
As seguintes opções de ajuste foram usadas para os dispositivos de bloco de armazenamento nos servidores de armazenamento.
Além da opção acima, as seguintes opções de ajuste específicas do BeeGFS eram usadas:
beegfs-meta. conf
connMaxInternodeNum = 64
tuneNumWorkers = 12
tuneUsePerUserMsgQueues = true # optional
tuneTargetChooser = RoundRobin (benchmarking)
beegfs-Storage. conf
connMaxInternodeNum = 64
tuneNumWorkers = 12
tuneUsePerTargetWorkers = true
tuneUsePerUserMsgQueues = true # optional
tuneBindToNumaZone = 0
tuneFileReadAheadSize = 2m
beegfs-Client. conf
connMaxInternodeNum = 24
connBufSize = 720896
Esse blog anuncia a versão do Dell EMC solução de armazenamento de alta capacidade BeeGFS e destaca suas características de desempenho. Esta solução fornece um desempenho de pico de 23,7 GB/s para leituras e 22,1 GB/s para gravações usando benchmarks sequenciais do IOzone. Também vemos o pico de gravações aleatórias em 31.3 K IOPS e leituras aleatórias em 47,5 K IOPS.
Como parte das próximas etapas, vamos avaliar o desempenho dos metadados e N threads para um único arquivo (N para 1) IOR o desempenho desta solução. Um White Paper descrevendo os metadados e o desempenho do IOR da solução com mais detalhes sobre as considerações de projeto para essa solução de alta capacidade com alta disponibilidade deve ser publicado depois que o processo de validação e avaliação for concluído.