web-dev-qa-db-fra.com

Combien RAM le noyau utilise-t-il?

Cette question est motivée par mon choc quand j'ai découvert que le noyau Mac OS X utilise 750 Mo de RAM .

J'utilise Linux depuis 20 ans et j'ai toujours "su" que le noyau RAM est éclipsée par X (est-ce vrai? Est-ce que cela a déjà été vrai?).

Donc, après quelques recherches sur Google, j'ai essayé slabtop qui m'a dit:

Active / Total Size (% used)       : 68112.73K / 72009.73K (94.6%)

Est-ce à dire que mon noyau utilise ~ 72 Mo de RAM maintenant?

(Étant donné que top signale le RSS de Xorg en 17M, le noyau éclipse X, et non l'inverse).

Quel est le noyau "normal" RAM utilisation (plage) pour un ordinateur portable?

Pourquoi MacOS utilise-t-il un ordre de grandeur plus RAM que Linux?

PS. Aucune réponse n'a répondu à la dernière question, veuillez donc consulter les questions connexes:

47
sds

Le noyau est un peu inapproprié. Le noyau Linux est composé de plusieurs processus/threads + les modules (lsmod) donc pour obtenir une image complète, vous aurez besoin de regarder la balle entière et pas seulement un seul composant.

Soit dit en passant, le mien montre slabtop:

 Active / Total Size (% used)       : 173428.30K / 204497.61K (84.8%)

La page de manuel de slabtop avait également ceci à dire:

L'en-tête statistique slabtop suit le nombre d'octets de dalles utilisées et non une mesure de la mémoire physique. Le champ 'Slab' du fichier/proc/meminfo suit les informations sur la mémoire physique de la dalle utilisée.

Suppression de caches

Laisser tomber mes caches comme @ derobertsuggéré dans les commentaires sous votre question fait pour moi ce qui suit:

$ Sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$

 Active / Total Size (% used)       : 61858.78K / 90524.77K (68.3%)

L'envoi d'un 3 fait ce qui suit: pagecache gratuit, dentiers et inodes. J'en discute plus dans cette Q&R U&L intitulée: Existe-t-il des moyens ou des outils pour vider le cache mémoire et le tampon? ". et les inodes.

Information additionnelle

  • Si vous êtes intéressé, j'ai trouvé cet article de blog qui traite de slabtop dans un peu plus de détails. Il s'intitule: commande Linux du jour: slabtop .
  • Le cache de dalle est discuté plus en détail ici sur Wikipedia, intitulé: allocation de dalle .

Alors, combien RAM mon noyau utilise-t-il?

Cette photo est un peu plus brumeuse pour moi, mais voici les choses que je "pense" que nous connaissons.

Dalle

Nous pouvons obtenir un instantané de l'utilisation de la dalle en utilisant cette technique. Essentiellement, nous pouvons extraire ces informations de /proc/meminfo.

$ grep Slab /proc/meminfo
Slab:             100728 kB

Modules

Nous pouvons également obtenir une valeur de taille pour les modules du noyau (on ne sait pas si c'est leur taille sur le disque ou dans la RAM) en tirant ces valeurs de /proc/modules:

$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758

Slabinfo

La plupart des détails sur SLAB sont accessibles dans cette structure de proc, /proc/slabinfo:

$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000      0      0    320   25    2 : tunables    0    0    0 : slabdata      0      0      0
Fuse_request         100    125    632   25    4 : tunables    0    0    0 : slabdata      5      5      0
Fuse_inode            21     21    768   21    4 : tunables    0    0    0 : slabdata      1      1      0

Dmesg

Lorsque votre système démarre, une ligne signale l'utilisation de la mémoire du noyau Linux juste après son chargement.

$ dmesg |grep Memory:
[    0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)

Références

40
slm

Que dis-tu de ça:

Active / Total Size (% used)       : 4709.24K / 5062.03K

C'est sur une toute petite machine fraîchement démarrée fonctionnant sans tête avec un noyau normal. Donc, cela ne nécessite pas beaucoup.

Comme l'indique Derobert, le noyau utilisera la mémoire disponible pour la mise en cache et c'est beaucoup de ce que vous voyez dans slabtop. En plus du cache de fichiers, cela concerne la mémoire partageable des processus de l'espace utilisateur qui n'est plus utilisée. Le noyau le laisse là jusqu'à ce que la même chose soit à nouveau requise, ou que quelque chose ait activement besoin de RAM, auquel cas il est oublié. Une analogie serait de prendre un livre sur une étagère et de le mettre ouvert pour lire sur une table: lorsque vous avez terminé de lire, vous pouvez laisser le livre ouvert sur la table au cas où vous auriez besoin de le relire.

8
goldilocks

Sur ce serveur de 512 Go RAM exécutant Solaris, le noyau utilise 25 Go:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    3210102             25078    5%
Anon                     15266226            119267   23%
Exec and libs               41457               323    0%
Page cache                3539331             27651    5%
Free (cachelist)         13799571            107809   21%
Free (freelist)          30093164            235102   46%

Total                    65949851            515233
Physical                 65927406            515057

Ce plus petit a plus de la moitié de son RAM utilisé par le noyau:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    2149699             16794   52%
Anon                       517016              4039   13%
Exec and libs               15420               120    0%
Page cache                  21840               170    1%
Free (cachelist)             8768                68    0%
Free (freelist)           1404862             10975   34%

Total                     4117605             32168
Physical                  4096002             32000

Rien à craindre, inutilisé RAM est gaspillé RAM de toute façon.

4
jlliagre