Question Si la RAM est bon marché, pourquoi ne pas tout charger dans la RAM et l'exécuter à partir de là?


La RAM est bon marché et beaucoup plus rapide que les SSD. C'est juste volatil. Alors, pourquoi les ordinateurs ne disposent-ils pas de beaucoup de mémoire vive et, au démarrage, de tout charger dans la RAM du disque dur / SSD et de tout exécuter à partir de là, en supposant qu’il n’y ait pas de besoin réel 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 existe-t-il une raison pour laquelle la RAM n’est pas utilisée de cette façon?


127
2017-08-27 15:20


origine


Vous supposez que la RAM est bon marché. Combien coûte 1 To de RAM? - Alan Shutko
Ce que vous décrivez est appelé RAMDisk et les gens font déjà ce que vous décrivez. Je charge la plupart de mes programmes en mémoire en utilisant un RAMDisk. Vous n'avez pas non plus besoin de matériel spécial pour utiliser la mémoire système et les logiciels. - Ramhound
Nous faisons, sous les couvertures, dans la mesure où un système d'exploitation donné le prend en charge. Windows utilise la RAM "inutilisée" pour le "cache disque", et je suppose que beaucoup de versions de Linux le font également. Mais il y a beaucoup trop de disque pour tout ranger dans la RAM. - Daniel R Hicks
"cheap" est un terme relatif. Chaque morceau de mémoire coûte moins cher qu’il ya quelques années, mais c’est plus cher que le stockage sur disque dur. Et de toute façon, la progression du progrès assurera que les programmes remplissent toujours toute la RAM disponible, quel que soit le montant disponible; Si les ordinateurs de tout le monde disposaient soudainement de plus de RAM, les développeurs mettraient plus de matériel dans leurs programmes. - jhocking
Google charge Internet vers la RAM - Ari


Réponses:


