RAM ist billig und viel schneller als SSDs. Es ist nur volatil. Warum haben Computer also nicht VIEL RAM? Laden Sie beim Einschalten alles von der Festplatte / SSD in den RAM und führen Sie alles von dort aus aus, vorausgesetzt, es besteht keine wirkliche Notwendigkeit, irgendetwas außerhalb des Arbeitsspeichers beizubehalten? Wären Computer nicht viel schneller?
Natürlich unterstützt das aktuelle Betriebssystem dies möglicherweise überhaupt nicht, aber gibt es einen Grund, warum RAM nicht auf diese Weise verwendet wird?
Antworten:
Es gibt einige Gründe, warum RAM nicht auf diese Weise verwendet wird:
Allerdings: Ja, es gibt RAM-Disks. Auch als PCI- Karte mit DIMM-Sockeln und als Appliance für sehr hohe IOps. (Wird hauptsächlich in Unternehmensdatenbanken verwendet, bevor SSDs zur Option wurden.) Diese Dinge sind jedoch nicht billig .
Hier sind zwei Beispiele für Low-End-RAM-Karten, die es in die Produktion geschafft haben:
Beachten Sie, dass es wesentlich mehr Möglichkeiten gibt, als nur eine RAM-Disk im gemeinsamen Arbeitsspeicher zu erstellen .
Du kannst:
Ich bin mir sicher, dass es von Amiga RAD noch viel mehr zu beschreiben gibt: Setzen Sie überlebende RAM-Festplatten auf IOPS zurück, tragen Sie das Leveling und Gd weiß was. Ich werde diesen kurzen Text jedoch kürzen und nur einen weiteren Punkt auflisten:
DDR3-Preise (aktueller DRAM) im Vergleich zu SSD-Preisen:
quelle
RAM loses its contents when powered off.
Um genau zu sein, nur flüchtiger Arbeitsspeicher, aber nicht flüchtiger Arbeitsspeicher hält alles auch im ausgeschalteten Zustand, wie zum Beispiel Flash-Chips . In diesem Sinne unterscheidet sich SSD nicht vom RAM, sondern ist ein Untertyp davon.Betriebssysteme tun dies bereits mit dem Seiten-Cache :
Wenn Sie eine Seite von einer Festplatte lesen, lädt Ihr Betriebssystem diese Daten in den Speicher und belässt sie dort, bis sie besser für diesen Speicher verwendet werden. Wenn Sie über genügend Arbeitsspeicher verfügen, liest Ihr Betriebssystem jede Seite nur einmal und verwendet sie anschließend aus dem Arbeitsspeicher. Der einzige Grund, warum das Betriebssystem echte Datenträger-E / A-Vorgänge ausführt, besteht darin, dass eine Seite gelesen werden muss, die sich noch nicht im Arbeitsspeicher befindet, oder dass eine Seite beschrieben wird (in diesem Fall soll sie vermutlich auf dem Datenträger gespeichert werden).
Ein Vorteil dieser Vorgehensweise besteht darin, dass Sie nicht die gesamte Festplatte in den Arbeitsspeicher laden müssen. Dies ist hilfreich, wenn die Festplatte nicht passt, und Sie verschwenden keine Zeit mit dem Lesen von Dateien, die Ihre Anwendungen nicht benötigen brauchen. Ein weiterer Vorteil ist, dass der Cache verworfen werden kann, wenn das Betriebssystem mehr Speicher benötigt (es ist besser, wenn das Lesen der nächsten Festplatte etwas langsamer ist als wenn Ihre Programme abstürzen, weil nicht genügend Speicher vorhanden ist). Außerdem ist es nützlich, dass Benutzer nicht manuell entscheiden müssen, was sich auf der Ramdisk befinden soll oder nicht: Was auch immer Sie am häufigsten verwenden, wird automatisch im Hauptspeicher gespeichert.
Wenn Sie über viel Arbeitsspeicher verfügen, Ihre Anwendungen jedoch nicht so schnell ausgeführt werden, wie Sie es erwarten, ist die Wahrscheinlichkeit groß, dass sie langsamer sind, da sie sicher ausgeführt werden. Beispielsweise ist SQLite um Größenordnungen schneller, wenn Sie festlegen, dass nicht auf den Abschluss der Schreibvorgänge gewartet werden soll. Wenn Sie das System jedoch nicht ordnungsgemäß herunterfahren, wird die Datenbank vollständig beschädigt.
Auch
/tmp
ist in der Regel eine Ramdisk unter Linux-Distributionen, da es in Ordnung ist, wenn diese Daten verloren gehen. Es gibt immer noch Diskussionen darüber, ob dies eine gute Idee ist, denn wenn zu viele Daten geschrieben werden/tmp
, kann der Arbeitsspeicher knapp werden.quelle
Wie Alan Shutko in seinem Kommentar zur Frage ausführt, ist RAM eigentlich nicht billig.
Hier sind einige Datenpunkte. Wenn ich bei Google nach 4 GB RAM, 64 GB SSD und 1 TB HDD (mechanische Festplatte) suche, werden die folgenden Kosten angezeigt (dies gilt für den 25. August 2013):
4 GB RAM = $ 32 - $ 36 => RAM = ~ $ 8 pro GB
64 GB SSD = 69 USD - 76 USD => SSD = ~ 1 USD pro GB
1 TB HDD = 80 USD => HDD = 0,08 USD pro GB
Whoa! Festplatten sind 100x billiger als RAM! Und SSDs sind 8x billiger als RAM.
(Wie in anderen Antworten bereits erwähnt, ist der Arbeitsspeicher von Natur aus flüchtig. Sie benötigen daher eine andere Form des dauerhaften Speichers.)
quelle
Ich führe alle meine direkten Lese- / Schreibvorgänge zur Inhaltserzeugung auf RAM-Datenträgern auf meinem lokalen Computer aus. Ich speichere dort auch meine MongoDB-Journalordner sowie meine Compiler und Python-Interpreter und meine Standardbibliothek. Diese Festplatte wird beim Herunterfahren gespeichert und beim Start wiederhergestellt. Die zweite RAM-Disk, die ich benutze, ist 64 Megabyte, und alle Cache-Ordner meines Internetbrowsers zeigen dorthin. Dieser geht beim Herunterfahren verloren und spült sich selbst, wenn er voll ist.
Verwenden Sie die richtigen Werkzeuge für den Job, denke ich, wäre die Antwort, die ich Ihnen gebe. Ich generiere Daten mit einer RAM-Disk 30-1000x schneller als mit meiner Western Digital mit 7200 U / min.
Dies ist das Programm, das ich verwende: http://www.romexsoftware.com/en-us/primo-ramdisk/
... und wenn 32 Gigs Ram weniger als 200 US-Dollar kosten, sehe ich nicht, warum dies nicht immer üblicher wird.
quelle
Ja, dies ist die Voraussetzung für viele In-Memory-Datenbanken, die auf den Markt kommen. Ein Beispiel ist SAP HANA. Die Idee ist, dass RAM billig ist und Lese- / Schreibvorgänge auf RAM unter Performance-Gesichtspunkten 1000x schneller sind als Festplattenvorgänge. Der größte Teil der Daten wird im RAM gespeichert. Anschließend definieren Sie eine Datenalterungsstrategie, mit der die alten Daten wieder in den Cold Storage (dh auf die Festplatte) zurückgespeichert werden.
quelle
Kurze Erklärung :
Wenn eine Anwendung zum ersten Mal ausgeführt wird, wird sie von der Festplatte oder dem Netzwerk in den Arbeitsspeicher übertragen. Also mach dir keine Sorgen, du machst es schon.
In der Regel gibt es jedoch nicht nur eine Anwendungs- / Prozessdatei und es gibt einige E / A-Vorgänge, die auf die Festplatte oder das Netzwerk abzielen (andere Dateien der Anwendung oder andere E / A-Vorgänge mit dem System usw.), die Ihre Geschwindigkeit verringern können Anwendung. Diese könnten auf die RAM-Disk gelenkt werden, aber Sie sollten berücksichtigen, dass die RAM-Disk beim Ausschalten gelöscht und beim Start erneut gefüllt werden sollte.
Und RAM ist nicht so billig wie in der Frage dargestellt. Sie sollten nicht nur die Kosten des Arbeitsspeichers, sondern auch die Kosten des Arbeitsspeichers, einschließlich der Sockel auf Ihrem Motherboard (diese sind begrenzt / selten und daher wertvoller) und die Kosten für verlorene Daten bei Stromausfall zählen.
Computer mit 1 TB HDD könnten zum Beispiel günstig gekauft werden und es geht um Heimcomputer, Computer mit 1 TB RAM sind in den Bereichen von Supercomputern. (Intel arbeitet jedoch an einem Produkt der mittleren Preisklasse: http://vr-zone.com/articles/more-on-xeon-e5-terabyte-of-ram-even-at-midrange-/14366.html )
quelle
Dies ist eine großartige Frage und ich finde die Antworten faszinierend. Ich werde dies als Oracle DBA kommentieren und meine Antworten sind SPEZIFISCH für die Oracle-Datenbank. Dies ist ein großer Fehler, den viele Leute bei der Arbeit mit Oracle machen. Ich bin mir nicht sicher, ob dies auch für andere Anwendungen gilt. Dies ist nicht als Off-Topic gedacht, sondern als spezialisierte Antwort.
Wenn Sie die Leistung mit Oracle optimieren, möchten Sie wirklich Engpässe beseitigen. Obwohl die meisten von uns es nicht sagen, basiert es auf der Theorie der Einschränkungen: https://en.wikipedia.org/wiki/Theory_of_constraints
Der Speicher ist möglicherweise nicht Ihr Engpass. Oracle verfügt über komplexe Mechanismen für die Speicherverwaltung. Wenn der Engpass in anderen Bereichen liegt, kann das Erhöhen des Arbeitsspeichers sogar zu einer Verlangsamung führen. Lassen Sie mich ein Beispiel nennen, das SEHR häufig vorkommt.
Abfragen scheinen langsam zu sein. Der Konsens ist, wenn wir den Arbeitsspeicher erhöhen, sollten wir die Antwortzeit von Abfragen erhöhen, da der Speicher schneller ist als der Datenträger. Nun ... So handhabt Oracle die Speicherverwaltung für Daten. Oracle verfügt über eine Vielzahl von Speicherorten, die bestimmten Aufgaben zugeordnet sind. So können Sie diese Erinnerungen erhöhen. Der für Daten verwendete Bereich wird als "Puffer-Cache" bezeichnet. Dies ist eine Reihe von verknüpften Listen (deren Anzahl mit jeder Version zunimmt). Jedes Mal, wenn ein Block während einer Abfrage auf einer Disc gefunden wird, wird ein Hash-Algorithmus darauf ausgeführt, um zu bestimmen, in welcher Liste er abgelegt werden soll. Wo er in die Liste aufgenommen werden soll, basiert auf einem Algorithmus zur Berührungszählung (auf der Oracle-Support-Site erläutert). man muss also bezahlen, um es zu bekommen ... es ist nicht wirklich wichtig).
Wenn Sie jedoch eine Abfrage ausführen, löst Oracle einen Latch für die Pufferkette, die Sie zu dem Zeitpunkt durchsuchen. Diese VERRIEGELUNG (Hinweis: Dies ist keine Sperre. Google "verriegelt", wenn Sie den Unterschied nicht kennen) blockiert alle anderen Vorgänge in dieser Kette für die Dauer Ihres Lesevorgangs. Es blockiert also Lese- UND Schreibvorgänge (dies ist völlig anders als Oracle, das behauptet, dass Sperren keine Lesevorgänge blockieren).
Dies ist erforderlich, da Oracle den Block beim Lesen in der Kette basierend auf der Häufigkeit der Anforderung verschiebt. Häufiger angeforderte Blöcke werden nach oben verschoben und weniger häufig angeforderte Blöcke bleiben unten und sind veraltet. Sie können nicht zwei Sitzungen haben, in denen eine verknüpfte Liste gelesen und Blöcke verschoben werden. Andernfalls treffen Sie Zeiger, die auf nicht vorhandene Positionen verweisen.
Wenn Sie die Größe des Speichers erhöhen, erhöhen Sie die Größe jeder verknüpften Liste. Dies erhöht die Zeit, die zum Lesen der Liste benötigt wird. Eine einzelne schlechte oder komplexe Abfrage kann Zehntausende oder sogar Millionen von gelinkten Listen lesen. Jeder Lesevorgang ist schnell, aber die Anzahl der Lesevorgänge führt zu Latches, die andere Sitzungen blockieren. Oracle nennt dies ein "logisches E / A" (oder Buffer Get oder anderes Zeug. Dieser Jargon ist spezifisch für Oracle und kann in anderen Teilen der IT eine andere Bedeutung haben).
Wenn die Liste also länger ist und Sie wirklich schlechtes SQL haben, halten die SQL-Anweisungen ihre Latches länger. Durch Erhöhen des Speichers kann gelegentlich die Leistung verringert werden. Meistens wird das nicht passieren. Die Leute werden viel Geld ausgeben und keinen Nutzen sehen. Abgesehen davon gibt es Zeiten, in denen Sie mehr Speicher im Puffercache benötigen, aber Sie müssen den Engpass richtig identifizieren, um zu wissen, ob dies angemessen ist. Ich kann nicht diskutieren, wie man das in diesem Beitrag analysiert. Siehe die DBA-Foren. Einige Leute diskutieren es dort. Es ist ziemlich komplex.
Hat jemand spezielle Beispiele für andere Software, bei denen dies passieren kann? Es gibt ein großartiges Geschäftsbuch mit dem Titel "The Goal", in dem es darum geht, Einschränkungen in einer Fabrik zu beseitigen. Dieser Prozess ähnelt stark der Vorgehensweise von Oracle-Datenbankadministratoren bei der Bewertung von Leistungsproblemen. In MBA-Programmen ist es oft Standard. Es ist sehr wertvoll, für IT-Berufe zu lesen.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt
quelle
RAM ist zwar billig, aber nicht so billig wie herkömmlicher Speicher.
Ich habe eine 3-TB-Festplatte (99 US-Dollar): HDD Quote
Und Sie benötigen 48 davon für jeweils 3 TB (719 USD): RAM Quote
Das wären 34.512 US-Dollar gegenüber 99 US-Dollar. Ganz zu schweigen vom Preis der Hardware, die für die Ausführung von 3 TB RAM erforderlich ist.
quelle
Es wird tatsächlich in einigen Szenarien durchgeführt. Wenn Sie ein Betriebssystem / einen App-Stack haben, der klein genug ist, können Sie ihn vollständig im RAM ausführen. Natürlich hat es alle Nachteile, die die akzeptierte Antwort hat. Aber es ist möglich und passiert.
Schauen Sie sich Puppy Linux an, eine beliebte Linux-Distribution. Wie es funktioniert, erfahren Sie auf folgender Seite: http://puppylinux.org/wikka/howPuppyWorks
quelle
Ich denke, die Antwort kann teilweise wie folgt beantwortet werden:
Prämisse:
In Anbetracht der begrenzten Anzahl von Speichersteckplätzen kommt eine wichtige Lösung in Form von höheren Speicherchips mit kleineren Innenabmessungen und / oder 3D-Stapeln. Beide Prozesse verliefen in den letzten über 36 Monaten erwartungsgemäß.
Die Frage ist also: " DDR3 maximale Speichergröße " oder semantisch: " DDR3 warum gibt es keine Speichermodule größer als 16GB "
Und die Antwort lautet:
Der DDR3-Standard ermöglicht Chip-Kapazitäten von 512 Megabit bis 8 Gigabit, was effektiv eine maximale Speichermodulgröße von 16 Gigabyte ( src ) ermöglicht.
DDR4 wird dies ändern, wie in dieser Technologiekarte dargestellt:
Ergebnis:
Einige Vorbehalte zu Hennes 'gründlichem Beitrag:
pkr298
ausgegangen, dass das gesamte Betriebssystem und die Programme in den Arbeitsspeicher geladen sind und nicht, dass die Festplatte / SSD abgeschafft werden solltequelle
Sie haben tatsächlich recht In naher Zukunft werden alle Speicher und Speicher in der Form auf Nano-RAM sein. NRAM ist im Grunde genommen ein "mechanischer" Schalter, der ein paar Atome breit ist. Er benötigt keinen Strom, um den Zustand aufrechtzuerhalten, ist also energieeffizient und muss nicht abgekühlt werden. Da die Schalter so klein sind, ist die Dichte sehr hoch und Dies ist aus zwei Gründen gut: Zum einen ist der Zugriff auf den Speicher sehr schnell und auf kleinen Geräten wie Mobiltelefonen können Terabytes an Daten gespeichert werden. Wenn Sie mehr lesen möchten , lesen Sie diese: http://www.nantero.com/mission.html und diese http://en.wikipedia.org/wiki/Nano-RAM
quelle
Wie andere gesagt haben, ist RAM flüchtig und ungefähr 10-mal so teuer wie SSDs.
Allerdings gibt IS gibt ein Produkt , das ziemlich nahe kommt, was Sie beschreiben - ich kann leider nicht an den Namen erinnern.
Es handelt sich um ein RAM-basiertes Laufwerk (IIRC max 64 GB), das mit einer CF-Karte und einem Akku gekoppelt ist. Wenn Sie das System einschalten, wird der Inhalt der CF-Karte in den Arbeitsspeicher kopiert (ich glaube, Anfragen von der CF-Karte werden bearbeitet, wenn sie noch nicht geladen wurden.) Beim Herunterfahren wird der Inhalt des Arbeitsspeichers auf die CF-Karte kopiert. -die Batterie ist groß genug, um dies zu beenden, bevor es erschöpft ist.
Es ist nicht billig.
quelle