unused remove old memoria limpiar kernels how cache borrar linux linux-kernel page-caching

old - remove unused linux kernels



Linux Caché de página: eliminar una página del caché de página en el kernel (1)

Mi pregunta es una extensión de esta. ¿Cómo manipular el caché de páginas en Linux?

Estaba intentando hacer un pequeño proyecto que tiene como objetivo limitar el tamaño del caché de página utilizado por archivo. El enfoque que utilicé fue el siguiente:

  1. Mantenga una cola kfifo de punteros de página a medida que se agregan al caché de la página.
  2. Agregue un gancho en add_to_page_cache_lru () y vea si el tamaño del árbol de radix (el espacio de dirección) de un archivo es más que un tamaño predeterminado, luego elija una víctima de la cola fifo y elimine la página de la caché de páginas.
  3. Utilicé las funciones delete_from_page_cache () y try_to_unmap () para desalojar la página del caché de la página, seguido de put_page () para liberar la página.

Espero que este código libere las páginas y libere la memoria, pero eso parece no suceder. Por ejemplo, si leo un archivo de tamaño de 25 MB y he restringido el tamaño de la memoria caché de página para que este archivo tenga 512 páginas (2 MB), entonces espero ver un cambio de solo 2 MB en la memoria libre (gratis -m ). Lo que veo en cambio es que los 25 MB completos se consumen y aparecen en el comando gratis.

¿Qué más debo hacer para garantizar que se cumplan mis requisitos? Todavía no he pensado en páginas sucias, ya que ni siquiera pude hacer que funcionen para lecturas (cat the file). Cualquier indicador será de ayuda.

PS - Estoy usando Linux 4.0 para este proyecto.