1 votes

Pourquoi la mémoire physique disponible semble-t-elle augmenter après le démarrage ?

Considérez ce qui suit :

$ dmesg  | grep 'Memory:'                                                                                                                                              
[    0.000000] Memory: 8009456K/8272776K available (8474K kernel code, 1293K rwdata, 3984K rodata, 1488K init, 1316K bss, 263320K reserved, 0K cma-reserved)

En fait, cela suggère qu'au démarrage, le système dispose de 8009456K disponibles pour les tâches (sans les trucs réservés). Cependant, après le démarrage free y vmstat signaler quelque chose de très particulier

$ free -k ; vmstat -s | head -n 1                                                                                                                                      
              total        used        free      shared  buff/cache   available
Mem:        8059880     2774996     2667600      394196     2617284     4529964
Swap:       1048572         412     1048160
      8059880 K total memory

Étrangement, un système qui a déjà démarré a plus de mémoire disponible, ce qui semble logiquement l'opposé de ce à quoi on pourrait s'attendre - au moment du démarrage, il devrait y avoir moins de processus en cours d'exécution, donc plus de mémoire totale utilisable devrait être disponible. Comment cela peut-il s'expliquer ?

4voto

Doug Smythies Points 12803

Pendant le démarrage, et à un stade ultérieur à celui de votre ligne dmseg extraite, une partie de la mémoire est généralement libérée. Prenons un exemple sur mon ordinateur :

Tout d'abord, nous modifions un peu la commande d'extraction dmesg (éditée) :

$ dmesg  | grep -i 'Memory:'
 ...[snip]...
[    0.000000] Memory: 15829128K/16472972K available (8480K kernel code, 1294K rwdata, 3984K rodata, 1492K init, 1316K bss, 643844K reserved, 0K cma-reserved)
[    0.009844] Freeing SMP alternatives memory: 32K
[    0.868465] Freeing initrd memory: 37044K
[    2.621648] Freeing unused kernel memory: 1492K
[    2.624095] Freeing unused kernel memory: 1748K
[    2.625334] Freeing unused kernel memory: 112K

Remarquez la mémoire libérée ci-dessus, après la ligne de résumé. En les additionnant, j'obtiens que je devrais avoir 15869556 au total. Maintenant vérifions, en utilisant la même commande :

$ free -k ; vmstat -s | head -n 1
              total        used        free      shared  buff/cache   available
Mem:       15869556      113352    15461820        9792      294384    15454760
Swap:      16472060           0    16472060
     15869556 K total memory

Remarquez que le total attendu est exactement égal au total réel.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X