web-dev-qa-db-fra.com

Si RAM est pas cher, pourquoi ne pas tout charger à RAM et l'exécuter à partir de là?

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?

131
pkr298

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

  1. Le bureau commun (DDR3) RAM est bon marché, mais pas aussi bon marché. Surtout si vous souhaitez acheter des modules DIMM relativement volumineux.
  2. La RAM perd son contenu lorsqu'elle est éteinte. Ainsi, vous devrez recharger le contenu au démarrage. Supposons que vous utilisiez un disque RAM de la taille d'un disque SSD de 100 Go, ce qui signifie un délai d'environ deux minutes lorsque 100 Go sont copiés à partir du disque.
  3. La RAM utilise plus d’énergie (disons 2–3 watts par DIMM, à peu près la même chose qu’un SSD inactif).
  4. Pour utiliser autant de RAM, votre carte mère aura besoin de nombreux sockets DIMM et des traces qui s’y trouvent. Habituellement, cela est limité à six ou moins. (Plus d'espace à 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 normale de RAM (par exemple, 18 Go, et suffisamment pour stocker les données que vous comptez utiliser). ).

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:

  1. Utilisez un lecteur physique dédié avec 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 sauvegardé sur batterie (inutile de copier les données initiales car le contenu sera conservé tant que la puissance de secours restera valide).
  3. Vous pouvez utiliser des RAM statiques plutôt que des mémoires DRAM (plus simples, plus coûteuses).
  4. Vous pouvez utiliser la mémoire flash ou une autre mémoire permanente pour conserver toutes les données (Avertissement: la mémoire flash a généralement un nombre de cycles d'écriture limité). Si vous utilisez le flash uniquement comme stockage, vous venez de passer aux disques SSD. Si vous stockez tout dans RAMdynamique et que vous sauvegardez sur une sauvegarde flash à la mise hors tension, vous retournez aux appliances.

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:

  • DDR3: 10 €/Go, ou 10 000 €/To
  • SSD: significativement moins. (Environ 1/4 à 1/10)
177
Hennes

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.

71
Brendan Long

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):

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.)

43
Suman

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.

8 gig RAM diskeveryday SATA III HDD

8
blakev

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).

5
mithrandir

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.

https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt

4
Bob

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 )

4
Dee

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: RAM Devis

Cela totaliserait 34 512 $ vs 99 $. Sans parler du prix du matériel nécessaire pour exécuter 3 To de RAM.

3
Michael Irey

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

2
David Hewitt

Je pense que la réponse peut être partiellement répondue comme suit:

Prémisse:

  • Seuls les types de RAM peu coûteux, produits et vendus en grande quantité
  • Les fabricants de RAM veulent vendre leur produit.
  • les prix bas exigent de vendre de gros volumes pour générer des bénéfices
  • une grande base d'utilisateurs utilise une technologie de mémoire établie
  • nouvelle technologie de mémoire prend des années pour être largement adopté
  • les emplacements de mémoire sont très limités dans les périphériques toujours plus petits de ladite base utilisateur
  • la technologie mobile est en augmentation
  • au moins 0,1% de 1Bil. Les utilisateurs de PC peuvent opter pour 128 Go RAM ou plus (devinettes)
  • les mises à jour technologiques très demandées génèrent un bénéfice plus élevé que les nouvelles générations technologiques

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:

enter image description here

Résultat:

  • un marché de la mémoire semi-bloqué
  • Une extravagance Apple Macbook Pro s'arrêtant à 16GB
  • demande accrue de services en nuage ou distants (pour héberger ces machines virtuelles et bases de données InMemory, beaucoup de développeurs et d'ingénieurs s'exécuteraient avec autant de bonheur sur le plan local)
  • ... ???

Quelques mises en garde au poste approfondi de Hennes:

  • Common Desktop (DDR3) RAM n'est pas cher, mais pas aussi bon marché}: assez bon marché pour que certaines personnes puissent l'acheter en raison de leur contexte gourmand en données
  • RAM perd son contenu lorsqu'il est mis hors tension}: les humains ont résolu des problèmes plus difficiles que la mémoire volatile. Les brevets et solutions sur la "gestion de la mémoire volatile" depuis 2010 en témoignent.
  • RAM utilise plus d'énergie: éteint sélectivement la mémoire inutilisée (banques) sur les appareils mobiles. Également de 1W à 2W, par rapport aux GPU de 800W
  • vous aurez besoin de beaucoup de sockets DIMM: la technologie de la puce a progressé comme d'habitude, ce qui signifie que l'option des puces à mémoire supérieure n'existe pas, mais les fabricants de puces vous les vendront volontiers en grande quantité
  • _ {vous aurez également besoin de RAM pour exécuter vos programmes} _: True. Mais le 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.
2
Lorenz Lo Sauer

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

1
noamtcohen