RAM über Netzwerk freigeben

48

Mein Kollege verwendet eine Anwendung, die viel Speicher verbraucht, was das System zu langsam macht. Ist es möglich, Speicher mit anderen PCs über das Internet zu teilen?

Das System verfügt über 8 GB RAM und die Anwendung belegt mehr als 6 GB.

Innov
quelle
5
Führen Sie es auf einem leistungsstarken Server über Remotedesktop oder VNC oder X11 aus?
WGroleau
3
Wie bereits erwähnt, ist es besser, große Speicherlaufwerke (HDDs oder SSDs) als Cache zu verwenden.
Firebug
12
Zur zukünftigen Bezugnahme: Tabelle der Latenzzahlen, die jeder [der Computer macht] kennen sollte .
Nick Alexeev
79
Möglicherweise haben Sie mehr Glück beim Herunterladen von mehr RAM ...
Mehrdad
4
In modernen Windows-Versionen können Sie USB-Sticks oder SD-Karten verwenden, um die Leistung zu verbessern. Bedeutet nicht, dass das Gerät als RAM verwendet wird, sondern als Leistung zwischen RAM und platterbasierter Festplatte.
Salman A

Antworten:

161

Ich habe nur eine eigenständige Anwendung in Betracht gezogen, die auf einem "Standard" -Maschine ohne die Möglichkeit ausgeführt wird, sie einfach anderswo zu installieren oder spezielle Hardware oder Software zu verwenden. Andere Antworten beziehen sich (korrekt) auf die Softwaremigration oder dedizierte Hardware für die Aufgabe.

Jeder Weg, RAM über ein Netzwerk freizugeben, unterliegt den Einschränkungen dieses Netzwerkmediums. Da selbst Gigabit-Ethernet auf ungefähr 100 MB / s (Megabyte) begrenzt ist, bedeutet dies, dass auch Ihre "RAM" -Geschwindigkeit begrenzt ist.

100 MB / s sind ein winziger Bruchteil der RAM-Geschwindigkeit, die sich tatsächlich in Ihrem System befindet. Ihr Programm wird schmerzhaft langsam sein und sich anfühlen, als würde es ab Anfang der 90er Jahre auf einem Computer ausgeführt

Moderne Festplatten sind für sequentielles Lesen und Schreiben etwas schneller. SSDs sind um ein Vielfaches schneller.

Dies ignoriert Latenzprobleme, die Ihr Programm wieder um eine Größenordnung verlangsamen.

Aufgrund der Langsamkeit und anderer technischer Probleme ist dies kein Problem, dessen Lösung für "Heim" - oder "Bürosysteme" jemals als sinnvoll erachtet wurde. Es ist billiger und effektiver, mehr RAM zu kaufen, wenn es benötigt wird.

Kaufen Sie einfach mehr RAM oder sogar eine SSD für eine Auslagerungsdatei. Es gibt keinen anderen Weg, um dies zu erreichen, der keine verrückte Menge an Arbeit oder Hardware für geringen Nutzen erfordert.

Mokubai
quelle
46
Das Auslagern / Paging über Gigabit-Ethernet kann eine geringere Latenz haben als eine Auslagerungsdatei auf einer lokalen Magnetplatte . zB 10 ms Festplattenlatenz im Vergleich zu einer Ping-Zeit von weniger als 1 ms für lokales Ethernet. Wenn der Dateiserver die Auslagerungsdatei (oder ein iSCSI - Gerät sind Vertauschen Sie) hält es heiß in seinem RAM gewinnen sie möglicherweise. IDK, wenn Windows das Blättern in eine Netzwerkdatei unterstützt. (Ich bin mir ziemlich sicher, dass Linux dies tut, aber dies ist eine Windows-Frage). Oh, habe gerade gesehen, dass die Frage "über das Internet" lautet, also nvm.
Peter Cordes
2
@MarkHu Da dies bei Super User angefragt wurde, glaube ich nicht, dass der Fragesteller die Kontrolle über den Code der verwendeten Software hat.
oldmud0
2
@PeterCordes Was Sie beschreiben, ist immer noch ein Verlust beim Kauf von mehr RAM oder einer SSD. Und noch sicherer in Windows. ;)
jpmc26
11
@TomTom für zu Hause und für "normale" Büroanwendungen Gigabit ist immer noch so ziemlich das, was Sie auf Ihrem Desktop-Computer erhalten. Nur weil 25G und 100G für die Backbone-Infrastruktur üblich (oder zumindest verfügbar) sind, bedeutet dies nicht, dass Sie sie wahrscheinlich auf dem Desktop sehen werden. Ich kann nicht einmal finde eine Desktop - 10GigE- Karte an jedem lokalen Anbieter zu einem vernünftigen Preis, geschweige denn eine 25GigE. 10GigE-Karten kosten hier etwa das Vierfache eines 8-GB-Memory-Sticks. Ich weiß, welches Upgrade ich für sinnvoll halte.
Mokubai
9
"fühle mich wie es auf einem Computer aus den frühen 90ern läuft" - seltsam, Computer aus den 90ern fühlten sich viel schneller an als Computer heute.
Jeremy Visser
73