Il y a quelques raisons pour lesquelles la RAM n'est pas utilisée de cette façon:

  1. La mémoire de bureau commune (DDR3) est bon marché, mais pas si bon marché. Surtout si vous voulez acheter des DIMM relativement grandes.
  2. La RAM perd son contenu à la mise hors tension. Vous devrez donc recharger le contenu au démarrage. Supposons que vous utilisez un disque de taille SSD de 100 Go, soit environ deux minutes de retard alors que 100 Go sont copiés à partir du disque.
  3. La RAM utilise plus d'énergie (disons 2 à 3 watts par DIMM, soit à peu près la même chose qu'un SSD inactif).
  4. Pour utiliser autant de RAM, votre carte mère aura besoin de beaucoup de sockets DIMM et de traces. Habituellement, cela est limité à six ou moins. (Plus d’espace de bord signifie plus de coûts, donc des prix plus élevés.)
  5. Enfin, vous aurez également besoin de RAM pour exécuter vos programmes, vous aurez donc besoin de la taille de mémoire vive normale pour travailler (par exemple 18 Go, et assez pour stocker les données que vous prévoyez d'utiliser).

Cela dit: Oui, les disques RAM existent. Même comme Carte PCI avec prises DIMM et comme des appareils pour des IOps très élevés. (Principalement utilisé dans les bases de données d’entreprise avant que les disques SSD ne deviennent une option). Ces choses sont pas cher bien que.

Voici deux exemples de cartes à disque RAM bas de gamme qui ont été mises en production:

Notez qu'il y a bien plus de façons de faire que de simplement créer un Disque RAM dans la mémoire de travail commune.

Vous pouvez:

  1. Utilisez un lecteur physique dédié avec une mémoire volatile (dynamique). Soit en tant qu'appliance, soit avec une interface SAS, SATA ou PCI [e].
  2. Vous pouvez faire la même chose avec le stockage sur batterie (il n'est pas nécessaire de copier les données initiales car il conserve son contenu tant que l'alimentation de sauvegarde reste valide).
  3. Vous pouvez utiliser des RAM statiques plutôt que des DRAM (plus simples, plus chères).
  4. Vous pouvez utiliser le flash ou un autre stockage permanent pour conserver toutes les données (Attention: le nombre de cycles d'écriture est généralement limité pour le flash). Si vous utilisez Flash uniquement comme stockage, vous venez de passer aux disques SSD. Si vous stockez tout dans la RAM dynamique et que vous sauvegardez le contenu sur la sauvegarde flash à la mise hors tension, vous revenez aux appliances.

Je suis sûr qu’il ya beaucoup plus de choses à décrire, depuis Amiga RAD: réinitialiser les disques RAM restants aux IOPS, niveler l’usure et G-d sait quoi. Cependant, je vais couper ce court et lister seulement un autre article:

Prix ​​DDR3 (DRAM actuels) par rapport aux prix des disques SSD:

  • DDR3: 10 € par GiB, soit 10 000 € par TiB
  • SSD: beaucoup moins. (Environ 1/4 à 1/10)

176
2017-08-27 15:28



+1 pour atteindre deux points critiques: les HD sont encore moins chers que la RAM, et la RAM est volatile.RAM est votre poste de travail, et votre HD est l'entrepôt. Nuf sed. - Chad Harrison
@Hennes - Ne proposait pas de charger le lecteur entier en mémoire avec une solution logicielle RAMDisk. Vous pouvez charger des fichiers Photoshop depuis un lecteur mécanique dans un RAMDisk en utilisant des points de jonction et les performances seraient meilleures ou aussi bonnes qu’une installation SSD. - Ramhound
+1 pour "RAM pas cher, mais pas si bon marché". Une recherche rapide montre que les disques SSD se vendent actuellement entre 75 cents et un dollar, selon la capacité et le fabricant. Les modules de RAM DDR3, en fonction de la capacité, se vendent entre 7 et 10 dollars par Go, de sorte que le rapport entre le coût de la RAM et celui du SSD peut atteindre 15: 1. - KeithS
RAM loses its contents when powered off. Pour être exact, seule la RAM volatile fait RAM non volatile garde tout même lorsqu'il est éteint, comme par exemple Puces flash. En ce sens, SSD n'est pas différent de la RAM mais un sous-type de celui-ci. - Saul
Je ne suis pas d'accord. Les cellules flash du SSD n'ont peut-être pas besoin d'alimentation, mais le contrôleur et les autres composants électroniques du SSD sont alimentés. Pas beaucoup de puissance, mais à peu près la même puissance que celle d'un DIMM moderne (1-3 Watt). - Hennes


Les systèmes d'exploitation le font déjà, avec le cache de page:

En informatique, un cache de page, souvent appelé cache 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 totalement transparent pour les applications.

Lorsque vous lisez une page à partir d’un disque, votre système d’exploitation charge ces données en mémoire et les laisse jusqu’à ce qu’elles soient mieux utilisées pour cette mémoire. Si votre mémoire est suffisante, votre système d'exploitation ne lira chaque page qu'une seule fois, puis l'utilisera à partir de la mémoire. La seule raison pour laquelle le système d'exploitation effectuera de véritables E / S disque 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 souhaitez probablement la sauvegarder sur le disque).

Un des avantages de cette façon de faire est que vous n'avez pas besoin de charger le disque dur entier en mémoire, ce qui est utile si vous ne le faites pas. Cela signifie également que vous ne perdez pas de temps à lire les fichiers 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 que votre prochaine lecture de disque soit légèrement plus lente que de faire planter vos programmes parce qu'ils ne disposent plus de mémoire). En outre, il est utile que les utilisateurs n'aient pas à décider manuellement de ce qui devrait être 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 cassée si vous ne vous arrêtez pas proprement.

Aussi, /tmp est généralement un disque virtuel sur les distributions Linux, car il est correct si ces données sont perdues. Il y a encore un débat pour savoir si c'est une bonne idée cependant, parce que si trop de données sont écrites à /tmp, vous pouvez manquer de mémoire.


70
2017-08-27 17:06



