adicionar pilhas de unidades a um ataque 0 aumenta o desempenho?

10

adicionar pilhas de unidades a um ataque 0 aumenta o desempenho? Eu sei que duas unidades em um ataque listrado geralmente serão mais rápidas que uma única unidade, mas observarei uma diferença no desempenho entre, por exemplo, 2 unidades em um ataque listrado e 8? existe um limite geral para o número de unidades no ataque antes que você realmente não obtenha mais benefícios?

uma pergunta semelhante foi feita aqui

A adição de mais unidades a uma matriz RAID 10 aumenta o desempenho?

mas estou realmente perguntando se a adição de muitas unidades a um raid 0 tem melhorias em relação à adição de, digamos, 2 ou 4. o desempenho continua aumentando?

Peter Cullen
fonte

Respostas:

11

Em teoria, sim, mais unidades em um raid0 levariam a um desempenho mais alto porque a carga é compartilhada por mais unidades. No entanto, na prática, você seria limitado pela largura de banda do controlador RAID, pelo desempenho da CPU e da memória e similares. O aumento de desempenho não seria linear, ou seja, 4 discos não é exatamente duas vezes mais rápido que 2 discos.

Em qualquer sistema razoavelmente moderno com um controlador de raid, ou mesmo usando um software raid com o mdadm do linux, o uso de 8 unidades será mais rápido que o uso de 2 e você não deve ficar retido pelo restante do desempenho do sistema. A CPU, invasão e / ou controlador de disco, memória, tudo deve ser capaz de lidar com isso. Você pode ver um aumento no uso dos recursos do sistema, quanto mais unidades você adicionar. Especialmente se você usar o controlador SATA integrado em uma combinação de softtraid. Mas nada que realmente prejudique a usabilidade geral. Se estiver usando o linux, convém usar um kernel que foi configurado sem "preempção" para que tarefas orientadas ao servidor tenham preferência sobre a capacidade de resposta do usuário.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

É claro que quanto mais unidades você adicionar, maior a chance de uma delas falhar e todo o seu ataque será destruído. Eu esperaria que um ataque de 8 unidades não durasse mais de um ano ou dois, se você tiver sorte. Um ataque de 16 unidades exigiria problemas e, então, eu consideraria um ataque10, ainda seria rápido o suficiente e você tem menos com o que se preocupar.

Quanto a quantas unidades maximizariam os recursos de um sistema, eu não saberia a menos que tivesse especificações detalhadas do sistema. Eu acho que você ficaria mais limitado com a taxa de falhas, se passar por mais de 16 discos (prefiro não gostar de pensar nisso).

Naturalmente, você usaria o raid0 apenas para dados que podem ser perdidos a qualquer momento sem problemas. Seria ótimo para coisas como um servidor de compilação ou espaço para grandes cálculos científicos. Na verdade, é nesses cenários que eu costumava usar um raid0 e é uma ótima maneira de extrair um pouco mais de vida de um monte de discos mais antigos, de menor capacidade e baratos, que de outra forma estariam coletando poeira. Você pode até misturar tamanhos, pelo menos com o mdadm.

Se estiver usando mdadm, pode valer a pena considerar usar apenas um raid10, pois em determinadas configurações ele pode se aproximar do desempenho de um raid0, que é o desempenho de leitura de um raid0 e o desempenho de gravação já melhorado em relação a outros níveis de ataque (exceto o raid0). Você obteria melhor redundância do que outros níveis de raid, com apenas uma leve penalidade de velocidade em comparação com um raid0. Esse seria o melhor dos dois mundos, você não encontra com frequência.

https://en.wikipedia.org/wiki/RAID#Non-standard_levels

O MD MD RAID 10 do Linux fornece um driver RAID geral que, em seu layout "próximo", assume como padrão um RAID 1 padrão com duas unidades e um RAID 1 + 0 padrão com quatro unidades; no entanto, pode incluir qualquer número de unidades, incluindo números ímpares. Com seu layout "distante", o MD RAID 10 pode executar tanto listrado quanto espelhado, mesmo com apenas duas unidades no layout f2; isso executa o espelhamento com leituras distribuídas, fornecendo o desempenho de leitura do RAID 0. O RAID 1 regular, conforme fornecido pelo RAID do software Linux, não distribui as leituras, mas pode executar leituras em paralelo.

Conforme sugerido nos comentários, a mistura de tamanhos com o mdadm não aumentará a velocidade se você utilizar todo o espaço em disco, em vez de permitir que o menor disco defina o tamanho da matriz.

Além disso, o tempo de busca não melhora em um raid0 e pode até se tornar um pouco mais lento. Para um raid0 baseado em SSD, o tempo de busca seria tão pequeno (entre 0,08 e 0,16 ms https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ), não importaria muito o que eu esperava.

aseq
fonte
Se você deseja misturar tamanhos, não poderá aplicar o RAID0, pelo menos para usar todo o espaço que esses discos tiverem. Você precisa usar o JBOD, o que não aumenta o desempenho.
Tero Kilkanen 27/05
Você pode misturar tamanhos usando o mdadm, é muito flexível, o mdadm ainda permite que você configure um ataque de 3 discos10. Eu não esperaria que você pudesse misturar tamanhos em controladores de ataque, eles são menos flexíveis, mas mais rápidos.
Aseq 27/05
1
Eu verifiquei isso e, se você quiser RAID0, o menor dispositivo da matriz definirá o tamanho da matriz completa. Ou seja, se você tiver unidades de 100 GB, 200 GB e 300 GB, obterá uma matriz RAID0 de 300 GB e espaço livre de 100 GB e 200 GB para usar para outros fins. No modo Linear, você obtém a capacidade completa de todos os dispositivos, mas não o desempenho paralelo.
Tero Kilkanen 27/05
1
Isso parece certo sim.
Aseq 28/05
2
Com a mídia rotacional, também não há um problema de tempo de busca versus tempo de transferência? Adicionar mais disco espalha a quantidade que está sendo lida / gravada em mais pratos (cada um tem que fazer menos == mais rápido), mas todos ainda precisam executar uma operação de busca (não reduzida adicionando mais unidades). Portanto, dependendo do tipo de operação que você está executando (por exemplo, perda de pequenas leituras versus algumas grandes), aumentar a velocidade de transferência (adicionando mais unidades) pode fazer uma diferença pequena ou grande.
Molomby 29/05
1

Depende da carga de trabalho, mas o IMHO sim, a adição de 2 discos adicionais à matriz de 2 discos existente deve proporcionar um melhor desempenho geral.

Você precisa perceber onde estão os gargalos:

  • CPU - quanto fluxo de dados a CPU pode suportar,
  • barramento / controlador - quantos dados ele pode transportar,
  • SSD / HDD - quantos dados ele pode dar / receber.

Vamos supor que exista um RAID de software Linux, e a adição de dois discos adicionais PODE resultar em:

  • ~ tempo de acesso duas vezes menor ao bloco de dados grande o suficiente, o que resulta em;
  • ~ IOPS duplo,
  • ~ taxa de transferência dupla, assumindo que o controlador tenha barramento suficiente e a CPU possa lidar com o tráfego.

* ~ nunca há um aumento de duas vezes nos seguintes fatores, sempre menos 10 a 20%. Parece mais ou menos linear. Por favor, não trate isso como uma resposta autorizada, eu não fiz nenhum estudo sobre isso.

Michal Sokolowski
fonte