Der Vollständigkeit halber : InfiniBand ermöglicht den direkten Zugriff auf den Speicher anderer Maschinen.

Es erfordert jedoch:

  • Ein InfiniBand-Switch
  • Eine InfiniBand-Zusatzkarte in jeder Maschine
  • Die Anwendung muss speziell dafür programmiert werden

Es funktioniert NICHT über ein vorhandenes Netzwerk, es erfordert eine vollständig unabhängige Infrastruktur für alle verbundenen Knoten. Es funktioniert auch NICHT über das Internet

Gerald Schneider
quelle
53
Es ist sicherlich auch viel teurer als nur 8 GiB RAM zu bekommen :-).
sleske
40
Oh, nur um eine Größenordnung oder so;)
Gerald Schneider
7
Sie brauchen kein Infiniband, RoCE ist auch möglich. Dies erfordert jedoch Netzwerkkarten, die RDMA unterstützen, und wahrscheinlich einen neuen Switch zur Unterstützung der Netzwerkkarten sowie eine Anwendung, die für die Verwendung von RDMA programmiert ist.
alex.forencich
7
+1, weil es eine großartige und richtige, aber - für diese Situation - völlig nutzlose Antwort ist :-)
daniel.neumann
1
Sie tun - es sei denn, Sie erhalten 25G oder 100G, die teurer sind. RDMA löst das Latenzproblem nicht.
TomTom
19
Is there any alternative solution?

Dies hängt stark von der Art der Daten ab.

Sie könnten 2 verschiedene MySQL-Server auf 2 verschiedenen Computern ausführen.

Teilen Sie dann die Daten in 1/2 und schreiben Sie das Programm, um automatisch zu wissen, zu welchem ​​Server Sie gehen sollen.

Dies kann natürlich auf eine beliebige Anzahl von Servern skaliert werden, sofern diese verfügbar sind.

Cybernard
quelle
Ich hatte darüber nachgedacht, zu erwähnen, dass die Art und Weise, wie wir "Speicher gemeinsam nutzen", darin besteht, die Anwendung aktiv auf einen anderen Computer zu verschieben und dann über die verfügbaren Methoden remote damit zu arbeiten. Dies ist definitiv eine Alternative zum Kauf von mehr Arbeitsspeicher, insbesondere wenn bereits ein anderer Computer verfügbar ist. +1
Mokubai
1
Wie ein Remote-Desktop?
Innov
4
Sie haben zwei Computer, auf denen ein separates Betriebssystem ausgeführt wird, und auf jedem Computer wird eine Kopie von mysql ausgeführt. Computer Nr. 1 könnte also 192.168.0.1 und Computer Nr. 2 192.168.0.2 (oder was auch immer) sein. Auf Ihrem Haupt-PC können Sie jetzt beide IP-Adressen verwenden, um Ihre Daten abzurufen. Mysql oder sein kostenloser Ersatz-Mariadb bietet Bibliotheken wie libmysql, die Sie Ihrem Programm hinzufügen können, damit es nativen Zugriff auf mysql hat. Dies ist kein Remotedesktop, dessen Client-Server- und / oder Client- und Multiple-Server-Beziehung.
Cybernard
15

Ja, es ist einigermaßen einfach (und ich habe dies getan, für plattenlose Systeme, die einen Swap benötigen), das Network Block Device-Protokoll zu verwenden.

Installieren Sie nbd-serverdas Programm auf dem Server, und konfigurieren Sie es so, dass automatisch Dateien pro Host erstellt werden.

Stellen Sie sicher, dass auf Ihren Clientcomputern NBD in den Kernel kompiliert wurde, und konfigurieren Sie sie dann für den Austausch auf ein NBD-Gerät. Das nbd-clientPaket kann helfen.

Tut mir leid, wenn das oben genannte etwas vage ist - Die Maschinen, auf denen ich das gemacht habe, sind von hier aus nicht erreichbar; Möglicherweise kann ich die Details eingeben, wenn ich Zugriff darauf habe.

Es gibt eine alternative NBD-Server-Implementierung namens nbdkit; Ich weiß nichts darüber.

