O ataque SSD pode ser mais rápido que o ramdisk?

9

Portanto, um ssd típico terá uma velocidade de leitura de 250 - 500 mb / segundo. E um carneiro terá cerca de 10x do que isso.

Minha pergunta é: 4 ssds com raid-0 podem ser mais rápidos que um único bloco de memória ram por algum motivo?

Ou eu vou com muita ram e ramdisk, ou 4 ssds com RAID-0. O que é mais rápido?

Koray Tugay
fonte

Respostas:

12

Portanto, um ssd típico terá uma velocidade de leitura de 250 - 500 mb / segundo. E um carneiro terá cerca de 10x do que isso.

Apenas a que tipo de RAM você está se referindo? Certamente não é algo que tem sido comumente usado em PCs recentemente, parece.

O SDRAM DDR3 pode fornecer trivialmente uma taxa de transferência de cerca de 10 GB / s (você precisa de DDR3-1333 para isso) e atualmente atinge cerca de 17 GB / s para o DDR3-2133.

Digamos que você distribua quatro SSDs capazes de fornecer 500 MB / se o sistema geral é capaz de lidar com isso (sem contenção de barramento, o sistema ainda está ligado à E / S, etc.). Isso fornece uma taxa de transferência máxima teórica de 2 GB / s. O 4xSSD perde quase um fator de 10.

DDR3 SDRAM tem uma latência na região 10 ns. Um bom SSD pode fornecer 100k IOPS, no máximo, o que se traduz em uma latência de 10.000 ns. (Por exemplo, o Intel 530 especifica IOPS de 41k para leituras aleatórias de 4k, o que fornece uma latência de quase 25.000 ns.)

Distribua quatro SSDs rápidos e ignore toda a sobrecarga, e você poderá obter 400k IOPS ou latência de 2.500 ns. O 4xSSD perde por um fator de 250.

Os dados do SSD precisam ir para algum lugar, e esse "algum lugar" será RAM. A CPU pode pegá-lo de lá, mas não fala diretamente com o SSD da mesma forma que com um disco rígido de prato giratório.

Se assumirmos que você não sofre de contenção de barramento no SSD, faz sentido assumir o mesmo para a RAM. O que leva à conclusão de que, por qualquer uma dessas métricas, um SSD é terrivelmente lento em comparação com o SDRAM DDR3.

RAM tem outras desvantagens. Mesmo em comparação com os SSDs, é muito caro por gigabyte e precisa de energia constante para reter seu conteúdo. Além disso, um disco RAM não funciona da mesma forma que a RAM, pois é uma construção de software no sistema operacional. Você ainda deve obter a maioria dos benefícios de desempenho da RAM, mas perde a mesma quantidade de RAM que pode fazer com que o sistema precise recorrer à troca com mais frequência (que é uma sentença de morte por desempenho) e provavelmente não oferecem o mesmo desempenho que a RAM bruta.

um CVn
fonte
ramdisk é então ..
Koray Tugay
11
@KorayTugay Se você precisa do máximo de desempenho, deve usar um disco RAM, mas lembre-se de que um disco RAM não funciona da mesma forma que a RAM e tem seu próprio conjunto de desvantagens, entre as quais o preço . (Além disso, enquanto eu aprecio a aceitar, eu encorajá-lo a esperar um ou dois dias antes de aceitar uma resposta em caso de alguém fornece uma resposta ainda melhor.)
um CVn
@KorayTugay: De um modo geral, a resposta para "Preciso de um RAMDisk?" é quase sempre "Não. Se você realmente precisasse, saberia o suficiente para não precisar perguntar". O que você está fazendo que o faz pensar que vai precisar?
afrazier
@afrazier development / testing com um enorme banco de dados e eu o acesso muitas vezes e muitos dados são obtidos a partir dele. Vou manter o db no carneiro. Faço isso por 8 a 10 horas por dia e a espera por 4 a 5 segundos parece muito tempo depois de algum tempo. Eu preciso acertar o db mais rápido.
Koray Tugay
5
Qualquer DBMS competente manterá o máximo de DB na RAM possível. Se o seu banco de dados é pequeno o suficiente para caber em um disco RAM, é pequeno o suficiente para caber na RAM. Ajustar adequadamente seu DBMS com um SSD fornecerá o desempenho que você procura - para desenvolvimento local, você pode tirar proveito de coisas como cache de write-back e se preocupar menos com o ACID. Um disco RAM está lutando contra o sistema.
afrazier
4

