16 votes

Un moyen de limiter la quantité de RAM qu'un processus arbitraire peut occuper ?

Disons que nous avons une machine OS X fonctionnant avec 4 Go de RAM. Est-il possible de le configurer de manière à ce qu'aucun processus ne puisse occuper plus de 3 Go, par exemple, afin que, quel que soit le degré d'accaparement de la mémoire par un processus, il reste toujours de la mémoire pour que le système reste réactif ?

9voto

MrDaniel Points 12472

Une question similaire à celle-ci est notée ici Comment puis-je limiter la quantité de RAM qu'une application Mac OS peut utiliser ?

Ils recommandent d'utiliser le ulimit mais ils n'ont pas réussi à limiter la quantité à ce qu'ils souhaitaient. Je pense que le problème auquel ils se sont heurtés était le fait que l'option -u ou -v ne tenait pas compte du système de pagination de la mémoire, par exemple, vous ne pouvez allouer qu'une quantité X d'espace pour votre processus dans la RAM réelle, mais nous pouvons vous paginer vers la mémoire virtuelle toute la journée.

Notez que la désactivation de la mémoire virtuelle peut être dangereuse, car elle peut entraîner le blocage de votre Mac, etc. lorsqu'il n'a plus de RAM.

Essayez d'exécuter ulimit avec les arguments -l, -m, ou -v cependant, comme indiqué dans la page de manuel ulimit, c'est au système d'exploitation de faire attention à ces paramètres ou non.

ulimit : ulimit [-SHacdefilmnpqrstuvx] [limit]

Modifier les limites des ressources du shell.

Permet de contrôler les ressources disponibles pour le shell et les processus qu'il crée, sur les systèmes qui permettent un tel contrôle.

Je ne peux pas vraiment trouver une source définitive qui confirme si OS X ignore ulimit ou non, mais après l'échec ulimit référencé

Si vous pouvez faire fonctionner ulimit pour vos besoins, alors essayez-le, sinon une combinaison de ulimit et de la désactivation de la mémoire virtuelle peut vous permettre de mettre en place cette limite de 3 Go sur certains processus. Pour votre information, voici un bon lien pour plus d'informations sur Désactiver complètement la mémoire virtuelle dans le système Snow Leopard 10.6

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

5voto

Jason Sparks Points 948

Si vous utilisez Lion (ou un OSX plus récent) Server sur votre Mac, vous pouvez peut-être exécuter OSX dans une VM (VirtualBox, Parallels, ou VMWare, etc.) sur ce Mac. Limitez la VM à 3 Go de RAM physique, et toute application ou processus à l'intérieur de la VM sera également limité. Le système hébergeant la VM devrait rester réactif même si le système d'exploitation dans la VM est limité par le disque de sauvegarde ou tombe en panne.

Si vous déboguez un processus susceptible de s'emballer, vous pouvez vous connecter à la machine virtuelle pour exécuter le débogueur ou un nœud de débogage à partir de la ligne de commande, et enregistrer des données jusqu'à ce que les choses se bloquent.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X