Augmentation (ou diminution) de la mémoire disponible pour les processus R

123

Je souhaite augmenter (ou diminuer) la quantité de mémoire disponible pour R. Quelles sont les méthodes pour y parvenir?

Medriscoll
la source

Réponses:

64

De:

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

Les utilisateurs de Windows peuvent obtenir l'erreur que R a manqué de mémoire.

Si R est déjà installé et que vous installez par la suite plus de RAM, vous devrez peut-être réinstaller R pour profiter de la capacité supplémentaire.

Vous pouvez également définir manuellement la quantité de mémoire disponible. Fermez R, puis faites un clic droit sur l'icône de votre programme R (l'icône sur votre bureau ou dans votre répertoire de programmes). Sélectionnez `` Propriétés '', puis sélectionnez l'onglet `` Raccourci ''. Recherchez le champ `` Cible '' et après les guillemets fermants autour de l'emplacement de l'exécutable R, ajoutez

--max-mem-taille = 500M

comme indiqué dans la figure ci-dessous. Vous pouvez augmenter cette valeur jusqu'à 2 Go ou la quantité maximale de RAM physique que vous avez installée.

Si vous obtenez l'erreur que R ne peut pas allouer un vecteur de longueur x, fermez R et ajoutez la ligne suivante dans le champ `` Cible '':

--max-vsize = 500 M

ou selon le cas. Vous pouvez toujours vérifier la quantité de mémoire disponible à R en tapant à l'invite R

memory.limit()

ce qui vous donne la quantité de mémoire disponible en Mo. Dans les versions précédentes de R vous avez besoin d'utiliser: round(memory.limit()/2^20, 2).

BobbyShaftoe
la source
7
Notez que sur Windows 32 bits, R ne peut utiliser que jusqu'à 3 Go de RAM, quelle que soit la quantité que vous avez installée. Il existe une version 64 bits de R pour Windows disponible auprès de REvolution Computing, qui fonctionne sur Windows 64 bits et peut utiliser toute la RAM disponible: revolution-computing.com/products/revolution-enterprise.php
David Smith
6
Juste deux notes: (i) memory.limit () ne fonctionne que sous Windows, et (ii) la commande qui retournera la bonne réponse est round (memory.limit (), 2) - au moins sur ma version de R ( 2.8.1).
medriscoll
31
Une suggestion sur la façon d'obtenir des informations similaires à celles de memory.limit () fonctionnant sous Linux?
exl
5
La page Web n'existe plus. C'est difficile pour moi de suivre ça sans les images. Je ne vois pas d'onglet "Raccourci" par exemple. En outre, pouvez-vous l'utiliser pour réduire la mémoire maximale?
blakeoft
6
Alors, qu'en est-il des utilisateurs de Mac? Pouvons-nous faire quelque chose?
Alfredo Lozano
51

Utilisez memory.limit(). Vous pouvez augmenter la valeur par défaut à l'aide de cette commande,, memory.limit(size=2500)où la taille est en Mo. Vous devez utiliser 64 bits pour en tirer un réel avantage.

Une autre suggestion est d'utiliser autant que possible des objets à mémoire efficace: par exemple, utilisez une matrice au lieu d'un data.frame.

Shane
la source
3
Je ne comprends pas vraiment comment cela fonctionne. J'ai rencontré ce problème de limite de mémoire et j'ai reçu l'erreur «Allocation totale atteinte de 8182 Mo». J'utilise 64 bits avec 8 Go de RAM, donc je semblait être SOL. Cependant, pour les shiggles, j'ai défini memory.limit (size = 50000) ... ET CELA A FONCTIONNÉ! Mais pourquoi???
theforestecologist
2
Je sais que cela a 7 ans, mais j'essaie de réduire la quantité de RAM qui peut être utilisée par R mais chaque fois que j'essaie de réduire la valeur, je reçois ce message (j'ai 12 Go de RAM sur une machine Windows 64 bits) . Message d'avertissement: In memory.limit (4095): impossible de diminuer la limite de mémoire: ignoré
hellter
7

Microsoft Windows accepte toute demande de mémoire des processus si cela peut être fait.

Il n'y a pas de limite pour la mémoire qui peut être fournie à un processus, à l'exception de la taille de la mémoire virtuelle.

La taille de la mémoire virtuelle est de 4 Go dans les systèmes 32 bits pour tous les processus, quel que soit le nombre d'applications que vous exécutez. Tous les processus peuvent allouer jusqu'à 4 Go de mémoire dans les systèmes 32 bits.

En pratique, Windows alloue automatiquement certaines parties de la mémoire allouée à partir de la RAM ou du fichier d'échange en fonction des demandes de processus et du mécanisme du fichier d'échange.

Mais une autre limite est la taille du fichier d'échange. Si vous avez un petit fichier d'échange, vous ne pouvez pas allouer de grandes mémoires. Vous pouvez augmenter la taille du fichier d'échange selon Microsoft pour avoir plus d'espace mémoire.

Isaac
la source
5
  1. Achetez plus de bélier
  2. Basculez vers un système d'exploitation 64 bits. Combinez avec le point 1.
Dirk Eddelbuettel
la source
23
Acheter plus de RAM (et passer à un autre système d'exploitation) n'est pas une solution générale appropriée.
om-nom-nom
17
Bien sûr, tout comme travailler sur des problèmes plus petits qui conviennent au problème en question. Souhaiter une solution ne vous en procure généralement pas non plus.
Dirk Eddelbuettel
2

Pour augmenter la quantité de mémoire allouée à R, vous pouvez utiliser memory.limit

memory.limit(size = ...)

Ou

memory.size(max = ...)

À propos des arguments

  • taille - numérique. Si NA signale la limite de mémoire, sinon demandez une nouvelle limite, en Mo. Seules les valeurs jusqu'à 4095 sont autorisées sur les versions 32 bits R, mais voir «Détails».
  • max - logique. Si TRUE, la quantité maximale de mémoire obtenue à partir du système d'exploitation est signalée, si FALSE la quantité actuellement utilisée, si NA la limite de mémoire.
Tiago Martins Peres 李大仁
la source