Très bonne réponse. Les systèmes d'exploitation ont également des fonctionnalités telles que Superfetch, qui chargeront les données les plus demandées du disque dans la RAM au moment du démarrage. - Matthew Lock
Bonne réponse. tous les meilleurs attaquent (tentent de l'invalider) la question au lieu d'y répondre réellement - vsync


Comme le souligne Alan Shutko 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 de SSD et 1 To de disque dur (disque dur mécanique), voici les coûts que je vois (ceci est le 25 août 2013):

Whoa! Les disques durs sont 100 fois moins chers que la RAM! Et les SSD sont 8 fois moins chers que la RAM.

(De plus, comme indiqué dans d'autres réponses, la mémoire RAM est intrinsèquement volatile, et vous avez donc besoin d'une autre forme de stockage permanent.)


42
2017-08-27 19:54



La RAM est de plusieurs ordres de grandeur plus rapide que le SSD (sans problème d’usure d’écriture), qui est plusieurs fois plus rapide que la rouille et le GLASS. Et assurez-vous que vous pouvez utiliser un disque de 1 To pour 80 $, mais essayez de trouver ce stockage sur un plateau de 15 000 tr / min avec une connectivité SCSI ou Fibre Channel. Vous êtes à la recherche de 4 x 250 Go @ ~ 250 $, plus le coût d'un contrôleur BBU (environ 500 $), ce qui revient à peu près au même coût qu'un SSD. - symcbean
@ symcbean - C'est un peu époustouflant; Gardez à l'esprit que le coût de la RAM dans les grandes dénominations (comme vous le souhaitez pour remplacer un disque ou un SSD) est plus élevé que 25 $ / Go. - Russell Borogove
@symcbean acheter un SSD avec des caractéristiques d'entreprise similaires coûtera bien plus de 1000 $. - mikebabcock
Il serait très intéressant de voir cette réponse révisée tous les quelques mois et d’avoir le prix modifié, et de voir comment les prix chuteraient constamment. - Ofer Zelig
@OverZelig "voir comment les prix ont chuté constamment" Vous voulez dire sauf quand ils ne le font pas? - Michael Kjörling


Je fais toutes mes opérations de lecture / écriture immédiates pour la génération de contenu dans les disques RAM de ma machine locale. J'y stocke également mes dossiers de journalisation MongoDB, ainsi que mes compilateurs et interprètes 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 Mo et tous les dossiers de cache de mon navigateur Internet sont affichés; celui-ci est perdu à l'arrêt, et se vide quand il est plein.

Utiliser les bons outils pour le travail, je suppose, serait la réponse que je vous donne. Je génère des données 30-1000x plus rapidement en utilisant un disque RAM que sur mon Western Digital 7200rpm.

C'est le programme que j'utilise: http://www.romexsoftware.com/fr-fr/primo-ramdisk/

... et quand 32g de Ram est inférieur à 200 $, je ne vois pas pourquoi cela ne devient pas plus commun.

8 gig RAM diskeveryday SATA III HDD


8
2017-08-27 23:41



Vous savez que le système d'exploitation cache déjà des choses pour vous, non? - Potatoswatter
"Lorsque 32g de Ram est inférieur à 200 $" 32 Go sur un disque dur de 1 To commence à environ 3 $, donne ou prend; Aujourd'hui, les lecteurs 1 To du consommateur coûtent moins de 100 dollars, et même les disques de qualité professionnelle peuvent être utilisés pour des prix similaires par gigaoctet (Amazon veut actuellement 408 dollars pour le Seagate ST4000NM0043 de 4 To doté d'un RRP de 520 dollars). autour). - Michael Kjörling
@ Patatoswatter ouais, c'est le cas. Mais il ne met pas en cache 10 000 fichiers nouvellement créés. Donc, je les cache explicitement sur mon disque RAM. - blakev
@ MichaelKjörling Nous n'essayons pas de stocker 1 To dans la RAM. C'est ridicule. Soyez réaliste et choisissez quelques dossiers clés que vous voulez toujours avoir dans la RAM et vous pouvez SIGNIFICATION IMPORTANTE (ordres de grandeur) accélérer certaines opérations dans votre flux de travail. Voir mes images ci-dessus. - blakev
"tout est relatif. Sur ma machine, il charge "tout" de mon image de disque dur de 8 Go; octet pour octet les 8 concerts entiers sont clonés à chaque fois. Pour la question, si vous cherchez une solution à vraiment Si vous restez dans la mesure du possible ou si vous vous éloignez de la proportion pour répondre à un type de réponse "impossible". - blakev


Oui, c'est le principe de nombreuses bases de données en mémoire qui sont mises sur le marché. SAP HANA en est un exemple. L'idée est que la RAM est bon marché et que, du point de vue des performances, les opérations de lecture / écriture sur la RAM sont 1000 fois plus rapides que les opérations sur disque. Ainsi, la plupart des données sont conservées dans la mémoire vive, puis vous définissez une stratégie de vieillissement des données à partir de laquelle les anciennes données sont recyclées dans un entrepôt frigorifique (disque).


4
2017-08-27 19:59





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'y a pas qu'un seul fichier d'application / de processus et certaines opérations d'E / S sont ciblées sur le disque dur ou le réseau (autres fichiers de l'application ou autres opérations d'E / S avec le système, etc.). application. Celles-ci pourraient être dirigées vers le disque RAM, mais vous devriez considérer que le disque RAM disparaît lors de la mise hors tension et doit être rempli à nouveau au démarrage.

Et la RAM n'est pas si bon marché comme présenté dans la question. Vous devez compter non seulement le coût de la RAM, mais aussi le coût de la RAM de travail, 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 un disque dur de 1 To peut être acheté pour pas cher et il s’agit d’informatique à la maison, un ordinateur avec 1 To de RAM est dans des gammes de superordinateurs. (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)


