15 votos

¿Una forma de limitar la cantidad de RAM que un proceso arbitrario puede ocupar?

Digamos que tenemos una máquina OS X funcionando con 4 GB de RAM. ¿Es posible configurarlo para que ningún proceso pueda ocupar más de, digamos, 3 GB, de modo que no importa cuánta memoria acapare un proceso, siempre quede algo de memoria para que el sistema responda?

6 votos

No. Y esto sería contraproducente. La microgestión de la asignación de RAM no es algo para lo que se hayan diseñado los sistemas operativos. La RAM libre es RAM desperdiciada. La supuesta mala gestión de la RAM por parte de OS X es demasiado. Cerrar el Monitor de Actividad y seguir con tu vida parece ser el mejor remedio.

9 votos

@cksum Hay una enorme serie de suposiciones en tu comentario, la mayoría de las cuales son erróneas. No estoy intentando echar atrás la gestión de la memoria de OS X. Lo que estoy en realidad hacer está tratando de averiguar si hay una manera de mantener la funcionalidad del sistema suficiente, mientras que la prueba de un código que más bien se convierte en un proceso fuera de control. Porque la RAM libre no es una RAM desperdiciada si es lo que te permite arreglar los errores.

3 votos

Lo siento, pero si su pregunta está relacionada con la programación, (desarrollo y pruebas) de aplicaciones, entonces está fuera del tema de este foro. Por favor, eche un vistazo a las FAQ para más información sobre qué tipo de preguntas pertenecen a este foro: apple.stackexchange.com/faq

9voto

MrDaniel Puntos 8871

Una pregunta similar a esta se señala aquí ¿Cómo puedo limitar la cantidad de RAM que puede usar una aplicación de Mac OS?

Recomiendan usar el ulimit pero no pudieron limitar con éxito la cantidad a lo que deseaban. Creo que el problema con el que se encontraron fue el hecho de que la opción que se estableció -u o -v no tenía en cuenta el sistema de paginación de la memoria, por ejemplo, sólo puedes asignar X cantidad de espacio para tu proceso en la RAM real, pero podemos paginarte a la memoria virtual durante todo el día.

Tenga en cuenta que esto puede ser peligroso desactivando la Memoria Virtual, podría resultar en que su Mac se bloquee, etc. cuando se agote la RAM.

Intente ejecutar ulimit con los argumentos -l, -m, o -v sin embargo como se indica en la página de ulimit man hasta el sistema operativo si prestará atención a estos ajustes o no como se indica.

ulimit: ulimit [-SHacdefilmnpqrstuvx] [límite]

Modificar los límites de los recursos del casco.

Proporciona el control sobre los recursos disponibles para el armazón y los procesos que crea, en los sistemas que permiten ese control.

No puedo encontrar ninguna fuente definitiva que confirme si OS X ignora el ulimit o no, pero después de que el ulimit referido falle

Si puede conseguir que ulimit trabaje por sí mismo para sus necesidades, entonces inténtelo, si no una combinación de ulimit y o la desactivación de la memoria virtual puede permitirle establecer ese límite de 3 GB en determinados procesos. Para tu información, este es un buen enlace para obtener más información sobre Deshabilitar completamente la memoria virtual en el sistema Snow Leopard 10.6

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

0 votos

Esta parece ser la respuesta correcta, la probaré la próxima vez que lo haga. Por ahora, aceptando la respuesta.

5voto

Jason Sparks Puntos 948

Si estás ejecutando el servidor Lion (o el nuevo OSX) en tu Mac, podrías ejecutar OSX dentro de una VM (VirtualBox, Parallels o VMWare, etc.) en ese Mac. Limite la VM a 3 GB de RAM física, y cualquier aplicación o proceso dentro de la VM también será limitado. El sistema que aloja la VM debería seguir respondiendo incluso si el sistema operativo de la VM está limitado a la copia de seguridad, el intercambio de discos o se bloquea.

Si está depurando un proceso potencialmente desbocado, podría entrar en la máquina virtual para ejecutar el depurador o un núbil de depuración desde la línea de comandos y registrar las cosas hasta que las cosas se bloqueen.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X