La RAM est bon marché et beaucoup plus rapide que les SSD. C'est juste volatile. Alors, pourquoi les ordinateurs ne disposent-ils pas de BEAUCOUP de RAM et, à la mise sous tension, chargent-ils tout dans la RAM du disque dur / SSD et exécutent-ils tout à partir de là, en supposant qu'il n'y a aucun besoin réel de conserver quoi que ce soit en dehors de la mémoire? Les ordinateurs ne seraient-ils pas beaucoup plus rapides?
Bien sûr, le système d'exploitation actuel peut ne pas supporter cela du tout, mais y a-t-il une raison pour que la RAM ne soit pas utilisée de cette façon?
Réponses:
Il y a quelques raisons pour lesquelles la RAM n'est pas utilisée de cette façon:
Cela dit: Oui, les disques RAM existent. Même en tant que carte PCI avec sockets DIMM et en tant qu'appareils pour des IOps très élevées. (Principalement utilisé dans les bases de données d'entreprise avant que les disques SSD ne deviennent une option). Ces choses ne sont pas bon marché cependant.
Voici deux exemples de cartes de disque RAM bas de gamme qui ont été mises en production:
Notez qu'il existe bien plus de moyens de le faire que de simplement créer un disque RAM dans la mémoire de travail commune.
Vous pouvez:
Je suis sûr qu’il ya encore beaucoup à décrire, d’Amiga RAD: réinitialiser les disques RAM restants sur IOPS, porter l’égalisation et Dieu sait quoi. Cependant, je vais couper ce court et ne liste qu'un seul élément supplémentaire:
Prix de la DDR3 (DRAM actuelle) par rapport aux prix du SSD:
la source
RAM loses its contents when powered off.
Pour être exact, seule la RAM volatile, mais la RAM non-volatile conserve tout, même lorsqu'elle est éteinte, comme par exemple les puces Flash . En ce sens, le SSD n'est pas différent de la RAM, mais en est un sous-type.Les systèmes d'exploitation le font déjà, avec le cache de page :
Lorsque vous lisez une page à partir d'un disque, votre système d'exploitation charge ces données en mémoire et les conserve jusqu'à ce que la mémoire soit mieux utilisée. Si vous avez suffisamment de mémoire, votre système d'exploitation ne lit chaque page qu'une fois, puis l'utilise à partir de la mémoire. La seule raison pour laquelle le système d'exploitation effectuera des E / S réelles sur disque est s'il doit lire une page qui n'est pas déjà en mémoire ou si une page est écrite sur (dans ce cas, vous voulez probablement qu'elle soit enregistrée sur le disque).
Un des avantages de faire les choses de cette façon est que vous n’avez pas à charger la totalité du disque dur dans la mémoire, ce qui est utile s’il ne tient pas, et cela signifie également que vous ne perdez pas de temps à lire des fichiers non traités par vos applications. avoir besoin. Un autre avantage est que le cache peut être supprimé chaque fois que le système d'exploitation a besoin de plus de mémoire (il est préférable de lire votre prochain disque plus lentement, plutôt que de faire planter vos programmes, car ils manquent de mémoire). De plus, il est utile que les utilisateurs n'aient pas besoin de décider manuellement de ce qui doit ou non figurer dans le disque virtuel: tout ce que vous utilisez le plus souvent sera automatiquement conservé dans la mémoire principale.
Si vous avez beaucoup de mémoire, mais que vos applications ne tournent pas aussi vite que prévu, il y a de fortes chances qu'elles soient plus lentes car elles fonctionnent en toute sécurité. Par exemple, SQLite est beaucoup plus rapide si vous lui dites de ne pas attendre que les écritures soient terminées, mais votre base de données sera complètement détruite si vous ne vous arrêtez pas proprement.
En outre, il
/tmp
s’agit généralement d’un disque virtuel sur les distributions Linux, car il est acceptable que ces données soient perdues. Il y a encore un débat quant à savoir si c'est une bonne idée, car si trop de données sont écrites/tmp
, vous risquez de manquer de mémoire.la source
Comme Alan Shutko l'a souligné dans son commentaire sur la question, la RAM n'est pas vraiment bon marché.
Voici quelques points de données. Lorsque je recherche sur Google 4 Go de RAM, 64 Go SSD et 1 To HDD (disque dur mécanique), voici les coûts que je vois (à compter du 25 août 2013):
4 Go de RAM = 32 $ - 36 $ => RAM = ~ 8 $ par Go
64 Go SSD = 69 USD - 76 USD => SSD = ~ 1 USD par Go
1 To HDD = 80 USD => HDD = 0,08 USD par Go
Whoa! Les disques durs sont 100 fois moins chers que la RAM! Et les disques SSD sont 8 fois moins chers que la RAM.
(De plus, comme indiqué dans d'autres réponses, la RAM est intrinsèquement volatile et vous avez donc besoin d'une autre forme de stockage persistant.)
la source
Je fais toutes mes opérations de lecture / écriture immédiates pour la génération de contenu sur des disques RAM sur mon ordinateur local. J'y stocke également mes dossiers de journalisation MongoDB, ainsi que mes compilateurs, mes interpréteurs Python et ma bibliothèque standard. Ce disque est enregistré à l’arrêt et restauré au démarrage. Le deuxième disque RAM que j'utilise est de 64 mégaoctets et tous les dossiers de cache de mon navigateur Internet y pointent. celui-ci est perdu à la fermeture et se vide quand il est plein.
Utiliser les bons outils pour le travail, je suppose, serait la réponse que je vous donnerais. Je génère des données 30 à 1000 fois plus rapidement avec un disque RAM que sur mon disque Western Digital à 7 200 tr / min.
C'est le programme que j'utilise: http://www.romexsoftware.com/en-us/primo-ramdisk/
... et quand 32gigs de Ram coûte moins de 200 $, je ne vois pas pourquoi cela ne deviendrait pas plus courant.
la source
Oui, c’est la prémisse de nombreuses bases de données en mémoire qui apparaissent sur le marché. SAP HANA en est un exemple. L'idée est que la RAM est bon marché et que, d'un point de vue performances, les opérations de lecture / écriture sur RAM sont 1000 fois plus rapides que les opérations sur disque. Ainsi, la plupart des données sont conservées dans la RAM et vous définissez ensuite une stratégie de vieillissement des données à l'aide de laquelle les anciennes données sont recyclées dans un stockage froid (c.-à-d. Un disque).
la source
Brève explication :
La première fois qu'une application est exécutée, elle est transférée du disque dur ou du réseau vers la RAM. Alors, ne vous inquiétez pas, vous le faites déjà.
Mais, en général, il n’existe pas un seul fichier d’application / processus et certaines opérations d’E / S ciblées sur le disque dur ou le réseau (autres fichiers de l’application ou autres opérations d’E / S avec système, etc.), ce qui peut ralentir votre application. Ceux-ci pourraient être dirigés vers le disque RAM, mais vous devriez considérer que les suppressions de disque RAM à la mise hors tension et doivent être remplies à nouveau au démarrage.
Et la RAM n'est pas si bon marché que celle présentée dans la question. Vous devez compter non seulement le coût de la mémoire RAM, mais également le coût de la RAM en fonctionnement, y compris les sockets sur votre carte mère (ceux-ci sont limités / rares et donc plus précieux) et le coût des données perdues lorsque l'alimentation est en panne.
Par exemple, un ordinateur avec 1 To de disque dur pourrait être acheté à bon marché et il s’agit d’une informatique domestique, l’ordinateur avec 1 To de mémoire vive est dans la gamme des supercalculateurs. (mais Intel travaille sur quelque chose de moyen: http://vr-zone.com/articles/more-on-xeon-e5-terabyte-of-ram-even-at-midrange-/14366.html )
la source
C'est une excellente question et je trouve les réponses fascinantes. Je vais commenter ceci en tant que DBA Oracle et mes réponses sont spécifiques à la base de données Oracle. C'est une grave erreur que beaucoup de gens font quand ils travaillent avec Oracle. Je ne sais pas si cela s'applique également à d'autres applications. Ce n'est pas censé être hors sujet, mais est conçu comme une réponse spécialisée.
Lorsque vous optimisez les performances avec Oracle, vous cherchez vraiment à éliminer les goulots d'étranglement. Bien que la plupart d'entre nous ne le disent pas, il est basé sur la théorie des contraintes: https://en.wikipedia.org/wiki/Theory_of_constraints
La mémoire peut ne pas être votre goulot d'étranglement. Oracle dispose de mécanismes complexes pour gérer la mémoire et une simple augmentation de la mémoire peut réellement ralentir les choses si le goulot d'étranglement se situe dans d'autres domaines. Permettez-moi de vous donner un exemple très commun.
Les requêtes semblent être lentes. Le consensus est que si nous augmentons la RAM, nous devrions augmenter le temps de réponse des requêtes car la mémoire est plus rapide que le disque. Eh bien ... Voici comment Oracle gère la gestion de la mémoire pour les données. Oracle propose divers emplacements de mémoire affectés à des tâches spécifiques. Ainsi, vous pouvez augmenter ces souvenirs. La zone utilisée pour les données s'appelle le «cache de tampons». Il s'agit d'une série de listes chaînées (leur nombre a tendance à augmenter avec chaque version). Chaque fois qu’un bloc est détecté sur le disque au cours d’une requête, un algorithme de hachage est exécuté pour déterminer la liste dans laquelle le coller. il faut donc payer pour l'obtenir ... ce n'est pas vraiment important).
CEPENDANT, lorsque vous exécutez une requête, Oracle retire le verrou de la chaîne de mémoire tampon que vous recherchez à ce moment-là. Ce verrouillage (remarque: il ne s'agit pas d'un verrou. Google "verrouille" si vous ne connaissez pas la différence) bloque toutes les autres opérations de cette chaîne pendant la durée de votre lecture. Donc, il bloque les lectures ET les écritures (ce qui est totalement différent du fait qu'Oracle prétend que les verrous ne bloquent pas les lectures).
Cela est nécessaire car, au fur et à mesure que vous lisez le bloc dans la chaîne, Oracle le déplace en fonction de la fréquence à laquelle il est "demandé". Les blocs les plus fréquemment demandés sont déplacés vers le haut et les moins fréquemment, en bas et vieillis. Vous ne pouvez pas avoir 2 sessions en train de lire une liste chaînée et de déplacer des blocs ou vous obtiendrez des pointeurs pointant vers des emplacements inexistants.
Lorsque vous augmentez la taille de la mémoire, vous augmentez la taille de chaque liste liée. Cela augmente le temps nécessaire pour lire la liste. Une requête simple ou complexe peut faire des dizaines de milliers, voire des millions de lectures vers le bas de listes chaînées. Chaque lecture est rapide, mais leur nombre conduit à des verrous qui bloquent d’autres sessions. Oracle appelle cela un "E / S logique" (ou un tampon get ou autre chose. Ce jargon est spécifique à Oracle et peut vouloir dire autre chose dans d'autres secteurs de l'informatique).
Donc, si la liste est longue et que le code SQL est vraiment mauvais, les instructions SQL conserveront leurs verrous plus longtemps. L'augmentation de la mémoire peut occasionnellement réduire les performances. La plupart du temps, cela n'arrivera pas. Les gens dépenseront beaucoup d'argent et ne verront aucun avantage. Cela étant dit, il arrive parfois que vous ayez besoin de plus de mémoire dans le cache, mais vous devez identifier correctement le goulot d'étranglement pour savoir si cela convient. Je ne peux pas discuter de la façon d'analyser cela dans ce post. Voir les forums DBA. Certaines personnes en discutent là-bas. C'est assez complexe.
Quelqu'un at-il des exemples spécifiques avec d'autres logiciels où cela peut arriver? Il existe un formidable ouvrage intitulé "The Goal" qui traite de la réduction des contraintes dans une usine. Ce processus est très similaire à ce que font les administrateurs de base de données Oracle lors de l'évaluation des problèmes de performances. C'est souvent la lecture standard dans les programmes de MBA. Il est très utile de lire pour les professions informatiques.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt
la source
La RAM peut être bon marché mais pas aussi bon marché que le stockage traditionnel.
J'ai un disque dur de 3 To (99 $): Devis HDD
Et vous en aurez besoin de 48 pour 3 To à (719 $) chacun: Devis RAM
Cela totaliserait 34 512 $ contre 99 $. Sans parler du prix du matériel nécessaire pour exécuter 3 To de RAM.
la source
C'est en fait fait dans certains scénarios. Si vous avez une pile de système d'exploitation / d'application suffisamment petite, vous pouvez l'exécuter entièrement en RAM. Bien sûr, il présente tous les inconvénients de la réponse acceptée. Mais c'est possible et ça arrive.
Jetez un coup d’œil à Puppy Linux, une distribution Linux populaire. Leur page comment ça marche parle de courir à partir de RAM: http://puppylinux.org/wikka/howPuppyWorks
la source
Je pense que la réponse peut être partiellement répondue comme suit:
Prémisse:
Étant donné le nombre limité d'emplacements de mémoire, une solution importante consiste à utiliser des puces de mémoire plus grandes avec des dimensions internes plus petites et / ou un empilement 3D. Les deux processus ont progressé comme prévu au cours des 36 derniers mois.
La question est donc: " taille de mémoire maximale DDR3 " ou sémantiquement: " DDR3 pourquoi n'y a-t-il aucun module de mémoire supérieur à 16 Go "
Et la réponse est:
La norme DDR3 autorise des capacités de puces de 512 mégabits à 8 gigabits, permettant effectivement une taille maximale de module de mémoire de 16 gigaoctets ( src ).
La DDR4 va changer cela, comme indiqué dans cette carte technologique:
Résultat:
Quelques mises en garde au poste approfondi de Hennes:
pkr298
présume que l’ensemble du système d’exploitation et des programmes sont chargés dans la RAM, mais pas qu’il faut abolir le disque dur / SSD.la source
Vous avez effectivement raison Dans un proche avenir, tous les supports de stockage et de mémoire seront sous la forme sur le nano-RAM. NRAM est essentiellement des commutateurs "mécaniques" de quelques atomes de largeur. Il n'a pas besoin de courant pour se maintenir, il est donc économe en énergie et n'a pas besoin d'être refroidi. Les commutateurs étant si petits, la densité est très élevée c’est bon pour deux raisons, la première est que l’accès à la mémoire est très rapide et que vous pourrez avoir des téraoctets de données sur de petits appareils comme le téléphone portable. si vous aimez en lire plus, voyez ceci: http://www.nantero.com/mission.html et ceci http://en.wikipedia.org/wiki/Nano-RAM
la source
Comme d'autres l'ont dit, la RAM est volatile et environ 10 fois plus coûteuse que les SSD.
Cependant, il EST un produit là - bas qui est assez proche de ce que vous décrivez - Je ne peux malheureusement pas rappeler le nom.
Qu'est-ce que c'est un lecteur basé sur RAM (IIRC max 64gb) couplé avec une carte CF et une batterie. Lorsque vous allumez le système, le contenu de la carte CF est copié dans la RAM (je crois que les demandes envoyées par la carte CF si elles n’ont pas encore été chargées). À la fermeture, le contenu de la RAM est copié sur la carte CF. -la batterie est assez grosse pour que cela se termine avant qu'elle ne soit épuisée.
Ce n'est pas bon marché.
la source