Je veux savoir si je peux définir des limites dynamiques pour le sous-système de mémoire dans un groupe de contrôle. Actuellement, le MOO est désactivé et un processus factice pour tester le groupe de contrôle, lorsque la limite en mémoire est atteinte, le processus se bloque (comme prévu) mais lorsque j'essaie de définir une limite plus grande (comme 2 fois plus de mémoire), le echo
échoue et le processus reste figé.
Comment puis-je définir des limites d'utilisation de mémoire dynamique dans un groupe de contrôle sans déplacer les processus vers un autre groupe de contrôle avec les nouvelles limites définies?
Eh bien, après quelques recherches, j'ai découvert que certains paramètres d'un groupe de contrôle ne peuvent pas être modifiés lorsqu'il y a des tâches dessus.
Malheureusement, les paramètres de limite de mémoire en font partie.
Je pense que ma dernière option est d'utiliser la fonction de migration des tâches et de créer des groupes de contrôle avec de nouvelles limites de mémoire à la demande.
Lorsque vous mentionnez des "limites dynamiques" à l'aide de groupes de contrôle, vous devez être un peu plus précis sur ce que vous recherchez. Il est préférable de fournir un exemple de ce que fait votre application et votre groupe de contrôle avec le fichier cgconfig.conf. Cela nous donnerait une meilleure image.
Bien que cgroups, permet de limiter un processus à une certaine quantité de mémoire en utilisant memory.limit_in_bytes
dans cgconfig.conf, il définit uniquement la limite supérieure et ne se plaint pas si votre processus utilise une limite inférieure. Par conséquent, je ne sais pas si vous avez besoin de groupes de contrôle dans ce cas.
Par conséquent, si votre programme alloue de la mémoire de manière dynamique, vous devrez peut-être également vérifier la quantité de mémoire en cours de validation. Vérifiez les paramètres ajustables du noyau à l'aide de sysctl -a | grep overcommit
et passez à toujours surcharger, que la mémoire soit disponible ou non.