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.
windows
networking
memory
Innov
quelle
quelle
Antworten:
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.
quelle
Der Vollständigkeit halber : InfiniBand ermöglicht den direkten Zugriff auf den Speicher anderer Maschinen.
Es erfordert jedoch:
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
quelle
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.
quelle
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-server
das 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-client
Paket 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.quelle
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.
quelle
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.
quelle
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.
Oder der größte ...
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
Ich gehe davon aus, dass dies nicht Windows Server ist, auf dem Sie einen iSCSI-Mountpunkt erstellen können.
Computer 1 Schritte:
Computer 2 Schritte:
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.
quelle
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.
quelle
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:
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.
quelle
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
memcached
Server 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.
quelle
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.
quelle