2010-07-12 5 views
1

Je souhaite limiter la quantité de mémoire physique qu'un processus peut utiliser sans limiter la quantité de mémoire virtuelle qu'il peut utiliser. Je fais ceci dans le but de mesurer le comportement de divers algorithmes sous la pression de la mémoire, et j'ai besoin de tester leurs performances avec beaucoup de différentes quantités de mémoire physique disponible - donc j'ai besoin d'acheter un crapton de mémoire dans beaucoup de tailles obscures, ou j'ai besoin d'un système d'exploitation qui supporte la limitation de la mémoire résidente d'un processus d'une manière ou d'une autre.Limitation de l'utilisation de la mémoire résidente

Malheureusement, Linux ne respecte pas/n'impose pas setrlimit(RLIMIT_RSS, ...), et OSX non plus. [1] Pourriez-vous me recommander un système d'exploitation qui peut faire cela? Un des BSD non-OSX? Y a-t-il un mécanisme pour le faire dans Solaris? Est-ce qu'une variante de Windows peut le faire?


[1] Linux ne tient pas compte de la demande tout à fait, et Mac OS X utilise seulement pour décider d'échanger d'abord lorsque la mémoire physique est épuisé. Ni l'un ni l'autre ne m'aide à analyser le comportement d'un algorithme lorsque seulement X Megs de mémoire sont disponibles. Il s'avère que Linux n'a aucun mécanisme pour le faire dans le noyau, donc c'est à peu près complètement à moins que quelqu'un ne puisse me pointer vers un fork du noyau qui le permet. Solaris n'a même pas cette option à setrlimit(), mais il peut avoir une autre façon que je ne sais pas.

+0

Peut-être la virtualisation est la réponse ici? –

Répondre

0

Compris. Donc, vous ne pouvez pas le faire avec n'importe quel Unix que je pourrais trouver. Par conséquent, la chose à faire est d'exécuter un système d'exploitation virtualisé qui a autant de mémoire que vous voulez lui donner. Ensuite, le système d'exploitation virtuel sera entraîné dans l'échange, mais votre système d'exploitation principal va bourdonner très bien. Encore mieux, si vous voulez simplement compter les fautes de pages plutôt que de mesurer l'heure de l'horloge murale, cette approche vous permet de transformer le disque d'échange de la machine virtuelle en disque virtuel de la machine non virtualisée. la machine virtualisée!

Questions connexes