Que signifient les différents compteurs de mémoire dans FreeBSD?

20

haut me dit:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free

Munin le montre un peu plus clairement:

rtr1 utilisation annuelle de la mémoire

Comme vous pouvez le voir, le serveur a environ 8 Go de RAM. Je me demande si je peux entasser cette bête dans un serveur 2 Go plus modeste . Maintenant, je sais ce que signifient actifs et tampons, je pense. Mais je suis vraiment préoccupé par les taches de mémoire "câblées" et "inactives". Pour autant que je sache, ceux-ci ne correspondent à aucun processus existant.

Notez comment la ligne verte "active" a augmenté en décembre: c'est à ce moment que nous avons commencé à utiliser un démon BGP sur ce routeur. Je ne comprends pas exactement ce qui s'est passé en avril et mai, mais je me souviens avoir fait une mise à niveau du système et être passé à pkgng à cette époque.

Voici le routeur de rechange pour le premier, avec moins de RAM (4 Go):

rtr0 utilisation annuelle de la mémoire

Il semble que celui-ci fonctionne parfaitement avec la moitié de la RAM et laisse encore environ 2 Go de libre, ce qui m'amène à croire que je pourrais passer à une boîte de 2 Go pour ce serveur, réduisant les coûts et la maintenance ...

Aucune suggestion? Que signifient les différents compteurs de mémoire affichés en haut? Plus précisément, qu'est-ce que:

  • actif
  • Inactif
  • Cache
  • Tampons
  • Filaire
  • Gratuit

...Vraiment méchant? J'ai trouvé quelques articles expliquant des morceaux du sous-système VM et je me souviens avoir eu un "ah-ah!" moment de comprendre tout cela il y a environ 12 ans, mais j'ai oublié. :) Même le fidèle manuel FreeBSD n'a pas répondu à ma question ...

Puis-je rétrograder à 2 Go?

anarcat
la source
Voici la version Linux de cette question (expliquant la freecommande de procps ): linux - utilisation réelle de la mémoire
Adam Katz

Réponses:

25
  • Active: Mémoire actuellement utilisée par un processus
  • Inactive: Mémoire libérée mais toujours mise en cache car elle peut être réutilisée. Si davantage de Freemémoire est requise, cette mémoire peut être effacée et devenir libre. Cette mémoire n'est pas effacée avant qu'elle ne soit nécessaire, car «la mémoire libre est de la mémoire gaspillée», il ne coûte rien de conserver les anciennes données au cas où elles seraient à nouveau nécessaires.
  • Wired: Mémoire utilisée par le noyau. Cette mémoire ne peut pas être échangée
  • Cache: La mémoire utilisée pour mettre en cache les données, peut être libérée immédiatement si nécessaire
  • Buffers: Cache disque
  • Free: Mémoire entièrement gratuite et prête à l'emploi. Inactive, CacheEt Bufferspeut devenir libre si elles sont nettoyées.

Donc, vous pouvez simplement ajouter Inactiveà votre Freecompte et le considérer comme inutilisé. Wiredest la mémoire utilisée par le noyau, qui inclut la pile de mise en réseau. fonctionnementnetstat -m vous donnera un résumé de l'utilisation de la mémoire par la pile réseau.

Sur la base de vos graphiques, à part le saut de wiredmémoire inquiétant début mars, oui, vous devriez pouvoir exécuter cette charge de travail sur 2 Go de RAM. Si vous le faites, envisagez d'exécuter i386 au lieu d'amd64, car chaque allocation de mémoire prendra moins d'espace, car les pointeurs seront de 32 bits au lieu de 64 bits.

Allan Jude
la source
1
Mémoire «inactive» «Ne peut pas être réallouée à d'autres processus», elle ne doit donc pas être considérée comme «inutilisée». Voir wiki.freebsd.org/Memory
humbads
1
Le compteur «inactif» a été divisé en 2 éléments distincts dans le nouveau FreeBSD. «Inactif» et «Blanchisserie» (mémoire qui doit encore être vidée pour être échangée ou disque avant de pouvoir être libérée). Explication supplémentaire ici: lists.freebsd.org/pipermail/freebsd-arch/2016-November/…
Allan Jude