Comment faire pour déterminer la limite de mémoire de processus dans Linux?
J'ai été à récurer l'internet pour savoir combien de mémoire d'un processus java peut prendre sur un linux (red-hat) de la machine. ( Je ne parle pas des tas, mais plutôt l'ensemble de la quantité de mémoire occupée par le java Processus)
Je n'ai pas l'autorisation d'exécuter quoi que ce soit sur cette machine. Donc je ne peux pas il suffit d'exécuter un programme qui consomme de la mémoire jusqu'à ce que Out-Of-état de la Mémoire.
Cependant, j'ai la permission de vérifier les fichiers de configuration, etc. ( pour exemple: j'ai essayé d'exécuter cat /proc/meminfo, mais je ne peux pas le comprendre; il semble qu'aucun de ses résultats pour le paramètre je veux savoir).
J'ai essayé un programme java sur un autre de red hat à la machine sur laquelle je ne l'autorisation d'exécuter des programmes, et j'ai pu voir programme java grandir autour de 3 go.
Est-il un moyen pour que je puisse savoir combien de mémoire d'un processus peut obtenir ?
OriginalL'auteur rk2010 | 2011-01-10
Vous devez vous connecter pour publier un commentaire.
ulimit est votre ami. Les processus Java ne sont pas différents que les autres. Mais si vous ne pouvez même exécuter ulimit-a, il est difficile de répondre à votre question.
signifie qu'il n'existe pas de quota sur l'utilisation de la mémoire par un procédé quelconque, la seule limite est la quantité de RAM et le swap de la mémoire de l'ordinateur.
mais il semble y avoir tellement d'infos (vague) sur l'internet, précisant que certains processus ne peuvent pas consommer plus de 3 go de mémoire. Quel est votre avis?
Cela dépend ce que l'OS est en 64-bits ou 32-bit, 32-bit OS, vous pouvez uniquement l'adresse de 3,5 GO de mémoire par processus. De toute façon, si vous avez plus de mémoire que cela, un système d'exploitation 64 bits est "nécessaire".
Le total de la mémoire d'un processus 32 bits est illimité (taille de l'ensemble du stockage sur la machine (disques durs, ram, etc) les mines de ce qui est utilisé ailleurs. Mais le maximum qui peut être mappé (disponibles en direct de mémoire adressable) à un moment donné est de 4 go-(2 puissance n), n est souvent 30, en donnant 4 GO-1 GO=3 GO. n de 29 vous donnera 3,5 GO. Je ne me souviens pas comment changer de n.
OriginalL'auteur bmargulies
Voici un utile de lire: En limitant le temps de la consommation de mémoire d'un programme sous Linux, qui conduisent à la timeout outil, qui vous permet de cage d'un processus (et c'est fourches) par le temps ou la consommation de mémoire.
OriginalL'auteur kvz
J'ai eu affaire à ce problème et a trouvé la meilleure solution si vous utilisez 2.6.24 ou plus est d'utiliser le cgroup /cgroups. Un exemple serait comme ça, ici, la valeur par défaut est /etc/cgconfig.fichier conf avec un groupe de contrôle en bas. Ce groupe de contrôle limites de la quantité de mémoire physique à 100 mo et le total de l'allocation de mémoire virtuelle à 200 mo.
Une fois que j'ai ce configuré, je peux le processus d'ajout au groupe comme
Cela permettra de limiter la mémoire du processus principal et tous les enfants qu'il engendre. Il dispose également d'installations pour la requête de l'utilisation de la mémoire dans les contrôleurs.
OriginalL'auteur Chris Hinshaw