Necesito obtener un uso de memoria en% de vmstat, pero no entiendo algunos de los números relacionados con la memoria que se muestra en vmstat.
En particular, dada una salida como esta
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
¿Cuál es la cantidad de memoria total del sistema? ¿Es 'swpd' + 'free' + 'buff' + 'cache', que suman un total de 1620612?
¿Cuál es la cantidad de memoria libre del sistema? ¿Es 45396, como se muestra en la columna 'libre'?
El problema es que no cuadran ni se parecen a lo que informaron los "principales". La salida de 'top' que tomé al mismo tiempo que 'vmstat's de arriba es:
[...]
Mem: 4059616k total, 3965504k used, 94112k free, 200020k buffers
[...]
Entonces ... ¿Asumo que debe haber números / opciones ocultos en 'vmstat' que no conocía?
Necesito usar 'vmstat' para este propósito y no otros comandos, ya que este es el requisito establecido.
Idealmente, lo que quiero lograr con 'vmstat' es el% de uso de memoria, como en:
<used_memory>/<total_memory> * 100%.
¡Gracias!
Respuestas:
Lo que estás buscando es la salida de "gratis":
Aquí hay un recorrido:
Esta es una caja con 768 MB de RAM física y una partición de intercambio de 500344 KB.
759456 KB se "usa" (segunda columna, fila superior). De esta memoria "usada", 23132KB son memorias intermedias (5ta columna, fila superior) y 592484KB (sexta columna, fila superior) es caché, dejando 144840KB (2da columna, 2da fila) de memoria física que utilizan los procesos activos.
Cuando considera que la memoria utilizada por las memorias intermedias y la memoria caché podría utilizarse para los procesos, eso deja 630716 KB (3ª columna, 2ª fila) de memoria física libre.
La partición de intercambio, como dije, es 500344KB (primera columna, fila inferior). 21972 KB (segunda columna, fila inferior) del archivo de intercambio está en uso, dejando 478372 KB (tercera columna, fila inferior) libre.
Por lo tanto, su definición de% de memoria libre depende de si está contando buffers y caché o no, y si está contando swap o no.
Eso debería darte lo suficiente para seguir calculando un porcentaje como mejor te parezca.
Aquí está la salida de top y gratis:
Puede ver cómo están de acuerdo la parte superior y la libre (aunque con una pequeña diferencia: esta es una máquina multiusuario y el uso de la memoria de la parte superior y los programas gratuitos se reflejan allí).
Agregue un "-s" cuando llame a vmstate, y verá la misma salida, solo que en una forma diferente:
Puede ver que vmstat muestra todos los mismos números que gratis.
fuente
Tengo la misma pregunta contigo y se me ocurre una fórmula
Lo he probado en la versión vmstat de procps-ng 3.3.10 y vmstat de procps-ng 3.3.9
fuente
Le recomendaría que lea estas "Directrices de ajuste y rendimiento de Linux" de IBM Redbook ( http://www.redbooks.ibm.com/abstracts/redp4285.html?Open ). Tiene detalles sobre los datos devueltos por numerosos comandos y debería ayudarlo.
Normalmente he usado el comando "gratis" en Linux o "cat / proc / meminfo".
fuente
Aquí hay una función de shell POSIX que redondea el porcentaje deseado al entero más cercano (para propósitos de script esto puede ser más útil, ya que las pruebas de comparación aritmética de shell POSIX solo funcionan con enteros):
Salida (en mi sistema):
Lo mismo, con
free
:fuente