La RAM est bon marché et beaucoup plus rapide que les SSD. C'est juste volatile. Alors, pourquoi les ordinateurs n’ont-ils pas BEAUCOUP de RAM et, à la mise sous tension, chargez-les tous sur la RAM à partir du disque dur/SSD et exécutez tout à partir de là, en supposant qu'il n'y a aucun besoin réel de conserver quoi que ce soit à l'extérieur de mémoire? Les ordinateurs ne seraient-ils pas beaucoup plus rapides?
Bien sûr, le système d'exploitation actuel peut ne pas le supporter du tout, mais y a-t-il une raison pour que RAM ne soit pas utilisé de cette façon?
Il y a quelques raisons pour lesquelles RAM n'est pas utilisé de cette façon:
Cela dit: Oui, RAM disques 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 sont pas bon marché bien.
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 RAM disque dans la mémoire de travail commune.
Vous pouvez:
Je suis sûr qu’il ya encore bien plus à décrire, à partir d’Amiga RAD: réinitialiser les disques survivants RAM sur IOPS, porter la mise à niveau et G-d 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:
Les systèmes d'exploitation le font déjà, avec le cache de page :
En informatique, un cache de page, souvent appelé cache de disque, est un cache "transparent" de pages sauvegardées sur disque conservées dans la mémoire principale (RAM) par le système d'exploitation pour un accès plus rapide. Un cache de page est généralement implémenté dans les noyaux avec la gestion de la mémoire de pagination et est complètement transparent pour les applications.
Lorsque vous lisez une page à partir d'un disque, votre système d'exploitation charge ces données dans la 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 crée un disque réel IO est s'il doit lire une page qui n'est pas déjà en mémoire ou si une page est écrite (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 vous évite également de perdre du temps à lire des fichiers que 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 bonnes 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 toutes les écritures soient terminées, mais votre base de données sera complètement détruite si vous ne vous arrêtez pas proprement.
De plus, /tmp
est généralement un disque mémoire 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 cependant, car si trop de données sont écrites dans /tmp
, vous risquez de manquer de mémoire.
Comme Alan Shutko l'a souligné dans son commentaire sur la question, RAM n'est pas bon marché.
Voici quelques points de données. Lorsque je recherche sur Google 4 Go de RAM, 64 Go SSD et 1 TB HDD (disque dur mécanique), voici les coûts que je vois (ceci concerne le 25 août 2013):
4 Go RAM = 32 $ - 36 $ => RAM = ~ 8 $ par Go
SSD de 64 Go = 69 $ - 76 $ => SSD = ~ 1 $ par Go
1 TB 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, RAM est intrinsèquement volatile, vous avez donc besoin d'une autre forme de stockage persistant.)
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, interprètes Python et 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 pointent ici. 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 7200 tr/min Western Digital.
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.
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 RAM n'est pas cher 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, puis vous définissez une stratégie de vieillissement des données à l'aide de laquelle les anciennes données sont recyclées dans un stockage froid (c'est-à-dire un disque).
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 verrou (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 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.
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 RAM n’est pas si bon marché que présenté 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 RAM se situe 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 )
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 cela arrive.
Jetez un coup d’œil à Puppy Linux, une distribution Linux populaire. Leur page comment ça marche parle de courir depuis la RAM: http://puppylinux.org/wikka/howPuppyWorks
Je pense que la réponse peut être partiellement répondue comme suit:
Prémisse:
Compte tenu du 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 la suivante: " Taille maximale de la mémoire 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 puce de 512 mégabits à 8 gigabits, permettant ainsi 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
suppose que tout le système d'exploitation et les programmes sont chargés dans la RAM, mais qu'il ne faut pas supprimer le disque dur/SSD.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 fondamentalement des commutateurs "mécaniques" de quelques atomes de largeur. Il n'a pas besoin de courant pour se maintenir en état, il est donc économe en énergie et n'a pas besoin d'être refroidi. C’est une bonne chose pour deux raisons: l’accès à la mémoire est très rapide et vous pourrez avoir des téraoctets de données sur de petits appareils comme le téléphone portable. si vous voulez en savoir plus, voyez ceci: http://www.nantero.com/mission.html et ceci http://en.wikipedia.org/wiki/Nano-RAM