Linux mémoire de surcharge de détails
Je suis en train d'élaborer SW pour Linux embarqué et je souffre système se bloque parce que OOM Killer apparaît de temps à autre. Avant d'aller au-delà, je voudrais résoudre certains de confusion sur la façon dont le Noyau Linux allouer de la mémoire dynamique en supposant que /proc/sys/vm/overcommit_memory a 0 et /proc/sys/vm/min_free_kbytes a 712, et pas de swap.
Supposant Linux embarqué actuellement de la mémoire physique disponible est de 5 MO (5 MO de mémoire libre et il n'est pas utilisable en cache ou avec tampon mémoire disponible) si j'écris ce morceau de code:
.....
#define MEGABYTE 1024*1024
.....
.....
void *ptr = NULL;
ptr = (void *) malloc(6*MEGABYTE); //Preserving 6MB
if (!prt)
exit(1);
memset(ptr, 1, MEGABYTE);
.....
Je voudrais savoir si quand memset appel a été commise, le noyau va essayer d'allouer ~6MO ou ~1MO (ou min_free_kbytes plusieurs) dans la mémoire physique de l'espace.
Actuellement, il y a environ 9 MO dans mon périphérique intégré qui dispose de 32 mo de RAM. Je le vérifie en faisant
# echo 3 > /proc/sys/vm/drop_caches
# free
total used free shared buffers
Mem: 23732 14184 9548 0 220
Swap: 0 0 0
Total: 23732 14184 9548
Oublier dernier morceau de code en C, je voudrais savoir si ses possible que oom killer apparaît lorsque, par exemple, la mémoire libre est propos >6 MO.
Je veux savoir si le système est en dehors de la mémoire lorsque oom semble, donc je pense que j'ai deux options:
- Voir VmRSS entrées dans /proc/pid/statut de suspect processus.
- Set /proc/sys/vm/overcommit_memory = 2 et /proc/sys/vm/overcommit_memory = 75 et voir si il y est un processus nécessitant plus de mémoire physique disponible.
Mais quand memset(ptr,1,MO) est effectué le processus d'écriture de la mémoire, n'est-ce pas?
Oui, et alors le système d'exploitation a fait à allouer.
Mais ma question, si il allouer ~6MO ou ~1MO?
Il se réserve de 6MO, puis alloue 1 MO.
OriginalL'auteur MABC | 2013-10-02
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez lire cet document. Est vous propose trois petits programmes en C que vous pouvez utiliser pour comprendre ce qui se passe avec les différentes valeurs possibles de
/proc/sys/vm/overcommit_memory
.OriginalL'auteur Ottavio Campana