A verdadeira causa da resposta "não" não é apenas a comparação de diferenças entre os dois, mas porque o sistema operacional acabará por armazenar em cache os dados lidos do SSD. Isso armazenará em cache na sua RAM . Assim, uma leitura de bloco do SSD significa também uma gravação de bloco na RAM. Sempre.

É por isso que os discos de RAM são mais rápidos, mesmo em combinações de hardware muito especiais (por exemplo, um SSD muito rápido foi combinado com uma RAM muito lenta).

peterh
fonte
11
Esta é realmente a melhor resposta.
ChrisInEdmonton
sudo zfs set primarycache=none tankLá vai o cache baseado em RAM. (Supondo que você esteja usando o ZFS.)
um CVn 07/06
@ MichaelKjörling Isso mesmo, e mesmo em construções não-zfs, há possibilidades de desativar o cache de leitura. Mas, mesmo nesse caso, se você fizer uma chamada $ read () $, será realmente uma cópia do SSD para a RAM. Você não pode evitar isso, exceto se você estiver lendo os dados diretamente no cache da CPU (o que também significa que você evita o DMA), os AMD cpus (e talvez intels) tenham um gerenciador de memória integrado, acho que a versão ligeiramente modificada de alguma forma poderia fazer isso. Mas, mesmo neste caso, seria necessário modificar a CPU.
Peterh
3

Para responder à sua pergunta real: Não. A RAM tem uma ordem de magnitude mais largura de banda e uma ordem de magnitude menos latência. Não é nem perto.

Para responder à pergunta que você não está fazendo: O que você planeja fazer é uma má ideia, a menos que você tenha um caso de uso muito específico que exija esse tipo de largura de banda. Se você realmente precisa desse tipo de velocidade, obter um SSD baseado em PCIe (como um ioDrive ou um Intel 910 será muito mais rápido do que um pacote de SSDs SATA no RAID-0.

Qualquer SSD atual será rápido o suficiente para cargas de trabalho de consumidores e entusiastas e você será o gargalo.

afrazier
fonte
Na verdade, a latência DDR3 não é uma ordem de magnitude inferior à de um SSD. É três a quatro ordens de magnitude mais baixa. Veja minha resposta para alguns números reais. (A diferença de largura de banda é definitivamente no estádio, no entanto.)
um CVn
A latência não é importante, porque o IO acontece em blocos. Pelo menos em blocos de 4K. A largura de banda é importante.
Peterh
@ PeterHorvath: A latência ainda é um grande problema com os SSDs. Analise todas as pesquisas e parâmetros de consistência e os problemas de gagueira que os primeiros SSDs tiveram. E, como Michael Kjörling mencionou, a latência da RAM é várias ordens de magnitude menor que o SSD. A latência nos caches Lx é significativamente mais baixa ainda, e a latência do registro da CPU é ainda mais baixa. E tudo importa para o desempenho.
afrazier
1

A RAM sempre será mais rápida do que qualquer sistema de barramento periférico (como SATA) pode oferecer.

Mas quando você lida com um disco RAM, não lida apenas com a RAM. Há também um monte de software (o sistema de arquivos e os drivers de dispositivo) a considerar que "converte" a RAM bruta em algo que o sistema operacional verá como armazenamento em disco.

A rapidez com que um disco RAM será realmente depende totalmente da qualidade desse software.

Dito isto: normalmente ainda deve ser várias vezes mais rápido que a solução de armazenamento mais rápida que você pode conectar à placa-mãe.

Pode haver alguns casos em que padrões de uso específicos farão a diferença menor ou quase zero, mas sem mais detalhes sobre o que você fará com esse sistema, é impossível dizer se isso se aplicará à sua situação.

PS Lembre-se de que um disco RAM será volátil. Após a inicialização da máquina, você terá que carregá-la inicialmente com dados. Ao desligar a máquina, você terá que salvar o conteúdo (se necessário para a próxima execução). Se o sistema travar, você perde o disco RAM para salvar qualquer coisa.
Isso é algo que você precisará levar em consideração, especialmente se você espera reinicializações frequentes. Salvar / recarregar o conteúdo do disco RAM pode ser menos que trivial.

Tonny
fonte
Vou manter meu banco de dados em memória ram.
Koray Tugay