Este blog discute os principais recursos das Dell EMC Ready Solutions for HPC BeeGFS Storage , que foram anunciados recentemente. Este é o terceiro blog da série sobre a solução de armazenamento de alto desempenho BeeGFS. O primeiro blog anunciou o lançamento da solução. O segundo blog discute a escalabilidade das Dell EMC Ready Solutions for HPC BeeGFS Storage. Ele forneceu detalhes sobre as configurações básicas, as configurações escaláveis flexíveis e o desempenho real de leitura/gravação sequencial medido das várias configurações, demonstrando que a escalabilidade é linear em relação ao número de servidores na solução. O blog atual destacará o uso do "StorageBench", o benchmark de destinos de armazenamento integrado do BeeGFS.
BeeGFS é um file system de código aberto que pode ser baixado do www.beegfs.io. É um file system paralelo que distribui dados entre vários destinos de armazenamento. É um armazenamento definido por software que dissocia o file system lógico do hardware de armazenamento subjacente, permitindo que o usuário defina como e onde os dados são armazenados. O software do file system inclui recursos corporativos, como alta disponibilidade, imposição de cotas e listas de controle de acesso. Os principais recursos do BeeGFS são sua facilidade de uso, escalabilidade e flexibilidade. Sua usabilidade se origina do fato de que todos os componentes no servidor são daemons de espaço do usuário, enquanto o client é um módulo de kernel que não requer patches no kernel em si. Todos os componentes do BeeGFS podem ser instalados e atualizados sem reinicializar o servidor. Podemos adicionar clients e servidores ao sistema existente sem nenhum tempo de inatividade. Ao adicionar servidores e impulsionar o desempenho e a capacidade do file system, é possível fazer mais escalabilidade vertical no blog vinculado aqui. O BeeGFS dá suporte a várias distribuições do Linux e foi projetado para funcionar com qualquer file system local compatível com POSIX. O BeeGFS também dá suporte à execução de várias instâncias de determinado serviço no mesmo servidor.
As Dell EMC Ready Solutions for HPC BeeGFS Storage aproveitam todos os principais recursos do file system BeeGFS e são projetadas para alto desempenho. A solução usa servidores PowerEdge R740xd para armazenar e servir/processar metadados e dados. Cada servidor PowerEdge R740xd tem 24 SSDs NVMe Intel P4600 de 1,6 TB que são consideradas como o segundo grande salto na tecnologia de unidade, sendo as SSDs a primeira. Em ambientes de HPC, o espaço temporário geralmente pode ser um fator limitador. Pode ser muito pequeno ou muito lento. As Dell EMC Ready Solutions for HPC BeeGFS Storage foram projetadas para serem usadas como uma solução scratch e atendem ao armazenamento temporário usando o file system BeeGFS.
O BeeGFS inclui duas ferramentas integradas de benchmark que podem ajudar a caracterizar ou avaliar a rede ou o armazenamento NetBench e StorageBench , respectivamente. Quando o modo NetBench estiver ativado, os servidores descartarão as solicitações de gravação recebidas em vez de gravar os dados. Da mesma forma, em caso de solicitações de leitura, em vez de ler a partir do file system subjacente, somente os buffers de memória serão enviados aos clients. O modo NetBench destina-se a testar o throughput de streaming de rede independente dos discos subjacentes. Por outro lado, o StorageBench destina-se a medir o throughput de streaming do file system subjacente independentemente do desempenho da rede. O StorageBench é um benchmark de destinos de armazenamento que não usa a rede. O comando storage-bench simplesmente envia a solicitação aos destinos de armazenamento para começar a gravar/ler dados. Ao fazer isso, eliminamos o impacto da rede. O resultado que obtemos do banco de armazenamento é o melhor desempenho que o sistema pode alcançar se o desempenho da rede for ideal. Este blog ilustra como o StorageBench pode ser usado para comparar o desempenho de diferentes destinos de armazenamento e, assim, identificar destinos defeituosos ou configurados incorretamente.
O StorageBench não usa o file system montado. Quando executamos o StorageBench, há apenas um destino por arquivo. O Storagebench cria um diretório em cada destino de armazenamento no sistema em que os arquivos de teste são criados igual ao número de threads de teste. Os dados são enviados diretamente para isso para mostrar o throughput de baixo nível disponível para cada destino de armazenamento. Sem qualquer comunicação de rede, o fracionamento de arquivos não pode ser simulado. Portanto, os resultados de referência de desempenho de armazenamento são comparáveis à E/S do client com o particionamento desativado. Quando os benchmarks reais são executados, o arquivo é fracionado entre 4 destinos de armazenamento se o padrão de particionamento for adotado.
Para testar diferentes destinos de armazenamento, as configurações pequenas e médias descritas no blog sobre a escalabilidade da solução de armazenamento Dell EMC BeeGFS foram usadas. Ambas as configurações têm o mesmo número de destinos de metadados configurados no RAID 1. Eles diferem na configuração de RAID dos destinos de armazenamento. Embora a configuração pequena tenha o armazenamento, os destinos configurados no RAID 0 de 6 unidades, a configuração média tem os destinos de armazenamento configurados no RAID 10 de 6 unidades. Os destinos de armazenamento configurados na configuração De pequeno e médio porte são tabulados abaixo:
Tabela 1 Configuração do banco de testes | ||
---|---|---|
Configuração | Médio - RAID 10 para destinos de armazenamento | Pequeno - RAID 0 para destinos de armazenamento |
Número de destinos de metadados | 6 | 6 |
Número de instâncias do serviço de metadados | 6 | 6 |
Número de servidores de armazenamento | 5 | 2 |
Número de destinos de armazenamento | 22 | 10 |
Número de serviços de armazenamento por servidor | 4 | 4 |
Número de serviços de armazenamento por zona NUMA | 2 | 2 |
Número de destinos por instância do serviço de armazenamento | 2 | 2 |
Nota: A configuração acima da configuração média é apenas para testar o throughput dos destinos de armazenamento configurados em diferentes configurações de RAID usando a ferramenta StorageBench.
O benchmark de armazenamento é iniciado e monitorado com a ferramenta beegfs-ctl. O pacote beegfs-utils fornece a ferramenta de linha de comando beegfs-ctl, que pode ser usada para executar o benchmark de destinos de armazenamento. O exemplo a seguir inicia um benchmark de gravação em todos os destinos de todos os servidores de armazenamento BeeGFS com um tamanho de bloco de E/S de 512 KB, usando 16 threads por destino, cada um dos quais gravará 200 Gb de dados em seu próprio arquivo.
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
Write storage benchmark was started.
Você pode consultar o status com o argumento --status de beegfs-ctl.
Status de referência de desempenho do servidor:
em execução: 10
"Em execução: A saída de 10" indica que há no total 10 destinos de armazenamento configurados no sistema.
Para consultar o status/os resultados do benchmark de todos os destinos, o seguinte comando pode ser executado:
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --status Server
benchmark status:
Finished: 10 Resultados do
benchmark de gravação:
throughput mínimo: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], TARGETID: Throughput máximo de 50
: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], TARGETID: Throughput médio de 48
: 4907091 throughput agregado de KiB/s
: 49070915 quib/s
A adição detalhada ao comando acima mostra a lista de todos os destinos e seu respectivo throughput.
[root@meta-stor ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 10 Resultados do
benchmark de gravação:
throughput mínimo: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], TARGETID: 6
Throughput máximo: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], TARGETID: 2 Throughput
médio: 4907091 throughput agregado de KiB/s
: 49070915 Lista de kiB/s
de todos os destinos:
1 5368477 KiB/s nodeID: meta-stor-numa1-1 [ID: 1]
2 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2]
3 4706368 KiB/s nodeID: stor1-numa0-1 [ID: 3]
4 4896077 KiB/s nodeID: stor1-numa1-1 [ID: 4]
5 4872876 KiB/s nodeID: stor1-numa1-2 [ID: 5]
6 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6]
7 4879054 KiB/s nodeID: stor2-numa1-2 [ID: 7]
8 4864737 KiB/s nodeID: stor2-numa1-1 [ID: 8]
9 4696152 KiB/s nodeID: stor2-numa0-1 [ID: 9]
10 4726202 KiB/s nodeID: stor2-numa0-2 [ID: 10]
O throughput médio por destino de armazenamento configurado no RAID 0 é de 5,02 GB/s.
O exemplo a seguir inicia um benchmark de gravação em todos os destinos de todos os servidores de armazenamento BeeGFS com um tamanho de bloco de E/S de 512 KB, usando 16 threads por destino, cada um dos quais gravará 200 Gb de dados em seu próprio arquivo.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
Write storage benchmark was started.
Você pode consultar o status com o argumento --status de beegfs-ctl.
Status de referência de desempenho do servidor:
em execução: 22
A adição detalhada ao comando acima mostra a lista de todos os destinos e seu respectivo throughput.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 22 Resultados do
benchmark de gravação:
throughput mínimo: 2705987 NóID de KiB/s: node006-numa0-1 [ID: 19], TARGETID: 1
Throughput máximo: 3364311 NóID de KiB/s: node001-numa1-1 [ID: 1], TARGETID: 1
throughput médio: 3212845 throughput agregado de KiB/s
: 70682603 quib/sLista de todos os destinos:
1 3364311 NóID de KiB/s: node001-numa1-1 [ID: 1]
2 3361591 KiB/s nodeID: node001-numa1-2 [ID: 2]
3 3309530 KiB/s nodeID: node002-numa0-1 [ID: 3]
4 3312840 NóID de KiB/s: node002-numa0-2 [ID: 4]
5 3332095 KiB/s nodeID: node002-numa1-1 [ID: 5]
6 3323319 KiB/s nodeID: node002-numa1-2 [ID: 6]
7 3313000 KiB/s NodeID: node003-numa0-1 [ID: 7]
8 3321214 KiB/s nodeID: node003-numa0-2 [ID: 8]
9 3335072 KiB/s nodeID: node003-numa1-1 [ID: 9]
10 3339743 KiB/s nodeID: node003-numa1-2 [ID: 10]
11 3302175 KiB/s nodeID: node004-numa0-1 [ID: 11]
12 3309474 KiB/s nodeID: node004-numa0-2 [ID: 12]
13 3329879 KiB/s nodeID: node004-numa1-1 [ID: 13]
14 3328291 KiB/s nodeID: node004-numa1-2 [ID: 14]
15 3306132 KiB/s nodeID: node005-numa0-1 [ID: 15]
16 3307096 KiB/s nodeID: node005-numa0-2 [ID: 16]
17 3318436 KiB/s nodeID: node005-numa1-1 [ID: 17]
18 3329684 KiB/s nodeID: node005-numa1-2 [ID: 18]
19 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19]
20 2716438 KiB/s nodeID: node006-numa0-2 [ID: 20]
21 2707970 KiB/s nodeID: node006-numa1-1 [ID: 21]
22 2708326 KiB/s nodeID: node006-numa1-2 [ID: 22]
O throughput médio por destino de armazenamento é de 3,29 GB/s.
A partir do resultado dos testes de benchmark do StorageBench feitos em duas configurações diferentes do BeeGFS, um com destinos de armazenamento configurados no RAID 0 e outro com destinos de armazenamento configurados no RAID 10, é evidente que o desempenho de gravação é melhor com os destinos de armazenamento configurados no RAID 0 em vez do RAID 10. Quando o comando dd foi usado para gravar um arquivo 10G com tamanho de block de 1 M e "oflag=direct", a média foi de cerca de 5,1 GB/s para o sistema pequeno configurado no RAID 0, enquanto o throughput médio foi de cerca de 3,4 GB/s para o sistema médio configurado no RAID 10, que é comparável aos resultados obtidos usando a ferramenta storagebench.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 33 Resultados
do benchmark de leitura:
throughput mínimo: 2830479 NóID de KiB/s: node003-numa1-2 [ID: 14], TARGETID: Throughput máximo de 14
: 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22], TARGETID: Throughput médio de 22
: 2917836 throughput agregado de KiB/s
: 96288596 Lista de kiB/s
de todos os destinos:
1 2950039 KiB/s nodeID: node001-numa1-1 [ID: 1]
2 2956121 KiB/s nodeID: node001-numa1-2 [ID: 2]
3 2954473 KiB/s nodeID: node001-numa1-3 [ID: 3]
4 2957658 KiB/s nodeID: node002-numa0-1 [ID: 4]
5 2947109 KiB/s nodeID: node002-numa0-2 [ID: 5]
6 2969886 KiB/s nodeID: node002-numa0-3 [ID: 6]
7 2892578 KiB/s nodeID: node002-numa1-1 [ID: 7]
8 2886899 KiB/s nodeID: node002-numa1-2 [ID: 8]
9 2888972 KiB/s nodeID: node002-numa1-3 [ID: 9]
10 2861995 KiB/s nodeID: node003-numa0-1 [ID: 10]
11 2874314 KiB/s nodeID: node003-numa0-2 [ID: 11]
12 2879096 KiB/s nodeID: node003-numa0-3 [ID: 12]
13 2832635 KiB/s nodeID: node003-numa1-1 [ID: 13]
14 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14]
15 2830971 KiB/s nodeID: node003-numa1-3 [ID: 15]
16 2986890 KiB/s nodeID: node004-numa0-1 [ID: 16]
17 2979197 KiB/s nodeID: node004-numa0-2 [ID: 17]
18 2983958 KiB/s nodeID: node004-numa0-3 [ID: 18]
19 2897974 KiB/s nodeID: node004-numa1-1 [ID: 19]
20 2900880 KiB/s nodeID: node004-numa1-2 [ID: 20]
21 2904036 KiB/s nodeID: node004-numa1-3 [ID: 21]
22 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22]
23 3021558 KiB/s nodeID: node005-numa0-2 [ID: 23]
24 3017387 KiB/s nodeID: node005-numa0-3 [ID: 24]
25 2921480 KiB/s nodeID: node005-numa1-1 [ID: 25]
26 2930226 KiB/s nodeID: node005-numa1-2 [ID: 26]
27 2930548 KiB/s nodeID: node005-numa1-3 [ID: 27]
28 2900018 KiB/s nodeID: node006-numa0-1 [ID: 28]
29 2898520 NóID de KiB/s: node006-numa0-2 [ID: 29]
30 2907113 KiB/s nodeID: node006-numa0-3 [ID: 30]
31 2855079 KiB/s nodeID: node006-numa1-1 [ID: 31]
32 2853527 KiB/s nodeID: node006-numa1-2 [ID: 32]
33 2861480 KiB/s nodeID: node006-numa1-3 [ID: 33]
A partir do resultado acima, é evidente que todos os destinos de armazenamento têm um desempenho uniforme e não há destinos defeituosos no sistema.