Toby Speight
quelle
Ich habe gerade festgestellt, dass die Frage ein Windows-Tag hat. Ich weiß nichts über Windows - sorry.
Toby Speight
8
+1, über GigE auf einem LAN - Swapping sollte niedrige Latenz als ein lokaler magnetischer Fest Treiber sein, wenn der Datei-Server , den Sie sind Vertauschen der Auslagerungsdatei im Cache hält seinen RAM. HD-Suchzeiten von ~ 10 ms vs. LAN-Ping-Zeiten von ~ 0,25 ms. Keine Ahnung, ob Windows etwas Ähnliches kann, z. B. mit einer Auslagerungsdatei über Windows File Sharing (SMB) oder ein anderes Protokoll, aber möglicherweise könnte iSCSI funktionieren. Das OP erwähnt "über das Internet"; Das wäre keine gute Idee. Es ist kein Gewinn, es sei denn, Ihre Ping-Zeit ist kürzer als Ihre HD-Latenz mit wahlfreiem Zugriff.
Peter Cordes
Ich sehe nicht, wie dies als "zusätzlicher RAM" qualifiziert ist. Es ist nicht anders als einige Daten in eine Datei auf einer lokalen Festplatte zu speichern, oder?
ivan_pozdeev
Für einen Windows-Client kann man ein Block-Gerät unter Linux über Samba freigeben und es unter Windows mit ImDisk als Datenträger bereitstellen (Größe muss manuell angegeben werden).
ivan_pozdeev
Ich habe dies auch in der Vergangenheit unter Linux getan, obwohl ich meine eigene NBD-Server-Client-Implementierung verwendet habe, hat es gut funktioniert, das NBD-Block-Gerät als Swap-Partition zu verwenden.
Hanshenrik
9

Angesichts der kleinen, unwichtigen Details "Windows 10, Workstation hat 8 GB RAM" gibt es wirklich nur eine vernünftige Antwort: Kaufen Sie mehr RAM und fahren Sie weniger Mist.

Eine SSD zu kaufen und die Auslagerungsdatei dort abzulegen, wäre die nächstbeste Option, aber wirklich ... mehr RAM zu kaufen.

Das Bereitstellen der Auslagerungsdatei ("Speicher freigeben") über das Netzwerk ist natürlich möglich, aber es ist eine sehr schlechte Idee. Zwar gibt es Grenzfälle, in denen die Zugriffszeit über das Netzwerk besser ist als der Zugriff auf ein lokales Laufwerk, dies ist jedoch für Ihren Anwendungsfall irrelevant, da Sie gleichzeitig konsistent niedrige Zugriffszeit und hohe Bandbreite benötigen . Denken Sie daran, dass Sie nicht mit ein oder zwei Seitenfehlern rechnen, sondern ständig tauschen. Wenn Sie nicht bereit sind, ein paar Tausend Euro zu zahlen, können Sie nicht annähernd RAM oder eine SSD kaufen.

8 GB sind bei weitem nicht genug, um Windows 10 und eine speicherhungrige Anwendung gleichzeitig auszuführen . Es reicht kaum aus, um Word, Excel und Outlook gleichzeitig auszuführen. Das ist genau das typische völlig unbrauchbare "Total Bullshit Corporate Setup", mit dem Millionen von Menschen täglich auf ihren Arbeits-Laptops leben müssen. Wenn Sie 100-200 Euro in ein anderes Speichermodul investieren, amortisieren sich die Kosten innerhalb einer Woche (Dinge, die Minuten dauerten, dauern Sekunden, und Zeit ist Geld - unglücklicherweise ist es oft schwierig, in den Kopf Ihres lokalen Bohnenkostenzählers zu geraten).

Wenn Sie den Computer besitzen, können Sie auch NTLite verwenden, um den Windows 10-Mist zu reduzieren und den Speicherbedarf zu verringern. Oder Sie können nur 80% der meist unnötigen Dienste deaktivieren. Es scheint unglaublich, aber es ist möglich , eine neuere Version von Windows mit weniger als 2 GB RAM zu betreiben.

Aber wirklich, kaufen Sie einfach RAM ... es ist so viel schneller und einfacher als Stunden Ihrer kostbaren Zeit damit zu verbringen, den Windows-Mist zu reduzieren.

