top
La página de manual de no describe los campos, pero free
hace:
amortiguadores
Memoria utilizada por los búferes del kernel (Buffers
en /proc/meminfo
)
caché
Memoria utilizada por la caché de página y losas (Cached
y SReclaimable
en /proc/meminfo
)
mejora/caché
Suma de búferes y caché
disponible
Estimación de cuánta memoria está disponible para iniciar nuevas aplicaciones, sin intercambio. A diferencia de los datos proporcionados por el caché o los campos libres, este campo tiene en cuenta el caché de página y también que no todas las losas de memoria reclamables se reclamarán debido a los elementos que están en uso (MemAvailable
en /proc/meminfo
, disponible en kernels 3.14, emulado en kernels2.6.27+, por lo demás igual que gratis)
Básicamente, "buff/cache" cuenta la memoria utilizada para los datos que están en el disco o que deberían terminar allí pronto y, como resultado, es potencialmente utilizable (la memoria correspondiente puede estar disponible de inmediato, si no se ha modificado desde que se leyó). , o dado el tiempo suficiente, si lo ha tenido); "disponible" mide la cantidad de memoria que se puede asignar y usar sin causar más intercambios (consulte ¿Cómo puedo obtener la cantidad de memoria disponible de forma portátil entre distribuciones? para obtener más detalles al respecto).
Solo para aclarar un poco, buffers se refiere a los datos que se están escribiendo -- esa memoria no se puede reclamar hasta que se complete la escritura.
Caché se refiere a datos que han sido leídos -- se conserva en caso de que sea necesario volver a leerlo, pero se puede reclamar de inmediato ya que siempre se puede volver a leer desde el disco.
La fuente canónica de esta información es /usr/src/linux/Documentación/filesystems/proc.txt
Búfers :El almacenamiento relativamente temporal para bloques de disco sin formato no debería ser tremendamente grande (20 MB aproximadamente) Caché :caché en memoria para archivos leídos desde el disco (la caché de página). No incluye SwapCached.
También puede encontrar más detalles aquí.
La caché de página de Linux ("en caché :" de meminfo ) es el mayor consumidor individual de RAM en la mayoría de los sistemas. Cada vez que realiza una lectura () desde un archivo en el disco, esos datos se leen en la memoria y van a la memoria caché (1.).
La memoria caché del búfer ("Búferes :" en meminfo) es un pariente más cercano a las cachés dentry/inode.
O analice el código fuente de esta manera.
La cantidad de buffers
es el valor de retorno de la función nr_blockdev_pages(void)
long nr_blockdev_pages(void)
{
struct block_device *bdev;
long ret = 0;
spin_lock(&bdev_lock);
list_for_each_entry(bdev, &all_bdevs, bd_list) {
ret += bdev->bd_inode->i_mapping->nrpages;
}
spin_unlock(&bdev_lock);
return ret;
}
La cantidad de cached
:
global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram