Suivi de l'utilisation de la memory Linux lorsque vous ne vous présentez pas dans le cache

Avant d'get vos fourches, j'ai des problèmes pour savoir où la memory va dans le système de caching sous Linux. J'ai vu http://www.linuxatemyram.com/ et https://stackoverflow.com/questions/4802481/how-to-see-top-processes-by-actual-memory-usage et correctement déterminer l'utilisation de la memory dans Linux, mais en utilisant ces exemples, les numbers ne correspondent pas vraiment avec les numbers que je vois sur mon système.

Pour ce système, je comprends qu'il est probablement "mis en cache", ou utilisé par les programmes, mais les numbers ne sont même pas près de m'additionner.

En haut, je vois.

top - 09:04:09 up 19 days, 20:38, 2 users, load average: 0.00, 0.10, 0.11 Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 65974296k total, 43507804k used, 22466492k free, 305336k buffers Swap: 7548924k total, 0k used, 7548924k free, 1480836k cached 

Je comprends, 43 Go de bélier "utilisé" n'est pas vraiment vrai, probablement la majeure partie est probablement caching. Alors, creusant dedans j'ai couru:

 $ free -m total used free shared buffers cached Mem: 64428 38845 25582 0 298 1445 -/+ buffers/cache: 37101 27326 Swap: 7371 0 7371 

Donc, cela montre que 37 Go de celui-ci est effectivement utilisé et seulement 1445 Mo est mis en cache (c'est là que je m'attendais à voir 1445 être quelque chose comme 20000). Les sites Web que j'ai liés ci-dessus montrent que la colonne "en cache" est généralement assez haute. Alors creusant plus loin, je suis allé et a fait ce qui suit pour vérifier les applications qui utilisaient de la memory.

  sudo smem -t PID User Command Swap USS PSS RSS 9468 21475 root python /usr/bin/smem -t 0 6212 6234 6984 2431 root /opt/OV/lbin/perf/coda 0 7156 8060 12068 2213 root /opt/perf/bin/perfd 0 19056 19485 22032 20849 root /opt/shiny-server/ext/node/ 0 77244 77321 78616 21325 atpa /usr/lib64/R/bin/exec/R --n 0 3729836 3733774 3739520 21287 atpa /usr/lib64/R/bin/exec/R --n 0 4060136 4064074 4069820 ------------------------------------------------------------------------------- 63 11 0 7947984 7970344 8054032 

Donc, deux applications de R utilisent environ 8 Go de memory.

Les autres articles que j'ai liés ci-dessus montrent que Linux «réservait» la memory et la gardait dans le cache (par exemple, le cache -m affiché était de grande valeur sur la ligne «Mem:»), alors que dans mon cas il semblait être réellement utilisé mais aucune application ne semble réellement rapporter l'utilisation de la memory et je n'arrive pas à find où Linux utilise (mettre en cache / réserver?) la memory.

Où va cette memory? Je suppose que Linux l'utilise, mais je ne peux pas déterminer où il est utilisé.

Modifier:

 cat /proc/meminfo MemTotal: 65974296 kB MemFree: 24191624 kB Buffers: 305320 kB Cached: 1480760 kB SwapCached: 0 kB Active: 7769776 kB Inactive: 215532 kB Active(anon): 6199392 kB Inactive(anon): 476 kB Active(file): 1570384 kB Inactive(file): 215056 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 7548924 kB SwapFree: 7548924 kB Dirty: 116 kB Writeback: 0 kB AnonPages: 6172696 kB Mapped: 47400 kB Shmem: 652 kB Slab: 255468 kB SReclaimable: 225620 kB SUnreclaim: 29848 kB KernelStack: 1736 kB PageTables: 18780 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 40536072 kB Committed_AS: 6455352 kB VmallocTotal: 34359738367 kB VmallocUsed: 247288 kB VmallocChunk: 34359487760 kB HardwareCorrupted: 0 kB AnonHugePages: 2586624 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 10240 kB DirectMap2M: 67098624 kB 

Je pense que j'ai trouvé ma question …

Mon problème semble avoir été le système de memory ballooning de VMware. Fondamentalement, ceci est un moyen pour le système hôte d'appliquer une pression de memory au operating system invité, consommant l'allocation de memory des invités lorsque d'autres hôtes commencent à utiliser une quantité importante de memory.

http://www.vfrank.org/2013/09/18/understanding-vmware-ballooning/

Si vous utilisez VMware, exécutez la command

 vmware-toolbox-cmd stat balloon 

Cela montrera la quantité de memory gonflée.

Pour moi

 #:vmware-toolbox-cmd stat balloon 32425 MB 

Autres sources: https://serverfault.com/questions/660080/detect-memory-ballooning-from-within-the-affected-vm

Désactiver la memory gonflée pour valider le problème

Mémoire Unballooning: https://serverfault.com/questions/528295/unballooning-ram-thats-been-ballooned-by-vmware