Le raid SSD peut-il être plus rapide que le disque virtuel?

9

Ainsi, un ssd typique aura une vitesse de lecture de 250 à 500 mb / seconde. Et un bélier aura environ 10 fois plus que cela.

Ma question est: 4 ssds avec raid-0 peuvent-ils être plus rapides qu'un seul bloc de mémoire RAM pour une raison quelconque?

Je vais soit aller avec beaucoup de ram et ramdisk, soit 4 ssds avec raid-0. Lequel est plus vite?

Koray Tugay
la source

Réponses:

12

Ainsi, un ssd typique aura une vitesse de lecture de 250 à 500 mb / seconde. Et un bélier aura environ 10 fois plus que cela.

De quel type de RAM parlez-vous? Ce n'est certainement pas quelque chose qui a été utilisé couramment dans les PC récemment, semble-t-il.

La SDRAM DDR3 peut vous donner trivialement un taux de transfert d'environ 10 Go / s (vous avez besoin de DDR3-1333 pour cela) et atteint actuellement environ 17 Go / s pour DDR3-2133.

Supposons que vous agrégiez quatre SSD capables de fournir 500 Mo / s et que le système global soit capable de gérer cela (pas de conflit de bus, le système est toujours lié aux E / S, etc.). Cela vous donne un théorique débit maximum de 2 Go / s. Le 4xSSD perd par près d'un facteur 10.

