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 ?
Réponses
Trop de publicités?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
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.