Damon
quelle
2
Ist Windows wirklich so schlecht auf RAM? Ich führe Debian mit dem gesamten System im RAM aus (kein physisches Laufwerk) und kann Dutzende von offenen Webbrowser-Registerkarten, LibreOffice-Text & -Tabellen, Gimp-Fotobearbeitung sowie ein Video ansehen oder Musik hören Platz für Programme oder Dateien, insgesamt 8 GB. Ich bin kein Win-Hasser, aber Ihrer
Meinung nach
1
Nun, das ist umstritten - das OP hat es richtig. Das letzte Mal, dass ich 8 GB machiens gekauft habe, war um das Jahr 2010. Dies ist das Jahr 2017. Anwendungen mit 16 GB Speicher sind in bestimmten Bereichen nicht so selten (Hinweis: keine E-Mails schreiben und nein, Word ist auch in Ordnung, die meisten Leute schreiben keine Romane darauf). Dies ist eine kleine Investition - 16 GB Speicher sind ein verdammtes Mittagessen oder so.
TomTom
7
@ Xen2050 Ich habe mich gefragt, ob es wirklich so schlimm ist. Auf meinem 6-GB-Windows-10-Computer habe ich Outlook, Excel, Word und Edge geöffnet. Ich habe eine sehr kleine Instanz von SQL Server ausgeführt. Malwarebytes scheint etwas mit 170 MB zu tun , Ich habe Visual Studio 2017 geöffnet, Firefox ist hier geöffnet, und ich habe eine Speicherauslastung von 65% und Windows musste noch nicht einmal mit der Verwendung von komprimiertem Speicher beginnen. Also, IME, Windows 10 läuft einwandfrei mit weniger als 8 GB RAM und auf jeden Fall ist Damons offensichtliche Abneigung gegen Windows für die Antwort irrelevant.
Andrew Morton
1
@Damon: Aber es gibt keine Grundlage, um "den Windows-Mist" oder "den vom Arbeitgeber installierten Aftermarket-Mist" dafür verantwortlich zu machen, es sei denn, Sie haben eine Analyse durchgeführt, was den zusätzlichen Arbeitsspeicher verbraucht hat. Da viele Leute (einschließlich ich) speicherintensive Berechnungen unter Windows 7, Windows 8.x und Windows 10 ohne dieses Problem durchgeführt haben, deutet dies nachdrücklich darauf hin (beweist dies jedoch nicht), dass der Täter nicht dazugehört von Windows selbst.
Ben Voigt
6

Eine einfache Alternative wäre, die Anwendung auf dem Remote-PC auszuführen , möglicherweise unter einem dedizierten Benutzerkonto, und sie einfach über RDP, VNC oder was auch immer bequem zu steuern.

Rackandboneman
quelle
Wenn der Remote-PC genug RAM hat ...
LateralTerminal
1
@ LateralTerminal Das ist impliziert.
Clonkex
2
Ja, das Zusammenführen des Arbeitsspeichers von zwei Computern über ein Netzwerk ... funktioniert nicht, nicht für normale Anwendungen (die quadratische, graue Art mit Schaltflächen und Menüs).
Rackandboneman
6

Eine andere Möglichkeit besteht darin, die Anwendung vorübergehend in einer Umgebung bereitzustellen, in der der Arbeitsspeicher problemlos vergrößert oder verkleinert werden kann.

Ich würde mir eine Amazon AWS-Instanz ansehen, deren Größe mit einem Neustart geändert werden kann.

IE eine kleine Instanz wie ein C5.large hat 4 GB RAM und 2 Kerne und kostet 2,04 USD pro Tag für Linux oder 4,26 USD pro Tag für eine Windows-Installation. EBS-Speicherplatz ist kostenpflichtig und wird linear mit dem zugewiesenen GB skaliert.

Sie können Ihr System in dieser kleineren Größe einrichten und dann, wenn Sie mit vollem Rauschen arbeiten möchten, stoppen, die Instanzgröße ändern und die Software ausführen.

  • m5.4xlarge ist 64 GB RAM und 16 Kerne, für 18,44 USD / Tag oder 36,10 USD / Tag für Windows.
  • R4.8xlarge ist 244 GB und 32 Kerne, für 51,07 USD / Tag oder 86,40 USD / Tag mit Windows.
  • x1.32xlarge ist 1952 GB und 128 Kerne, für 320,12 USD / Tag oder 461,43 USD / Tag mit Windows

Oder der größte ...

  • x1e.32xlarge ist 3904 GB und 128 Kerne, für 640,52 USD / Tag oder 781,82 USD / Tag mit Windows. Wenn Ihr Kollege mehr braucht, muss das Problem besser umgeschrieben werden.

https://www.ec2instances.info/ hilft Ihnen bei der Auswahl einer geeigneten Größe. Beachten Sie, dass einige Standorte mehr kosten als andere. Singapur und Nordkalifornien sind teuer. Ihre VM kostet jedoch nichts, wenn sie nicht ausgeführt wird, außer Festplattenspeicherkosten.

Der Nachteil ist, dass der Kauf von VM-Zeit eine teure Methode ist, wenn Sie diesen Speicher für längere Zeit benötigen. Allerdings scheinen Buchhalter manchmal Betriebskosten wie Miete gegenüber Kapitalkosten wie Upgrades vorzuziehen.

Criggie
quelle
1
Mir ist klar, dass diese Antwort nicht den "Zugriff auf RAM über das Netzwerk" gemäß der OP-Anfrage betrifft. Es ist eher so, als würde man auf einen Remote-Host mit mehr RAM zugreifen. Wenn Sie jedoch wissen, wie Budgets an manchen Orten funktionieren, kann dies eine sinnvolle Lösung sein, um die Arbeit auf finanzierbare Weise zu erledigen.
Criggie
4

Wie andere gesagt haben, ist es technisch möglich, aber es lohnt sich nicht.

