165 votes

Augmenter (ou diminuer) la mémoire disponible pour les processus R

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

77voto

BobbyShaftoe Points 19925

De :

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

Les utilisateurs de Windows peuvent obtenir l'erreur suivante : R n'a plus de mémoire.

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

Vous pouvez également définir la quantité de mémoire disponible manuellement. Fermez R, puis cliquez avec le bouton droit de la souris 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". onglet "Raccourci". Recherchez le champ champ "Cible" et après la clôture guillemets fermants autour de l'emplacement de l'exécutable R ajoutez

--max-mem-size=500M

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

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

--max-vsize=500M

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

memory.limit()

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

8 votes

Notez que sous Windows 32 bits, R ne peut utiliser que 3 Go de RAM, quelle que soit la quantité installée. Il existe une version 64 bits de R pour Windows disponible auprès de REvolution Computing, qui fonctionne sous Windows 64 bits et peut utiliser toute la RAM disponible : revolution-computing.com/produits/revolution-enterprise.php

6 votes

Juste deux notes : (i) memory.limit() ne fonctionne que sous Windows, et (ii) la commande qui renvoie la bonne réponse est round(memory.limit(),2) -- du moins sur ma version de R (2.8.1).

38 votes

Une suggestion sur la façon d'obtenir des informations similaires à celles de memory.limit() sous linux ?

62voto

Shane Points 40885

Utilisez memory.limit() . Vous pouvez augmenter la valeur par défaut en utilisant cette commande, memory.limit(size=2500) où la taille est exprimée en Mo. Vous devez utiliser l'option 64 bits pour pouvoir en profiter pleinement.

Une autre suggestion est d'utiliser des objets économes en mémoire chaque fois que cela est possible : par exemple, utilisez une matrice au lieu d'un data.frame.

3 votes

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 "Reached total allocation of 8182Mb". J'utilise un système 64 bits avec 8 Go de mémoire vive, ce qui semble être une solution. Cependant, pour me faire plaisir, j'ai défini memory.limit(size=50000)... et ça a marché ! Mais pourquoi ?

2 votes

Je sais que cela date de 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, j'obtiens ce message (j'ai 12 Go de RAM sur une machine Windows 64 bits). Message d'avertissement : In memory.limit(4095) : cannot decrease memory limit : ignored

18voto

ali kasapoglu Points 1

Pour linux/unix, je peux suggérer unix paquet.

Pour augmenter la limite de mémoire dans linux :

install.packages("unix") 
library(unix)
rlimit_as(1e12)  #increases to ~12GB

Vous pouvez également vérifier la mémoire avec ceci :

rlimit_all()

pour des informations détaillées : https://rdrr.io/cran/unix/man/rlimit.html

Vous pouvez également trouver plus d'informations ici : limiter l'utilisation de la mémoire dans R sous linux

10voto

Isaac Points 854

Microsoft Windows accepte toute demande de mémoire de la part des processus si elle est réalisable.

Il n'y a pas de limite à la mémoire qui peut être fournie à un processus, sauf 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 de pagination en fonction des demandes des processus et du mécanisme du fichier de pagination.

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

6voto

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

memory.limit(size = ...)

Ou

memory.size(max = ...)

A propos des arguments

  • taille - numérique. Si NA rapporte la limite de mémoire, sinon demande une nouvelle limite, en Mb. Seules les valeurs allant jusqu'à 4095 sont autorisées sur les versions 32 bits de R, mais voir 'Détails'.
  • max - logique. Si VRAI, la quantité maximale de mémoire obtenue du système d'exploitation est signalée, si FAUX, la quantité actuellement utilisée, si NA, la limite de mémoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X