¿Cómo puedo obligar a ciertos programas a vivir dentro de una huella de memoria determinada que ellos conocen bien?

0

En mi máquina (Linux Mint x64, intencionalmente con cambio de cero), programas como Firefox y Chrome (que se ejecutan al mismo tiempo, porque entonces, lamentablemente, necesitan) consumen mucha más memoria de la que tienen razones para hacerlo. Y cuando salen mal, toda la máquina se detiene.

¿Cómo puedo obligar a que algunas de estas tareas se limiten por la fuerza a una huella de memoria específica de la que tengan plena conciencia para que no intenten sobrepasar su huella de memoria máxima?

Estoy harto y cansado de que programas como Chrome y Firefox me atornillan porque solo al azar (desde la perspectiva del usuario) deciden: "Oye, necesito más memoria. ¡Kernel, necesito más memoria!" en lugar de "Oye, necesito más memoria ... Mierda, estoy fuera. ¿Qué debo cortar?"

Lo mejor que puedo encontrar, hasta ahora es aislar Chrome y Firefox (individualmente) a las máquinas virtuales en alguna otra máquina con el máximo de huellas de memoria bloqueadas. Pero, eso es un gran desperdicio y resulta horrible para cosas como los juegos flash, especialmente los que esperan una aceleración de hardware.

Solo Dios sabe lo que está usando tanta memoria, porque cada navegador generalmente no tiene más de 15 pestañas abiertas. Entonces, eso es una frustración adicional.

¿Cómo puedo obligar a ciertos programas a vivir dentro de una huella de memoria determinada que ellos conocen bien?

Si bien esta pregunta podría limitarse solo a Chrome o Firefox, estoy seguro de que hay otros programas altamente inútiles que necesitan algún tipo de restricción. Entonces, mientras una solución que corrige el mal comportamiento de Firefox y Chrome puede hacer lo que necesito, una solución más general es realmente lo que estoy buscando.

killermist
fuente

Respuestas:

1

Puedes usar:

  • grupos de control ( cgroups] ) en su sistema operativo principal.
  • lxc en lugar de máquinas virtuales con cgroups control de la memoria.

Para una referencia de todas las opciones en el kernel para el control de memoria, puede verificar aquí .

Esta solución se aplica a cualquier programa o grupo de programas.

dawud
fuente
0

Puede usar ulimit para establecer la memoria máxima de procesos iniciados a través del terminal actual, o usar un programa como limite blando para iniciar un programa con un límite de memoria dado. Una vez que se alcanza ese límite, las asignaciones de memoria fallarán con ENOMEM (que puede no ser manejado correctamente por todos los programas).

user2313067
fuente