Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

340
Visualizações
vm/min_free_kbytes - ¿Por qué mantener la memoria reservada mínima?

Según este artículo :

/proc/sys/vm/min_free_kbytes: Esto controla la cantidad de memoria que se mantiene libre para uso de reservas especiales, incluidas las asignaciones "atómicas" (aquellas que no pueden esperar para ser recuperadas)

Mi pregunta es ¿qué significa "aquellos que no pueden esperar para reclamar"? En otras palabras, me gustaría entender por qué es necesario decirle al sistema que siempre mantenga una cierta cantidad mínima de memoria libre y en qué circunstancias se usará esta memoria. [Debe ser usado por algo; no veo la necesidad de lo contrario]

Mi segunda pregunta: ¿establecer esta memoria en algo superior a 4 MB (en mi sistema) conduce a un mejor rendimiento? Tenemos un servidor que ocasionalmente muestra un rendimiento de shell muy bajo (p. ej., ls -l tarda entre 10 y 15 segundos en ejecutarse) cuando ciertos procesos se ponen en marcha y si establecer este número en algo más alto conducirá a un mejor rendimiento de shell.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

(el enlace está muerto, parece que ahora está aquí )

Ese texto se refiere a asignaciones atómicas, que son solicitudes de memoria que deben satisfacerse sin ceder el control (es decir, el hilo actual no puede suspenderse). Esto sucede con mayor frecuencia en las rutinas de interrupción, pero se aplica a todos los casos en los que se necesita memoria mientras se mantiene un bloqueo esencial. Estas asignaciones deben ser inmediatas, ya que no puede permitirse el lujo de esperar a que el intercambiador libere memoria.

Consulte Linux-MM para obtener una explicación más completa, pero este es el proceso de asignación de memoria en resumen:

  • _alloc_pages primero itera sobre cada zona de memoria buscando la primera que contiene páginas gratuitas elegibles
  • _alloc_pages luego despierta la tarea kswapd [..to..] toque los grupos de memoria de reserva mantenidos para cada zona.
  • Si la asignación de memoria aún no tiene éxito, las páginas _alloc se rendirán [..] En este proceso, _alloc_pages ejecuta un cond_resched() que puede provocar una suspensión, por lo que esta rama está prohibida para las asignaciones con GFP_ATOMIC .

min_free_kbytes es poco probable que ayude mucho con el descrito "ls -l tarda entre 10 y 15 segundos en ejecutarse"; eso probablemente se deba a la presión general de la memoria y al intercambio en lugar del agotamiento de la zona. La configuración min_free_kbytes solo necesita permitir suficientes páginas libres para manejar solicitudes inmediatas. Tan pronto como se reanude el funcionamiento normal, se puede ejecutar el proceso de intercambio para reequilibrar las zonas de memoria. La única vez que tuve que aumentar min_free_kbytes fue después de habilitar tramas gigantes en una tarjeta de red que no admitía la dispersión dma.

Para ampliar un poco su segunda pregunta, obtendrá mejores resultados ajustando vm.swappiness y las proporciones sucias mencionadas en el artículo vinculado. Sin embargo, tenga en cuenta que optimizar el rendimiento de "ls -l" puede hacer que otros procesos se vuelvan más lentos. Nunca optimice para un caso de uso no principal.

over 4 years ago · Santiago Trujillo Relatório

0

Todos los sistemas Linux intentarán hacer uso de toda la memoria física disponible para el sistema, a menudo mediante la creación de un caché de búfer del sistema de archivos, que en pocas palabras es un búfer de E/S para ayudar a mejorar el rendimiento del sistema. Técnicamente, esta memoria no está en uso, aunque está asignada para el almacenamiento en caché.

"esperar para reclamar", en su pregunta, se refiere al proceso de reclamar esa memoria caché que "no está en uso" para que pueda asignarse a un proceso. Se supone que esto es transparente, pero en el mundo real hay muchos procesos que no esperan a que esta memoria esté disponible. Java es un buen ejemplo, especialmente cuando se ha establecido un gran tamaño de almacenamiento dinámico mínimo. El proceso intenta asignar la memoria y, si no está disponible instantáneamente en una gran porción contigua (¿atómica?), el proceso muere.

Reservar una cierta cantidad de memoria con min_free_kbytes permite que esta memoria esté disponible al instante y reduce la presión de la memoria cuando es necesario iniciar, ejecutar y finalizar nuevos procesos mientras hay una gran carga de memoria y un caché de búfer lleno.

4 MB parece bastante bajo porque si la memoria caché del búfer está llena, es probable que falle cualquier proceso que desee una asignación inmediata de más de 4 MB. La configuración es muy ajustable y específica del sistema, pero si tiene unos pocos GB de memoria disponible, no está de más aumentar la memoria de reserva a 128 MB. No estoy seguro de qué efecto tendrá en la interactividad del shell, pero probablemente sea positivo.

over 4 years ago · Santiago Trujillo Relatório

0

Esta memoria se mantiene libre de uso por los procesos normales. Como mencionó @Arno, los procesos especiales que pueden ejecutarse incluyen rutinas de interrupción, que deben ejecutarse ahora (ya que es una interrupción) y finalizar antes de que pueda ejecutarse cualquier otro proceso (atómico). Esto puede incluir cosas como cambiar la memoria al disco cuando la memoria está llena.

Si la memoria está llena, se ejecuta un proceso de interrupción (administración de memoria) para intercambiar algo de memoria en el disco para que pueda liberar algo de memoria para que la usen los procesos normales. Pero si vm.min_free_kbytes es demasiado pequeño para que se ejecute, bloquea el sistema. Esto se debe a que este proceso de interrupción debe ejecutarse primero para liberar memoria para que otros puedan ejecutarse, pero luego se atasca porque no tiene suficiente memoria reservada vm.min_free_kbytes para realizar su tarea, lo que genera un interbloqueo.

Ver también:

  • https://www.linbit.com/en/kernel-min_free_kbytes/ y
  • https://askubuntu.com/questions/41778/computer-freezing-on-almost-full-ram-possibility-disk-cache-problem (donde el proceso de administración de memoria tiene tan poca memoria para trabajar que toma mucho tiempo para intercambiar poco a poco que se siente como una helada.)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda