La dalle utilise 88 Go sur 128 Go disponibles. Qu'est-ce qui pourrait provoquer cela?

8

Nous exécutons un debian 2.6.26-2-amd64 x86_64 GNU / Linux sur un serveur avec 128 Go. Récemment, notre mémoire disponible est devenue plutôt faible. L'examen de / proc / meminfo a montré que la dalle utilisait 88 Go, ce qui est compté dans la mémoire utilisée bien sûr.

  1. Est-ce un problème? Je soupçonne que la mémoire sera libérée si nécessaire, mais je ne sais pas si cela pourrait avoir des effets secondaires indésirables.
  2. Pourquoi Slab aurait-il besoin de tant de mémoire? Y a-t-il une cause claire à cela?
  3. pouvons-nous éviter que cela se produise à l'avenir?
  4. Comment libérer cette mémoire?

Merci d'avance

> cat /proc/meminfo
MemTotal:     132304500 kB
MemFree:      26669388 kB
Buffers:        237504 kB
Cached:       11881136 kB
SwapCached:         48 kB
Active:        5244640 kB
Inactive:     11714308 kB
SwapTotal:     5751228 kB
SwapFree:      5750436 kB
Dirty:              24 kB
Writeback:           0 kB
AnonPages:     4840256 kB
Mapped:         163968 kB
Slab:         88314840 kB
SReclaimable: 88275644 kB
SUnreclaim:      39196 kB
PageTables:      80852 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
WritebackTmp:        0 kB
CommitLimit:  71903476 kB
Committed_AS:  6818332 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    505724 kB
VmallocChunk: 34359231963 kB
Joris Meys
la source

Réponses:

5

Êtes-vous absolument certain qu'il s'agit d'un problème réel: la RAM utilisée n'est pas la même chose que le RAM non disponible (voir par exemple cette question ServerFault sur free / buffers / cache ), le réflexe de vouloir avoir la mémoire répertoriée comme libre est souvent faux.

Slab n'est pas une chose spécifique, c'est l'un des allocateurs de mémoire dans le noyau, en particulier slab permet au noyau de gérer des objets qui ne sont pas de la taille d'une page (comme indiqué ailleurs / proc / slabinfo et slabtop devrait vous donner une indication de ce qu'il détient actuellement). Vous trouverez plus d'informations sur la dalle ici

Si vous voyez le SReclaimable sous Slab, il est d'avis que presque toute la mémoire allouée par slab peut être récupérée quand / si nécessaire. Donc, oui, la mémoire sera libérée si nécessaire. Les coûts accessoires de la récupération paient certains frais de tenue de livres différés en cycles CPU.

Je ne sais pas si la dalle à proprement parler a besoin de toute cette mémoire, elle conservera dans de nombreux cas des objets initialisés pour une utilisation ultérieure (enregistrement de l'initialisation), certains d'entre eux sont divers caches, la plupart sont probablement bénéfiques (c'est-à-dire les effets des caches de système de fichiers sont immenses).

Si vous souhaitez contrôler le comportement du vmm, consultez / proc / sys / vm , en particulier min_slab_ratio peut être intéressant. Vous pouvez également limiter les caches de slab individuels via / proc / slabinfo (voir l'article ibm developerworks pour plus de détails). Bien que, avant de commencer à activer le vmm et la dalle: déterminez ce que vous voulez réellement accomplir, et faites des recherches sur le vmm et comment il peut être réglé pour s'adapter à votre charge de travail. Il est tout à fait possible de briser votre système de manière subtile et spectaculaire en jouant avec les boutons de réglage vmm.

Kjetil Joergensen
la source
merci beaucoup pour la réponse en profondeur et les liens
Joris Meys
1
Le lien IBM developerworks ne fonctionne plus.
Ikke
11

Utilisez les informations de cache de dalle du noyau d'affichage slabtop:

slabtop

Voir aussi "vmstat -m":

vmstat  -m

et regardez / proc / slabinfo:

cat /proc/slabinfo

Déposer le cache dans la mémoire libre

sync; echo 3 > /proc/sys/vm/drop_caches
ooshro
la source
merci pour les commandes, elles facilitent en effet un peu la vie.
Joris Meys