Latinoamérica
de.novatoanovato@gmail.com

Comando -free-

Comando -free-

free

Es un comando que puede en GNU/Linux resultarnos muy útil a la hora de entender el consumo de nuestra memoria, dado a que muestra la cantidad total de memoria física y de intercambio swap (en caso de que tengamos creada la memoria swap), cuanto de ella tenemos libre y usada por el sistema sistema e incluso el buffers y cachés utilizados por el kernel.

Manual -free-

Para desarrollar este articulo haremos uso de su manual. Para llamar esta documentación que se encuentra disponible en nuestro sistemas ejecutamos la linea man free correspondiente a la sintaxis del comando man y nos imprimirá en pantalla lo siguiente…

 

Sintaxis

El comando free se corresponde con la siguiente sintaxis:

free [opciones] [parámetros]

Interfaz del comando -free-

La información que recopila es obtenida analizando el directorio /proc/meminfo, siendo /proc designado según el estándar de jerarquías FHS como el directorio donde se contiene información de los procesos y aplicaciones que se están ejecutando. Free, nos devuelve esta información de forma ordenada y amigable para quien la solicita.

Para ello ejecutamos free

La primera fila se corresponde con los datos recopilados sobre la memoria RAM y en la segunda sobre la memoria Swap en caso de que contemos con ella…

Y en donde las columnas nos indican:

  • total Indica el total de la memoria instalada y asignada a swap respectivamente.
  • used Indica el total de la memoria que esta en uso.
  • free Indica el total de la memoria que no esta siendo utilizada.
  • shared Indica el total de memoria utilizada (en su mayoría) por tmpfs.
  • buff/cache Suma de la memoria utilizada por el buffer y la cache.
  • available Estimación de cuánta memoria está disponible para iniciar nuevas aplicaciones, sin intercambio.

¿Qué es y cuál es la diferencia entre la RAM usada para Buffer y para Cache?

El buffer es una ubicación temporaria para una aplicación particular. La información que se aloja ahí adentro es solamente para uso de esa aplicación. Cuando la aplicación o la tarea desparece, libera ese espacio.
La cache aloja frecuentemente datos de cualquier aplicación, simplemente para poder acceder más rápido a ella.

La diferencia entre Buffer y Cache es que en la primera se accede solo una vez, mientras que en la segunda puede hacerse las veces que se requiera.

Opciones del comando -free-

Esta herramienta CLI posee en su sintaxis una serie de opciones y parámetros que nos permiten hacer peticiones un tanto mas especificas, analizaremos a continuación cada caso.

Por tamaño de espacio de memoria

Por defecto, free nos imprime los espacio de memoria ocupados o libres en kibi-bytes. Pero ¿Qué es in Kibi-bytes?

Unidades de información

Partiendo de la unidad mínima de información, el bit (1 ó 0, Verdadero ó Falso, On – Off), nos encontramos con el byte u octeto, conjunto de 8 bits, que definiremos como la unidad básica de información.

Todas las demás unidades que nos vayamos encontrando será múltiplos del byte y no del bit como comúnmente se cree. Es un error usual confundirlos: el byte se denota con una B (b mayúscula) y el bit con una b (b minúscula). El término bit proviene de los vocablos binary digit.

En nuestra vida cotidiana el byte es una unidad demasiado pequeña, cualquier archivo constará con miles o millones de bytes, por lo que usaremos unidades mayores que nos permiten manejar más fácilmente las dimensiones cotidianas de información.

Sistema Internacional de Medidas (SI)

Según el S.I. tenemos el kilobyte, (kB) que son 1000 bytes, el megabyte (MB) que son 1.000.000 debytes, o sea 1.000 kB, y el gigabyte que son 1000.000.000 bytes, o sea 1000 MB. También es usado el Terabyte (TB), 1.000.000.000.000 bytes, es decir, 1.000 GB.Fijémonos en que cada unidad resulta de multiplicar por 1.000 la unidad anterior:

1.000 B son 1kB,1.000 kB son 1MB, 1.000 MB son 1 GB, y 1.000 GB son 1TB.

Comisión Electrotécnica Internacional (CEI)

Los prefijos binarios fijados por la Comisión Electrotécnica Internacional en 1998, que son cantidades muy parecidas pero un poco diferentes. Los prefijos de la CEI son el kibi (ki), el mebi (Mi), el gibi (Gi) y el Tibi (Ti) y la diferencia entre ellos no es de 1.000 como en el SI, sino de 1.024.

Así, 1.024 B son 1kiB, 1.024kiB son 1MiB, 1.024 MiB son 1GiB y 1.024 MiB son 1TiB. Ese 1.024 es el resultado de 2 elevado a la décima potencia (2^10).