4
2017-08-28 09:38





Ceci est une GRANDE question et je trouve les réponses fascinantes. Je vais commenter cela comme un DBA Oracle et mes réponses sont spécifiques à la base de données Oracle. C'est une erreur majeure commise par beaucoup de personnes travaillant avec Oracle. Je ne suis pas sûr que cela s'applique également à d'autres applications. Ceci n'est pas censé être hors sujet, mais se veut une réponse spécialisée.

Lorsque vous ajustez 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 n'est peut-être pas votre goulot d'étranglement. Oracle dispose de mécanismes complexes de gestion de la mémoire et l'augmentation de la mémoire peut ralentir les choses si le goulot d'étranglement se produit dans d'autres domaines. Laissez-moi vous donner un exemple qui est 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 dispose d'une variété d'emplacements mémoire affectés à des tâches spécifiques. Donc, vous pouvez augmenter ces souvenirs. La zone utilisée pour les données est appelée "cache mémoire". Ceci est une série de listes liées (leur nombre a tendance à augmenter avec chaque version). Chaque fois qu'un bloc est trouvé sur le disque pendant une requête, un algorithme de hachage est exécuté pour déterminer la liste dans laquelle il doit être collé. Où le placer dans la liste est basé sur un algorithme de comptage tactile (expliqué sur le site de support Oracle) il faut donc payer pour l'obtenir ... ce n'est pas vraiment important.

Cependant, lorsque vous exécutez une requête, Oracle supprime un verrou sur la chaîne de tampons que vous recherchez à ce moment-là. Ce LATCH (remarque: ce n'est pas un verrou. Google "verrouille" si vous ne connaissez pas la différence) bloque toutes les autres opérations sur cette chaîne pendant toute la durée de votre lecture. Donc, il bloque les lectures ET écrit (ceci est complètement différent de ce que Oracle prétend que les verrous ne bloquent pas les lectures).

Cela est nécessaire car, lorsque 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 blocs moins fréquemment demandés sont laissés 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 atteindrez 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 médiocre ou une requête complexe peut effectuer des dizaines de milliers, voire des millions de lectures de listes liées. Chaque lecture est rapide, mais leur nombre conduit à des verrous et ceux-ci bloquent les autres sessions. Oracle appelle cela un «E / S logique» (ou un tampon ou d'autres choses. Ce jargon est spécifique à Oracle et peut signifier autre chose dans d'autres parties du système informatique).

Ainsi, si la liste est plus longue et que le SQL est vraiment mauvais, les instructions SQL conserveront leurs verrous plus longtemps. L'augmentation de la mémoire peut parfois 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 y a des moments où vous avez besoin de plus de mémoire dans le cache, mais vous devez identifier correctement le goulot d'étranglement pour savoir si cela est approprié. Je ne peux pas discuter de la façon d'analyser cela dans cet article. Voir les forums DBA. Certaines personnes en discutent. C'est plutôt complexe.

Est-ce que quelqu'un a des exemples spécifiques avec d'autres logiciels où cela peut arriver? Il existe un formidable livre d’affaires intitulé «Le but» qui traite de la réduction des contraintes dans une usine. Ce processus est très similaire à celui des administrateurs de bases 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


4
2017-08-28 16:06



Non pas chier cela est révélateur à la question, mais par ailleurs intéressant. - jb.
c'est une raison de ne pas simplement ajouter ram. C'est spécifique et étroit, mais je pense que cela s'applique. - Bob
très intéressant. Cela donne un autre angle à la discussion générale. - Lorenz Lo Sauer


La RAM peut être bon marché mais pas aussi bon marché qu'un stockage traditionnel.

J'ai un disque dur de 3 To (99 $): Citation de disque dur

Et vous en aurez besoin de 48 pour 3 To à (719) dollars chacun: Citation RAM

Cela totaliserait 34 512 $ vs 99 $. Sans oublier le prix du matériel requis pour faire fonctionner 3 To de RAM.


3
2017-08-28 00:17



la réponse n'est pas pertinente pour la question - BlueBerry - Vignesh4303
Je pense qu'à la fin, il essaie de dire "la RAM n'est pas bon marché". - jaczjill
En outre, vous ne pouvez pas connecter 48 de ces kits à 8 canaux dans un appareil que je connais. Bien qu'il existe des systèmes qui acceptent 16 (ou plus) dimms 64 Go REG ECC sur un seul serveur. Cependant, ils ne sont pas bon marché du tout. - drescherjm