¿Los programas de usuario liberarán la memoria de losa cuando sea necesario?

5

Me gustaría aclarar si la memoria de losa de Linux se liberará (o se liberará principalmente) si los programas de espacio de usuario lo necesitan.

Me di cuenta de que uno de mis sistemas Linux tenía una gran cantidad de memoria asignada a "losa":

(desde la losa)

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
834768 834766  99%    0.94K  24552       34    785664K ext4_inode_cache
694092 354151  51%    0.19K  33052       21    132208K dentry

Me doy cuenta de que puedo borrarlo manualmente si quiero con (sincronización; echo 3> / proc / sys / vm / drop_caches) pero ¿necesito o lo liberaré Linux solo cuando sea necesario?

MONTE.
fuente

Respuestas:

3

En resumen, sí, el núcleo liberará losas para dejar espacio a las aplicaciones de espacio de usuario.

La "memoria de losa" a la que se refiere es la memoria asignada por el núcleo utilizando una técnica para reducir la fragmentación de RAM. No es un cierto tipo de memoria o espacio reservado para algunos datos especiales adicionales. Ha estado disponible desde la versión 2.2 del kernel. El truco consiste en asignar fragmentos de memoria de tamaño fijo para su uso por los objetos que se ajustan a esos fragmentos, y para administrar la asignación y la desasignación de los fragmentos en su conjunto cuando sea necesario.

Linux mantiene tantos datos residentes en RAM como sea posible para acelerar el acceso. Las memorias caché inode y dentry están ahí para acelerar el acceso a su sistema de archivos. Si tiene procesos extremadamente agresivos que Linux está matando porque están tratando de reclamar demasiada memoria, ajustar los parámetros de limpieza de caché puede ayudar, pero es poco probable. Para ese tipo de información, consulte la documentación de vfs_cache_pressure .

Chris Betti
fuente