Wenn Sie jedoch die Verwendung Ihres Computers beschleunigen möchten, können Sie einige Ihrer Anwendungen auf einen Remote-Server auslagern.

Dies hängt hauptsächlich davon ab, woran Sie arbeiten und welche Anwendung Sie verwenden. Wenn Sie Programme ausführen, die für eine kleine Datenausgabe viel Verarbeitungszeit benötigen, können Sie sie auf einem anderen Server als Ihrem Computer ausführen, um Zeit und Ressourcen zu sparen, während Sie an etwas anderem arbeiten.

Das Beispiel, an das ich denke, ist ein Server, der meinen Code jedes Mal testet, wenn ich eine Änderung vornehme. Die Idee bei einer solchen Lösung ist, dass sie auf bestimmte Anwendungsfälle beschränkt ist.

jedermann
quelle
4

Bitten Sie die IT, mehr RAM für Ihren PC zu kaufen, und demonstrieren Sie die Notwendigkeit anhand eines Screenshots der Verwendung der App im Task-Manager.

Christopher Geisel
quelle
4
Praktische Lösung ... selbst die Aufforderung an die IT, vorübergehend mehr RAM von anderen Systemen einzutauschen, sollte eine "kostenlose" Antwort sein.
Xen2050
2
@ Xen2050 Währenddessen weint dein Kollege, weil sein System nicht mehr bootet.
Willtech
3
@Willtech Es ist normal und richtig für die IT, Ersatzteile für alle Teile und Ersatzteile für ganze Arbeitssysteme zu warten. Ausfallzeiten sind die tatsächlichen Kosten.
Christopher Hostage
3