Como se puede ver el lío y la confusión pueden ser tremendos si no tenemos bien claros el uso de una u otra. Para los dispositivos de almacenamiento y el lenguaje cotidiano usaremos siempre las unidades del SI, ya que está basado en el sistema de numeración decimal. Sin embargo, el ordenador y los sistemas informáticos o de transmisión de información en general usarán el sistema de numeración del CEI, ya que el sistema de numeración usado es el binario, y los valores de los prefijos de la CEI son potencias de 2.

Por ejemplo: en un disco duro de 500 GB, el ordenador nos hablará de 465 GiB. Un CD-ROM de 700MB tiene 652 MiB y un DVD de 4,7 GB tiene 4,37 GiB.

Según Sistema internacional de Medidas (SI)

En Kilo-Bytes

free --kilo

En Mega-Bytes

free --mega

En Giga-Bytes

free --giga

En Tera-Bytes

free --tera

En Peta-Bytes

free --peta

Nota:

Para las opciones de --tera y --peta los espacios en las tablas permanecerán en cero, debido a que son unidades de información muy grandes como para representar las cantidades disponibles.

Según la Comisión Electrotécnica Internacional (CEI)

En Bytes

free -b ó free --bytes

En Kibi-bytes

free -k ó free --kibi

En Mebi-Bytes

free -m ó free --mebi

En Gibi.Bytes

free -g ó free --gibi

En Tebi-Bytes

free --tebi

En Pebi-Bytes

free --pebi

Nota:

Para las opciones de --tebi y --pebi los espacios en las tablas permanecerán en cero, debido a que son unidades de información muy grandes como para representar las cantidades disponibles.

Selecciona unidad automáticamente

El comando free cuenta con una opción que nos muestra en todos los campos de salida automáticamente una unidad, haciendo que esta salida sea cómoda de leer.

free -h ó free --human

Cuyas unidades son las fijadas por la Comisión Electrotécnica Internacional (CEI), siendo:

  • B = bytes
  • Ki = kibibyte
  • Mi = mebibyte
  • Gi = gibibyte
  • Te = tebibyte
  • Pe = pebibyte

Imprimir buffers y cache por separado

Cuando realizamos una petición con free, este nos devuelve la siempre la columna buff/cache, que es el total de memoria ocupada por ambos, pero contamos con la opción de poder ver ambos por separado. Para ello, haremos uso de la opción -w que es la que nos permite llevar a cabo esta tarea.

free -w

De esta forma podremos ver por separado cuanto espacio de nuestra memoria esta ocupando el buffer y cuanto la cache. Para entender mejor las unidades de salida, en comparación, sume la opción -h.

Imprimir resultados “n” veces

Otra de las opciones que nos ofrece el comando free es la de refrescar -n- cantidad de veces el estado de nuestra memoria. Para esto contamos con dos métodos

Método completo

free --count=n

Donde free --count indica la acción de imprimir el estado de la memoria dando la posibilidad de indicar cuantas veces y n, la cantidad consecutiva. Para este ejemplo vamos a imprimir 3 veces, siendo free --count=3

Método abreviado

free -cn

Donde free -c indica la acción de imprimir el estado de la memoria dando la posibilidad de indicar cuantas veces y n, la cantidad consecutiva. Para este ejemplo vamos a imprimir 4 veces, siendo free -c4

Imprimir resultados cada “n” segundo

Contamos dentro de la herramienta free, una opción que nos permite imprimir la tabla de estado de memoria cada n cantidad de segundos consecutiva e indefinidamente. Puedes especificar cualquier entero o flotante. La opción que nos permite hacer esta petición es la -sn, donde n es el tiempo de retardo. Veamos:

free -s3

En este caso el tiempo de retardo sera cada 3 segundos, si ejecutamos, se nos imprimirá continuamente e indefinidamente según el tiempo indicado el estado de la memoria. Ejecutemos…

…y así seguirá, cada 3 segundos, hasta que terminemos el proceso (ctrl+c).

Resumen total de memoria

Muestra un resumen del totales de memoria física y swap. Total de memoria, total de memoria usada y total de memoria disponible o libre. La opción que nos permite hacer esta petición es la -t, y se agrega como fila al final de la tabla. Ejecutemos…

free -t

De esta forma podrás apreciar la suma de los totales según corresponda de ambas memorias (swap y ram) en caso de que dispongas de swap.

Procesos de memoria del directorio “proc”

No quería cerrar este articulo si mostrar el contenido del directorio /proc/meminfo, que es el utilizado por el comando free para obtener la informacion que nos brinda según las distintas peticiones.

Para ello, haremos uso del comando cat donde ejecutamos…

cat /proc/meminfo

Espero sea de utilidad.
Saludos, Cristian.

 

Un comentario

  1. juliuco nikelado dice:

    enhorabuena

Deja un comentario

Tu dirección de correo electrónico no será publicada.