Herramientas

Para ver el uso y análisis de la memoria el administrador dispone de algunas herramientas.

El rendimiento de la memoria virtual es muy importante ya que cuando vayamos a hacer uso de ella es porque al sistema se le esta requiriendo un esfuerzo mayor y no queremos que sea el cuello de botella. Por ello las herramientas nos deben dar las estadísticas de la utilización de la memoria.

Comando free

Para ver el estado de la memoria actual tenemos el comando free.

[pcm@sal]$ free -m
             total       used       free     shared    buffers     cached
Mem:           504        491         12          0         41        147
-/+ buffers/cache:        302        201
Swap:          329         51        277
[pcm@sal]$ 

La primera linea nos está dando como realmente se esta utilizando la memoria física, y la segunda cuanta memoria hay libre desde el punto de vista de las aplicaciones. La última linea contiene la utilización de la memoria swap.

En detalle, este sistema tiene 504Mb de memoria de los cuales están usados 491Mb y 12Mb libres. De los usados 302Mb por las aplicaciones, 41Mb de memoria compartida y 147Mb para buffers y caches. Como la memoria para buffers y cache es adaptable según las necesidades, tendríamos hasta 201Mb libres.

Muchas de las herramientas de administración nos dan también estos mismos valores de memoria como por ejemplo top o htop o desde webmin. Esta información se recoge del fichero /proc/meminfo del sistema de ficheros virtual del núcleo.

Comando vmstat

Nos da la misma información que free más algunos datos estadísticos sobre el uso de la memoria swap y entrada/salida con dispositivos de bloques.

Nos permite por parámetro lanzar la petición varias veces y cada cierto periodo de tiempo, así tendremos que poner vmstat 2 10 para que se ejecute 10 veces y muestre los datos cada dos segundos.

[pcm@sal]$ vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 0  0  66016 113748  19112 231988    0    0     2     3   38    23  1  1 98  0
 0  0  66016 113740  19112 231988    0    0     0     0  196   460  3  0 97  0
 1  0  66016 113844  19112 231988    0    0     0     0  193   427  5  1 94  0
 0  0  66016 113608  19112 232216    0    0   114     0  206   425  7  1 92  0
 0  0  66016 113524  19112 232248    0    0    16    12  206   422  6  1 93  0
 0  0  66016 113472  19112 232248    0    0     0     0  191   433  7  0 93  0
 0  0  66016 113472  19112 232252    0    0     2     0  190   384  5  1 94  0
 0  0  66016 113468  19112 232252    0    0     0     0  195   799  4  1 95  0
 2  0  66016 113468  19112 232252    0    0     0   192  227   727  8  1 91  0
 0  0  66016 113468  19112 232252    0    0     0     0  203   260  0  0 99  0
[pcm@sal]$ 

En cada linea nos va dando el estado de las variables. Serán tantas lineas como hayamos puesto en el segundo parámetro y van saliendo cada tantos segundo como hayamos puesto en el primero.

  • procs: Nos da los procesos preparados para correr en una cpu y los procesos durmiendo.

  • memory: Estado de la memoria. Los mismo datos que el comando free.

  • swap: Nos da las páginas intercambiadas por segundo entre la memoria física y la memoria virtual.

  • io: Bloques recibidos y enviados desde un dispositivo por segundo.

  • system: Interrupciones lanzadas y cambio de contexto por segundo.

  • cpu: Porcentajes de tiempos de cpu dedicados a sistema, a aplicaciones de usuario, sin hacer nada y tiempo dedicado a IO (Entrada/Salida).

Comando sar

Este comando permite realizar estadísticas de muchos más elementos, como red, cpu, dispositivos de bloques y memoria. Esta muy pensado para analizar el rendimiento de estos elementos. Para la memoria virtual dispone de muy diversas variables que nos pueden ayudar a ver donde puede haber un problema.

No vamos a entrar en detalle con todas las posibilidades de este comando.