Ci-dessous, les différences entre deux révisions de la page.
analysedonnees:gestion_memoire_r [2020/03/14 15:52] eorn créée |
analysedonnees:gestion_memoire_r [2021/08/16 14:13] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ===== Mieux gérer la mémoire sur R ===== | ||
- | ==== Dans R : supprimer des objets ==== | ||
- | On peut utiliser ''rm(objet)'' pour suprimer ''objet'' de la mémoire de R. | ||
- | Ça ne libère pas tout de suite la mémoire, pas tant qu'il manquera réellement de la mémoire pour R. | ||
- | |||
- | On peut forcer cette suppression en lançant la commande ''gc()''. | ||
- | |||
- | |||
- | ==== Limiter la mémoire d'un processus (R/RStudio par exemple) ==== | ||
- | Pour ne pas qu'un processus (R ou RStudio par exemple) dépasse une limite qu'on aura fixée, on peut utiliser ''cgroup''. Voilà comment on procède : | ||
- | |||
- | 1. **Installer ''libcgroup''** (sur Archlinux c'est dans AUR) | ||
- | |||
- | 2. **Créer un ''cgroup''** | ||
- | <code> | ||
- | sudo cgcreate -t $USER:$USER -a $USER:$USER -g memory:myGroup | ||
- | </code> | ||
- | Ici, ''$USER'' c'est vous. | ||
- | |||
- | 3. **Configurer la limite de mémoire** | ||
- | Après la précédente commande, ''$USER'' a accès au dossier ''/sys/fs/cgroup/memory/myGroup''. | ||
- | On peut mettre une limite comme ceci (limiter à 500 Mo): | ||
- | <code> | ||
- | echo 500000000 > /sys/fs/cgroup/memory/myGroup/memory.limit_in_bytes | ||
- | </code> | ||
- | |||
- | 4. **Lancer la commande soumise à cette limite** | ||
- | <code> | ||
- | cgexec -g memory:myGroup rstudio | ||
- | </code | ||
- | |||
- | |||
- | Deux notes importantes : | ||
- | * une fois que la limite est atteinte, le processus utilisera la swap, ça peut ralentir pas mal. | ||
- | * je crois qu'il faut, à chaque redémarrage, relancer les commandes 2-4. |