La SDRAM DDR3 a une latence dans la région 10 ns. Un bon SSD peut vous donner 100 000 IOPS, des sommets, ce qui se traduit par une latence de 10 000 ns. (Par exemple, l'Intel 530 spécifie un IOPS de 41 000 pour des lectures aléatoires de 4 000, ce qui vous donne une latence de près de 25 000 ns.)

Répartissez quatre SSD rapides et ignorez tous les frais généraux, et vous pourriez obtenir 400 k IOPS, ou une latence de 2500 ns. Le 4xSSD perd par un facteur de 250.

Les données du SSD doivent aller quelque part, et ce «quelque part» sera la RAM. Le CPU peut le saisir à partir de là, mais il ne parle pas plus directement au SSD qu'il ne parle directement à un disque dur à plateau tournant.

Si nous supposons que vous ne souffrez pas de conflits de bus sur le SSD, il est logique de supposer la même chose pour la RAM. Ce qui conduit à la conclusion que selon l'une ou l'autre de ces mesures, un SSD est horriblement lent par rapport à la SDRAM DDR3.

La RAM a d'autres inconvénients. Même par rapport aux SSD, il est très cher par gigaoctet et nécessite une alimentation constante pour conserver son contenu. En outre, un disque RAM ne fonctionne pas de la même manière que la RAM, car il s'agit d'une construction logicielle dans le système d'exploitation. Vous devriez toujours profiter de la plupart des avantages de la RAM en termes de performances, mais vous perdez la même quantité de RAM, ce qui peut obliger le système à recourir à des échanges plus souvent (ce qui est une condamnation à mort pour les performances) et ce ne sera probablement pas le cas. donner les mêmes performances que la RAM brute.

un CVn
la source
ramdisk c'est alors ..
Koray Tugay
1
@KorayTugay Si vous avez le plus besoin de performances absolues, vous devriez opter pour un disque RAM, mais gardez à l'esprit qu'un disque RAM ne fonctionne pas exactement de la même manière que la RAM et a son propre ensemble d'inconvénients, dont le moindre n'est pas le prix . (De plus, bien que j'apprécie l'acceptation, je vous encourage à attendre un jour ou deux avant d'accepter une réponse au cas où quelqu'un d'autre fournirait une réponse encore meilleure.)
un CVn
@KorayTugay: De manière générale, la réponse à "Ai-je besoin d'un RAMDisk?" est presque toujours "Non. Si vous en aviez vraiment besoin, vous en sauriez assez pour ne pas avoir à demander." Que faites-vous qui vous fait penser que vous en aurez besoin?
afrazier
@afrazier développement / test avec une énorme base de données et j'y accède plusieurs fois et beaucoup de données y sont extraites. Je vais garder le db dans le bélier. Je fais cela pendant 8 à 10 heures par jour et attendre 4 à 5 secondes me semble trop long après un certain temps. J'ai besoin de frapper le db plus vite.
Koray Tugay
5
Tout SGBD compétent conservera autant de DB que possible dans la RAM. Si votre base de données est suffisamment petite pour tenir dans un RAMdisk, elle est suffisamment petite pour tenir dans la RAM. Ajuster correctement votre SGBD avec un SSD vous donnera les performances que vous recherchez - pour le développement local, vous pouvez même profiter de choses comme la réécriture de la mise en cache et vous soucier moins de l'ACID. Un RAMdisk combat le système.
afrazier
4

La vraie cause de la réponse «non» n'est pas seulement la comparaison des différences entre les deux, mais parce que le système d'exploitation finira par mettre en cache les données lues sur le SSD. Il mettra cela en cache dans votre RAM . Ainsi, une lecture de bloc à partir du SSD signifie également une écriture de bloc dans la RAM. Toujours.

C'est pourquoi les disques RAM sont plus rapides même dans des combinaisons matérielles très spéciales (par exemple, un SSD très rapide a été combiné avec une RAM très lente).

peterh - Réintégrer Monica
la source
1
C'est en fait la meilleure réponse.
ChrisInEdmonton
sudo zfs set primarycache=none tankVoilà votre cache basé sur la RAM. (En supposant bien sûr que vous utilisez ZFS.)
un CVn le
@ MichaelKjörling C'est vrai, et même sur les constructions non zfs, il existe des possibilités de désactiver le cache de lecture. Mais même dans ce cas, si vous effectuez un appel $ read () $, ce sera en fait une copie du SSD vers la RAM. Vous ne pouvez pas éviter cela, sauf si vous lisez les données directement dans le cache du processeur (ce qui signifie également que vous évitez en quelque sorte le DMA), les processeurs AMD (et peut-être Intel) ont un gestionnaire de mémoire intégré, je pense que leur version légèrement modifiée pourrait en quelque sorte le faire. Mais même dans ce cas, il faudrait modifier le CPU.
peterh
3

Pour répondre à votre question réelle: Non. La RAM a un ordre de grandeur plus de bande passante et un ordre de grandeur moins de latence. Ce n'est même pas proche.

Pour répondre à la question que vous ne posez pas: ce que vous prévoyez de faire est une mauvaise idée, sauf si vous avez un cas d'utilisation très spécifique qui nécessite ce type de bande passante. Si vous avez vraiment besoin de ce type de vitesse, obtenir un SSD basé sur PCIe (comme un ioDrive ou un Intel 910 va être beaucoup plus rapide qu'un sac de SSD SATA en RAID-0.

Tout SSD actuel sera assez rapide pour les charges de travail des consommateurs et des passionnés que vous allez être le goulot d'étranglement.

afrazier
la source
En fait, la latence DDR3 n'est pas un ordre de grandeur inférieur à celui d'un SSD. C'est trois à quatre ordres de grandeur plus bas. Voir ma réponse pour quelques chiffres réels. (La différence de bande passante est certainement dans le fond, cependant.)
un CVn
La latence n'est pas importante, car l'IO se produit par blocs. Au moins en blocs 4K. La bande passante est importante.
peterh
@PeterHorvath: La latence est toujours un gros problème avec les SSD. Examinez toutes les recherches et les repères en matière de cohérence et les problèmes de bégaiement des premiers SSD. Et comme Michael Kjörling l'a mentionné, la latence de la RAM est de plusieurs ordres de grandeur inférieure à celle du SSD. La latence sur les caches Lx est encore nettement inférieure et la latence du registre CPU est encore plus faible. Et tout est important pour la performance.
afrazier
1

La RAM sera toujours plus rapide que n'importe quel système de bus périphérique (comme SATA).

Mais lorsque vous traitez avec un disque RAM, vous ne traitez pas uniquement avec de la RAM. Il y a aussi un tas de logiciels (le système de fichiers et les pilotes de périphériques) pour considérer que "convertir" la RAM brute en quelque chose que le système d'exploitation verra comme stockage sur disque.

La vitesse à laquelle un disque RAM sera réellement dépend de la qualité de ce logiciel.

Cela dit: normalement, cela devrait être plusieurs fois plus rapide que la solution de stockage la plus rapide que vous pouvez attacher à la carte mère.

Il peut y avoir des cas où des modèles d'utilisation spécifiques réduiront la différence ou presque zéro, mais sans plus de détails sur ce que vous allez faire avec un tel système, il est impossible de dire si cela s'appliquera à votre situation.

PS Gardez à l'esprit qu'un disque RAM sera volatile. Après le démarrage de la machine, vous devrez d'abord la charger avec des données. À l'arrêt de la machine, vous devrez enregistrer le contenu (si vous en avez besoin pour la prochaine exécution). Si le système tombe en panne, vous perdez le disque RAM avec pour enregistrer quoi que ce soit.
C'est quelque chose que vous devrez prendre en compte, surtout si vous prévoyez des redémarrages fréquents. L'enregistrement / rechargement du contenu du disque RAM peut être moins que trivial.

Tonny
la source
Je garderai ma base de données dans ram.
Koray Tugay