Hierfür gibt es eine kommerzielle Lösung über eine Firma namens Kove ( http://kove.net/). Es erfordert eine Infiniband-Infrastruktur, um auf der "Backplane" zu funktionieren (Ethernet funktioniert normal), obwohl abhängig von den Besonderheiten manchmal andere Optionen wie RoCE verfügbar gemacht werden können. Sie bieten eine Reihe transparenter Schnittstellen, die eine Integration ohne Codeänderungen ermöglichen, und APIs für die Kernelumgehung mit direkterem CPU-Zugriff (dh Vermeidung von Kernel-Overhead). In Bezug auf die Leistung hängt es von Ihrer Anwendung ab. Wenn Sie CPU-gebunden sind, kann die Auswirkung minimal sein (was überraschend sein kann). Wenn Sie eine Speicherbandbreite auf dem lokalen Host haben, erhalten Sie mehr Speicher, aber Sie werden durch den bereits vorhandenen Engpass gedrosselt. In diesem Fall ist es für die Arbeitslast von Vorteil, über einen größeren Speicher zu verfügen, als in einer Box gespeichert werden kann. und nicht zu wenig RAM? Wir haben (sehr) gute Ergebnisse mit Virtualisierungs- und Python-Lernbibliotheken erzielt. High-End-HPC-Anwendungen tendieren dazu, schlechter zu sein, aber wir haben die C-APIs verwendet und es geschafft, die Leistung akzeptabel zu halten und gleichzeitig die Anzahl der Knoten zu reduzieren (die Knoten waren für den RAM da, nicht für die CPU-Zyklen), was im Vergleich zu MPI ein Plus ist . Ob dies eine gute Lösung für Ihren Kollegen ist, lässt sich nur schwer beurteilen. Ich hoffe, das hilft. Klar, ich arbeite nicht für Kove und habe keinen finanziellen Anreiz, aber ich habe einige Jahre mit ihnen zusammengearbeitet und denke, dass diese Technologie das Potenzial hat, die Art und Weise, wie bestimmte Computerarbeiten durchgeführt werden, erheblich zu beeinflussen. Wir haben jedoch die C-APIs verwendet und es geschafft, die Leistung akzeptabel zu halten und gleichzeitig die Knotenzahl zu reduzieren (die Knoten waren für den RAM und nicht für die CPU-Zyklen vorhanden), was im Vergleich zu MPI ein Plus ist. Ob dies eine gute Lösung für Ihren Kollegen ist, lässt sich nur schwer beurteilen. Ich hoffe, das hilft. Klar, ich arbeite nicht für Kove und habe keinen finanziellen Anreiz, aber ich habe einige Jahre mit ihnen zusammengearbeitet und denke, dass diese Technologie das Potenzial hat, die Art und Weise, wie bestimmte Computerarbeiten durchgeführt werden, erheblich zu beeinflussen. Aber wir haben die C-APIs verwendet und es geschafft, die Leistung akzeptabel zu halten und gleichzeitig die Anzahl der Knoten zu reduzieren (die Knoten waren für den RAM da, nicht für die CPU-Zyklen), was im Vergleich zu MPI ein Plus ist. Ob dies eine gute Lösung für Ihren Kollegen ist, lässt sich nur schwer beurteilen. Ich hoffe, das hilft. Klar, ich arbeite nicht für Kove und habe keinen finanziellen Anreiz, aber ich habe einige Jahre mit ihnen zusammengearbeitet und denke, dass diese Technologie das Potenzial hat, die Art und Weise, wie bestimmte Computerarbeiten durchgeführt werden, erheblich zu beeinflussen.

Rechnung
quelle
Wie viele Gigabyte Speicher können Sie für das Infinity-Band-Setup kaufen?
Joojaa
Ja, das Hauptproblem hier ist der kleine Punkt, an dem er davon spricht, nur 8 GB Speicher zu haben und 16 zu benötigen. Das ist nicht "Wie verwende ich Remote-RAM?" .
TomTom
@ Jooja Wir haben 6 TB. Basierend auf dem, was wir gesehen haben, haben wir kein Limit gesehen. Sie können weitere Remote-RAM-Appliances hinzufügen. Es scheint ziemlich linear zu skalieren, daher handelt es sich um ein Konstruktions- / Kostenproblem. Wir haben ein 1PB-System einmal auf Papier entworfen, konnten es aber offensichtlich nicht testen.
Bill
@TomTom Ich habe den Kommentar zu 8 GB nicht gesehen, aber klar, wenn es sich um 8 GB im Vergleich zu 16 GB RAM handelt, werden ein paar US-Dollar für eine neue Maschine das Problem lösen.
Bill
Zum Teufel, für ein paar hundert Dollar können Sie wahrscheinlich den RAM auf 32 GB aufrüsten, es sei denn, das Motherboard ist lächerlich alt und begrenzt.
flauschige
2

Eine andere Sichtweise - vielleicht ist das Problem nicht die Begrenzung der Systemressourcen, sondern die verschwenderische Anwendung, die Ihr Freund schreibt. 6 GB RAM sind unglaublich viel Arbeitsspeicher.

Nur weil viele der anderen Apps überlastet sind , muss Ihre Freundschaftsanwendung nicht unbedingt eine davon sein. Durch die Verwendung verschiedener Programmiermethoden kann der Speicherbedarf reduziert und gleichzeitig die Geschwindigkeit verbessert werden. Wenn die App beispielsweise das gesamte Dataset in den Speicher lädt und es dann bearbeitet, ist dies weitaus verschwenderischer als beispielsweise das Speichern von Daten in einer (lokalen oder fernen) SQL-Datenbank mit wenigen ausgewählten Indizes und der Zugriff darauf über diese Datenbank. Lassen Sie es Daten möglichst blockweise verarbeiten, anstatt sie alle auf einmal zu laden. In-Memory-Strukturen können ebenfalls verschwenderisch sein. Freier Speicher, wenn Sie damit fertig sind. Laden Sie nicht in den RAM, was Sie stattdessen Speicher zuordnen können. Und Hunderte anderer Tipps ...

Wenn die Anwendung jedoch wirklich mehr Speicherplatz benötigt, der auf anderen Computern gespeichert werden muss, kann sie so geändert werden, dass sie mit memcached und dergleichen dort gespeichert wird. Bonuspunkte, da diese in Zukunft besser skaliert werden.

Matija Nalis
quelle
5
6 GB Speicher sind je nach Anwendung nicht sonderlich viel. Selbst Endbenutzer können Fotos bearbeiten (Photoshop liebt RAM und eine High-End-Kamera macht 64-Megapixel-Bilder), Videos bearbeiten (VIEL schlimmer), dann gibt es mathematische Arbeit. Heck, sogar Excel wird gerne ein paar GB verwenden. Nicht jeder schreibt E-Mails, benutzt Twitter und andere solche Dinge.
TomTom
@TomTom Wenn Sie eine Verarbeitung mit hohen Megapixeln benötigen, werden Sie einen hohen Speicherbedarf haben (aufgrund der Art der Anforderung). Aber es sei denn, Sie führen in Ihrem Excel-Arbeitsblatt einen DNA-Genomspleiß durch und es verbraucht immer noch ein paar GB RAM. Das ist genau die Art von Aufblähung und schlampiger Programmierung, von der ich spreche. Sie wissen, dass Ihr Home-Budget vor einigen Jahrzehnten in Lotus 1-2-3 auf Computern mit 3 Größenordnungen weniger RAM (und mindestens hundertmal langsamerem Prozessor) als in Excel so schnell (oder schneller) verarbeitet wurde von heute.
Matija Nalis
1
Was für ein ignoranter Anser. Ich kann nur vermuten, dass Sie sehr wenig Erfahrung damit haben, wofür die Leute Excel verwenden. Als Microsoft die 64-Bit-Version von Office herstellte, gaben sie an, dass es wenig Sinn macht - AUSSER für Access und Excel, da einige Leute (meist Manager) brutal große Analysen über Excel ausführen und dabei viele Gigabyte Speicher verbrauchen. Die Flexibilität von Excel und die Annäherung an Nicht-Programmierer machen es zu ihrem bevorzugten Werkzeug (Statistiker sind in der Regel in der Verwendung von R geschult). Ich habe persönlich 200 Excel-Dateien von Finanzleuten gesehen.
TomTom
Wenn die Berechnung Ihres Haushaltsbudgets in Excel viel Zeit in Anspruch nimmt, sind Sie um einiges reicher als ich. Interessante Frage zu Excel im Vergleich zu 1-2-3 - die Core-Calc-Schleife ist in 1-2-3 möglicherweise schneller, weil sie nicht so viel bewirkt. Aber auf einem Multi-Core-Rechner schlägt Excel leicht 1-2-3. Und offensichtlich werden sich die gigantischen Genomspleißblätter aufgrund der Blattgrößen in 1-2-3 wahrscheinlich nicht öffnen. Im Interesse der Transparenz sollte ich zugeben, dass ich früher im Calc-Kernteam an Excel gearbeitet habe, daher bin ich möglicherweise voreingenommen ...
Chris Rae
1

So der Benutzer aufgefordert , für HOW Speicher über das Netzwerk zu teilen. Nicht, wenn es eine gute Idee ist. Also hier ist tatsächlich, wie Sie es tun könnten.

Ich sage nicht, dass dies eine gute Idee ist oder performant sein wird, aber es sollte funktionieren.

  • Computer 1 = "master" - hier wird Code ausgeführt
  • Computer 2 = "Kind" - Speichergeber

Ich gehe davon aus, dass dies nicht Windows Server ist, auf dem Sie einen iSCSI-Mountpunkt erstellen können.

Computer 1 Schritte:

  1. Laden Sie die kostenlose Ramdisk von Dataram herunter: http://memory.dataram.com/products-and-services/software/ramdisk
  2. Erstellen Sie eine Ramdisk und formatieren Sie sie mit NTFS - Anweisungen finden Sie auf ihrer Website
  3. Erstellen Sie im Festplatten-Manager eine VHD-Datei auf der mit NTFS formatierten Ramdisk
  4. Geben Sie das Ramdisk-Stammverzeichnis über das Netzwerk für SMB frei. Klicken Sie mit der rechten Maustaste auf das Laufwerk, geben Sie diesen Ordner frei und geben Sie ihn frei

Computer 2 Schritte:

  1. Ordnen Sie das freigegebene Laufwerk von der Cild auf einem Laufwerk zu
  2. Hängen Sie die in Schritt 3 erstellte virtuelle Festplatte in den Datenträger-Manager ein
  3. Verschieben Sie den Speicherort der lokalen Auslagerungsdatei über Windows- Auslagerungsdatei verschieben auf die bereitgestellte virtuelle Festplatte
  4. Entfernen Sie alle anderen Auslagerungsdateieinträge.

Getan!

Vorsichtsmaßnahmen - Möglicherweise können Sie den VHD-Unsinn überspringen, wenn Sie die Auslagerungsdatei unter Windows auf die Netzwerkfreigabe verschieben können. Es gibt nicht viele Beispiele dafür online (aus offensichtlichen Gründen).

Es kann zu einer vollständigen Systeminstabilität oder zu einer vollständigen anderen Situation kommen. Niemand weiß wirklich, was passieren würde.

Brennen Smith
quelle
0

Wenn Sie "RAM" für die gemeinsame Nutzung über das Netzwerk und nicht nur "Speicher" jeglicher Art erwähnen, lautet die endgültige Antwort theoretisch "Ja", praktisch "Nein".

Während andere Arten von Speicher wie Speicher und andere temporäre Daten aus verschiedenen Gründen und Gründen regelmäßig über das Netzwerk gemeinsam genutzt werden. Auf die gleiche Weise kann RAM bei Bedarf technisch über das Netzwerk gemeinsam genutzt werden. Aber die Leistung und die Kosten werden zu hoch sein, um in der realen Welt realisierbar zu sein.

Der RAM oder Arbeitsspeicher wird von einem Betriebssystem als Arbeitsspeicher verwendet, sodass viele Lese- / Schreibvorgänge ausgeführt werden. Im Durchschnitt ist die Datengeschwindigkeitskapazität mit RAM im Vergleich zu anderen Teilen am höchsten. Wenn Sie RAM in ein Netzwerk einbinden, müssen Sie über eine sehr schnelle Datenübertragungskapazität verfügen, und die Kosten sind, selbst wenn technisch möglich, himmelhoch. Mit einem winzigen Teil der Kosten für ein Upgrade der Netzwerkgeschwindigkeit erhalten Sie RAM für Ihren Computer vor Ort.

A. Bauani
quelle
0

Anwendungen werden in der Regel im virtuellen Speicher ausgeführt, sodass der Bedarf an virtuellem Speicher den verfügbaren physischen Speicher des Systems überschreiten kann, ohne dass dies Auswirkungen auf die Leistung hat. Das Betriebssystem wird einfach Seite virtuelle Speicher auf der Festplatte physische Speicher freizugeben , wie in jedem Moment für die aktive Nutzung benötigt. Dies funktioniert normalerweise problemlos für Anwendungen mit einer angemessenen Lokalität (die Aktivität ist zu einem bestimmten Zeitpunkt auf bestimmte Bereiche im virtuellen Speicher der Anwendung beschränkt). Wenn eine Anwendung eine schlechte Lokalität aufweist (ständig auf Speicher im gesamten virtuellen Speicher verweist), ist die Leistung schlecht, es sei denn, der gesamte virtuelle Speicher kann im physischen Speicher untergebracht werden (der gesamte virtuelle Speicher ist resident).

Hier gibt es also einige Möglichkeiten:

  • Wenn die Anwendung nur eine große Stellfläche, aber eine gute Lokalität aufweist, sollten Sie sie auf dem verfügbaren Computer ausführen können. Die Leistung kann auf einem Computer mit mehr Speicher akzeptabel sein oder sich nicht merklich verbessern.
  • Wenn die Lokalität schlecht ist, können Sie feststellen, dass es auf dem verfügbaren Computer trotzdem ausgeführt wird, nur sehr schlecht. (Dies scheint der Fall für Sie zu sein)
  • Aktualisieren Sie das (angenommene) Magnetplattenlaufwerk auf ein Solid-State-Laufwerk (diese sind erheblich schneller).
  • Fügen Sie dem verfügbaren Computer Speicher hinzu (falls möglich)
  • Möglicherweise müssen Sie einen Computer mit mehr Arbeitsspeicher suchen und darauf ausführen.
  • Verbessern Sie die Anwendung, sodass sie entweder eine kleinere virtuelle Fläche oder eine bessere Lokalität aufweist (wenn Sie mit dem Autor der Anwendung verbunden sind oder sind).

Bei der Verwendung von Speicher auf einem Remotecomputer wird im Grunde eine vernetzte Auslagerungsdatei erstellt . Theoretisch kann es funktionieren, aber in der Praxis ist die Leistung weitaus besser, wenn die Auslagerungsdatei aufgrund der Netzwerkbandbreite und der Latenzzeit lokal auf dem Computer (seiner eigenen Festplatte) gespeichert war. Es spielt keine Rolle, ob das ferne System die Auslagerungsdatei in seinem Speicher oder auf seiner Festplatte hostet, der Engpass (bedeutendster Leistungseinschränker) ist das Netzwerk. Dies gilt insbesondere für das Internet, aber auch, wenn sich der Remotecomputer im selben LAN befindet.

Zenilogix
quelle
Windows lässt keine Auslagerungsdatei auf einem Netzwerklaufwerk zu. Selbst wenn diese schnell genug wäre, ist dies nicht möglich.
Jamie Hanrahan
@ Jamie Hanrahan Anscheinend können Sie, wenn Sie die Einstellung direkt in der Registrierung ändern. Ich frage mich, ob sie einige Details ausgeschlossen haben, da die Netzwerklaufwerke unter Windows für jeden Benutzer einzeln sind. Ich vermute auch, dass dies nach einem Neustart abbricht.
ivan_pozdeev
1
Trotzdem ist es eine schreckliche Idee, weshalb die Benutzeroberfläche dies ausschließt. Netzwerkverbindungen sind nicht zuverlässig genug, um Paging zu vertrauen. Denken Sie daran, dass viele Kerneldaten (ausgelagerter Pool) ausgelagert werden können. Wenn es auch nur für kurze Zeit nicht verfügbar ist, stürzt das Betriebssystem ab.
Jamie Hanrahan
0

Dies hängt wirklich davon ab, um welche Art von Anwendung es sich handelt und wofür der Stößel verwendet wird.

Beispielsweise können viele Webanwendungen RAM über das Netzwerk verwenden, indem sie eine Verbindung zu einem memcachedServer herstellen. Auf diese Weise können Cache-Daten (und andere Daten, auf die schnell zugegriffen werden sollte) auf einem anderen Computer mit viel RAM gespeichert werden.

Dies ist natürlich anwendungsspezifisch und erfordert eine Anwendung, die memcached verwenden kann. Dies hilft Ihnen nicht, eine zweite Instanz von Slack zu öffnen, da ein Browser die Verwendung eines solchen Cache-Backends nicht unterstützt.

allo
quelle
-1

Anstatt den Arbeitsspeicher freizugeben, codieren Sie einfach diese Anwendung , um eine untergeordnete EXE-Datei zu erstellen , die auf dem Netzwerk-PC ausgeführt wird und auf diesem PC dasselbe tut.

T.Todua
quelle