Erhöhen (oder Verringern) des für R-Prozesse verfügbaren Speichers

123

Ich möchte die für R verfügbare Speichermenge erhöhen (oder verringern). Welche Methoden gibt es, um dies zu erreichen?

Medriscoll
quelle

Antworten:

64

Von:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( Spiegel )

Windows-Benutzer erhalten möglicherweise die Fehlermeldung, dass R nicht genügend Arbeitsspeicher hat.

Wenn Sie R bereits installiert haben und anschließend mehr RAM installieren, müssen Sie R möglicherweise neu installieren, um die zusätzliche Kapazität nutzen zu können.

Sie können die Menge des verfügbaren Speichers auch manuell einstellen. Schließen Sie R und klicken Sie mit der rechten Maustaste auf Ihr R-Programmsymbol (das Symbol auf Ihrem Desktop oder in Ihrem Programmverzeichnis). Wählen Sie "Eigenschaften" und dann die Registerkarte "Verknüpfung". Suchen Sie nach dem Feld "Ziel" und fügen Sie nach den abschließenden Anführungszeichen um die Position der ausführbaren R-Datei hinzu

--max-mem-size = 500M

wie in der Abbildung unten gezeigt. Sie können diesen Wert auf bis zu 2 GB oder die maximal installierte physische RAM-Größe erhöhen.

Wenn Sie die Fehlermeldung erhalten, dass R keinen Vektor der Länge x zuordnen kann, schließen Sie R und fügen Sie die folgende Zeile in das Feld "Ziel" ein:

--max-vsize = 500M

oder nach Bedarf. Sie können jederzeit überprüfen, wie viel Speicher R verfügbar ist, indem Sie an der Eingabeaufforderung R eingeben

memory.limit()

Dies gibt Ihnen die Menge des verfügbaren Speichers in MB. In früheren Versionen von R mussten Sie Folgendes verwenden : round(memory.limit()/2^20, 2).

BobbyShaftoe
quelle
7
Beachten Sie, dass R unter 32-Bit-Windows nur bis zu 3 GB RAM verwenden kann, unabhängig davon, wie viel Sie installiert haben. Es gibt eine 64-Bit-Version von R für Windows von REvolution Computing, die unter 64-Bit-Windows ausgeführt wird und den gesamten verfügbaren RAM nutzen kann: revolution-computing.com/products/revolution-enterprise.php
David Smith
6
Nur zwei Anmerkungen: (i) memory.limit () funktioniert nur unter Windows, und (ii) der Befehl, der die richtige Antwort zurückgibt, ist rund (memory.limit (), 2) - zumindest in meiner Version von R ( 2.8.1).
Medriscoll
31
Irgendwelche Vorschläge, wie man ähnliche Informationen wie memory.limit () unter Linux erhält?
Exl
5
Die Webseite existiert nicht mehr. Es fällt mir schwer, dem ohne die Bilder zu folgen. Ich sehe zum Beispiel keine Registerkarte "Verknüpfung". Können Sie dies auch verwenden, um den maximalen Speicher zu verringern?
Blakeoft
6
Was ist also mit Mac-Benutzern? Können wir etwas dagegen tun?
Alfredo Lozano
51

Verwenden Sie memory.limit(). Sie können die Standardeinstellung mit diesem Befehl erhöhen memory.limit(size=2500), wobei die Größe in MB angegeben ist. Sie müssen 64-Bit verwenden, um dies wirklich nutzen zu können.

Ein weiterer Vorschlag ist, wo immer möglich speichereffiziente Objekte zu verwenden: Verwenden Sie beispielsweise eine Matrix anstelle eines data.frame.

Shane
quelle
3
Ich verstehe nicht wirklich, wie das funktioniert. Ich bin auf dieses Problem mit dem Speicherlimit gestoßen und habe den Fehler "Gesamtzuweisung von 8182 MB erreicht" erhalten. Ich verwende 64-Bit mit 8 GB RAM, also schien ich SOL zu sein. Für Shiggles habe ich jedoch memory.limit (Größe = 50000) eingestellt ... UND ES hat funktioniert! Aber wieso???
Theforestecologist
2
Ich weiß, dass dies 7 Jahre alt ist, aber ich versuche, die Menge an RAM zu reduzieren, die von R verwendet werden kann, aber wenn ich versuche, den Wert zu reduzieren, erhalte ich diese Meldung (ich habe 12 GB RAM auf einem 64-Bit-Windows-Computer) . Warnmeldung: In memory.limit (4095): Speicherlimit kann nicht verringert werden: ignoriert
hellter
7

Microsoft Windows akzeptiert alle Speicheranforderungen von Prozessen, wenn dies möglich ist.

Es gibt keine Begrenzung für den Speicher, der für einen Prozess bereitgestellt werden kann, mit Ausnahme der Größe des virtuellen Speichers.

Die Größe des virtuellen Speichers beträgt 4 GB in 32-Bit-Systemen für alle Prozesse, unabhängig davon, wie viele Anwendungen Sie ausführen. Jeder Prozess kann in 32-Bit-Systemen bis zu 4 GB Speicher zuweisen.

In der Praxis weist Windows abhängig von den Prozessanforderungen und dem Mechanismus der Auslagerungsdatei automatisch einige Teile des zugewiesenen Speichers aus dem RAM oder der Auslagerungsdatei zu.

Eine weitere Einschränkung ist die Größe der Auslagerungsdatei. Wenn Sie eine kleine Auslagerungsdatei haben, können Sie keine großen Speicher zuweisen. Sie können die Größe der Auslagerungsdatei laut Microsoft erhöhen , um mehr Speicherplatz zu haben.

Isaac
quelle
5
  1. Kaufen Sie mehr RAM
  2. Wechseln Sie zu einem 64-Bit-Betriebssystem. Mit Punkt 1 kombinieren.
Dirk Eddelbuettel
quelle
23
Kaufen Sie mehr RAM (und wechseln Sie zu einem anderen Betriebssystem) ist keine allgemein geeignete Lösung.
Om-Nom-Nom
17
Sicher ist es, genau wie bei kleineren Problemen, die für das jeweilige Problem geeignet sind. Wenn Sie sich eine Lösung wünschen, erhalten Sie normalerweise auch keine.
Dirk Eddelbuettel
2

Um die R zugewiesene Speichermenge zu erhöhen, können Sie memory.limit verwenden

memory.limit(size = ...)

Oder

memory.size(max = ...)

Über die Argumente

  • Größe - numerisch. Wenn NA das Speicherlimit meldet, fordern Sie andernfalls ein neues Limit in MB an. Bei 32-Bit-R-Builds sind nur Werte von bis zu 4095 zulässig, siehe jedoch 'Details'.
  • max - logisch. Wenn TRUE, wird die maximale vom Betriebssystem erhaltene Speichermenge gemeldet, wenn FALSE die derzeit verwendete Speichermenge, wenn NA das Speicherlimit.
Tiago Martins Peres 李大仁
quelle