J'ai besoin d'une utilisation en mémoire en% de Vmstat, mais je ne comprends pas tout à fait partie des numéros relatifs à la mémoire affichée dans VMSTAT.
En particulier, donné une sortie comme celle-ci
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 139728 45396 199128 1236360 1 2 4 622 3 1 51 4 43 2 0
Quelle est la quantité de mémoire totale du système? Est-ce que c'est 'SWPD' + 'GRATUIT' + 'Buff' + 'cache', qui total à 1620612?
Quelle est la quantité libre de mémoire du système? Est-ce 45396, comme affichée dans la colonne "Free"?
Le problème est qu'ils ne montent pas ni même se rapprochent de ce que "haut" rapporté. La sortie du "haut" que j'ai prise à peu près au même moment que 'vmstat ci-dessus est:
[...]
Mem: 4059616k total, 3965504k used, 94112k free, 200020k buffers
[...]
Alors ... je suppose qu'il doit y avoir des chiffres cachés/des options dans 'vmstat' que je ne savais pas?
J'ai besoin d'utiliser 'vmstat' à cet effet et non aux autres commandes, car c'est ce que l'exigence énoncée.
Donc, idéalement, ce que je veux réaliser de 'vmstat' est le% de l'utilisation de la mémoire, comme dans:
<used_memory>/<total_memory> * 100%.
Merci!
Ce que vous cherchez est la sortie de "gratuit":
$ free
total used free shared buffers cached
Mem: 775556 759456 16100 0 22132 592484
-/+ buffers/cache: 144840 630716
Swap: 500344 21972 478372
Voici une tournée:
Ceci est une boîte avec 768 Mo de physique RAM et une partition de swap 500344KB.
759456KB est "utilisé" (deuxième colonne, rangée supérieure). De cette mémoire "utilisée", 23132KB sont des tampons (5ème colonne, une rangée supérieure) et 592484Kb (sixième colonne, rangée supérieure) correspond au cache, laissant 144840kb (2e colonne, 2e rangée) de mémoire physique utilisée par des processus actifs.
Lorsque vous considérez que la mémoire utilisée par les tampons et le cache pouvait être utilisée pour les processus, qui laisse 630716kb (3ème colonne, 2e rangée) de la mémoire physique.
La partition de swap, comme je l'ai dit, est 500344KB (1ère colonne, rangée inférieure). 21972KB (2e colonne, rangée inférieure) du fichier d'échange est utilisée, laissant 478372kb (3ème colonne, rangée inférieure) gratuite.
Donc, votre définition de la mémoire gratuite dépend de si vous comptez des tampons et du cache ou non, et si vous comptez échangez ou non.
Cela devrait vous donner assez pour continuer à calculer un pourcentage comme vous le voyez.
Voici la sortie de haut et gratuit:
$ top -n1 | grep "used," ; free
Mem: 775556k total, 751472k used, 24084k free, 20776k buffers
Swap: 500344k total, 21972k used, 478372k free, 586648k cached
total used free shared buffers cached
Mem: 775556 751344 24212 0 20776 586648
-/+ buffers/cache: 143920 631636
Swap: 500344 21972 478372
Vous pouvez voir la meilleure et la liberté d'accord (bien qu'avec une petite différence-- Ceci est une machine multi-utilisateur et l'utilisation de la mémoire du haut et des programmes gratuits sont reflétées là-bas).
Ajoutez un "-s" lorsque vous appelez VState et vous verrez beaucoup la même sortie, juste sous une forme différente:
$ vmstat -s ; free
775556 total memory
759920 used memory
674680 active memory
18440 inactive memory
15636 free memory
21892 buffer memory
594372 swap cache
500344 total swap
21972 used swap
478372 free swap
... output truncated ...
total used free shared buffers cached
Mem: 775556 759920 15636 0 21892 594372
-/+ buffers/cache: 143656 631900
Swap: 500344 21972 478372
Vous pouvez voir que vmstat montre tous les mêmes numéros que gratuits.
J'ai la même question avec vous et proposez une formule
vmstat -s | awk ' $0 ~ /total memory/ {total=$1 } $0 ~/free memory/ {free=$1} $0 ~/buffer memory/ {buffer=$1} $0 ~/cache/ {cache=$1} END{print (total-free-buffer-cache)/total*100}'
Je l'ai testé sur la version VMStat de PROCPS-NG 3.3.10 et VMSTAT de PROCPS-NG 3.3.9
Je vous recommanderais que vous lisiez à travers ces directives IBM Redbook "Linux Performances et Tuning Guidelines" ( http://www.redbooks.ibm.com/abstract/redp4285.html?open ). Il a des détails sur les données renvoyées par de nombreuses commandes et devraient vous aider.
J'ai généralement utilisé la commande "GRATUITE" sous Linux ou "CAT/PROC/MEMINFO".
Voici un [~ # ~ # ~] posix [~ # ~] Fonction de coquille qui arrondit le pourcentage souhaité vers le biais de l'entier le plus proche (à des fins de script, cela peut être plus utile, car [~ # # ~] posix [~ # ~] shell arithmétique comparer les tests fonctionnent uniquement avec des entiers):
# Vmstat (derived) Used Ram Percent
vurp() { vmstat -s | { read a b ; read c d ; echo $((100*$c/$a)) ; } ; }
vurp
Sortie (sur mon système):
12
Même chose, avec free
:
furp() { free | { read z; read a b c d; echo $((100*$c/$b)) ; } }