¿Por qué drop_caches aumenta la memoria "disponible"?

¿Por qué drop_caches aumenta la memoria "disponible"?

Encuentro problemas de poca memoria en los nodos Proxmox 7 que administro. Cuando leí sobre problemas similares me dirigieron a linuxatemyram.com, después de leer esta página comencé a monitorear la memoria "disponible" en lugar de la memoria "usada". Pero el problema persistió (la memoria disponible disminuye con el tiempo de actividad).

Luego descubrí que podía forzar la liberación de cachés de Linux emitiendo el comando echo 3 > /proc/sys/vm/drop_caches. Esperaba ver que la memoria "usada" se liberara, pero no esperaba que la memoria "disponible" aumentara porque, hasta donde tengo entendido, la memoria disponible también se considera usada porque Linux la usa para el almacenamiento en caché.

Pero la memoria "disponible" aumentó después de drop_caches, como puedes ver a continuación:

root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        29Gi       1.1Gi        67Mi       258Mi       977Mi
Swap:             0B          0B          0B
root@proxmox13:~$ echo 2 > /proc/sys/vm/drop_caches
root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        26Gi       4.1Gi        67Mi       205Mi       3.9Gi
Swap:             0B          0B          0B

¿Por qué aumentó? ¿Por qué la memoria liberada no se consideraba disponible antes si se usaba para el almacenamiento en caché?

Gracias por tu ayuda.

Respuesta1

En un alto nivel, disponible es gratis.máscachés y otras cosas fáciles de recuperar, para comodidad de los humanos.https://www.linuxatemyram.com/usos disponibles en un intento de explicar lo que está pasando. Existen otros contadores para varios cachés que excluyen lo gratuito.

En realidad, el VMM de Linux es complicado y confuso. Rara vez el uso de la memoria cuadra exactamente con una simple contabilidad. CreoAlmacenado en caché en /proc/meminfo significa caché de páginapero también te caístedentrías e inodos. Así que la mejora/caché en forma gratuita no cambió mucho. Pruebe el slabtop si alguna vez necesita profundizar en los objetos del kernel en detalle.

Un GB disponible de 32 no es mucho desde el punto de vista de la planificación de la capacidad. Considere reducir la cantidad de invitados por host de VM o aumentar la memoria física.

No lo utilice, /proc/sys/vm/drop_cachesya que es probable que perjudique el rendimiento debido al trabajo de eliminar los cachés y volver a leer los datos del disco. Esto es para pruebas de rendimiento del almacenamiento en frío, cuando las personas se sienten demasiado perezosas para reiniciar el host.

Hablando de reinicios, los programas no tienen que perder memoria para que la disponibilidad disminuya lentamente. Los hosts de VM y los invitados internos ejecutan probablemente miles de tareas, algunas de las cuales permanecen ejecutándose y mantienen varias asignaciones de memoria. Debería reiniciar cada pocos meses para obtener actualizaciones de software, por lo que mientras la "fuga" sea lenta, puede que no valga la pena investigarla en detalle.

Mejore el seguimiento de su memoria mirando tambiéninformación de pérdida de presión. La métrica que realmente me importa es si las tareas se estancan por falta de memoria, y PSI lo rastrea.

información relacionada