limits.conf pour définir les limites de mémoire

10

Je voudrais limiter tout processus utilisant plus de 500 Mo de RAM. AFAIK, cela se fait en utilisant RSS dans /etc/security/limits.conf mais le processus appelé gnome-panel utilise apparemment 618436 kB de VmRSS. Comment se peut-il ?

/etc/security/limits.conf

* hard rss 512000

nom d'utilisateur @ debian: ~ $ cat / proc / 3002 / status
Nom: gnome-panel
État: S (endormi)
Tgid: 3002
Pid: 3002
PPid: 2910
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
FDSize: 64
Groupes: 20 24 25 29 44 46112116117 1000 1000 1002 1003 
VmPeak: 916636 ko
VmSize: 916636 kB
VmLck: 0 ko
VmHWM: 618436 ko
VmRSS: 618436 ko
VmData: 601972 kB
VmStk: 104 ko
VmExe: 516 ko
VmLib: 29232 ko
VmPTE: 1760 ko
Fils: 1
SigQ: 0/14001
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000020001000
SigCgt: 0000000180000000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: 3
Cpus_allowed_list: 0-1
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
volontaires_ctxt_switches: 871965
nonvoluntary_ctxt_switches: 47553
PaX: PeMRs

nom d'utilisateur @ debian: ~ $ cat / proc / 3002 / limits
Limit Soft Limit Hard Limit Unités     
Temps CPU max illimité secondes illimitées   
Taille maximale du fichier illimité octets illimités     
Taille maximale des données illimité octets illimités     
Taille maximale de la pile 8388608 octets illimités     
Taille maximale du fichier principal 0 0 octets     
Nombre maximal de résidents 524288000 524288000 octets     
Processus maximum 100100 processus 
Max fichiers ouverts 1024 1024 fichiers     
Mémoire verrouillée max 65536 65536 octets     
Espace d'adressage max illimité octets illimités     
Max fichier verrouille les verrous illimités illimités     
Max signaux en attente 14001 14001 signaux   
Taille maximale de la file d'attente de messages 819200 819200 octets     
Max nice priorité 0 0                    
Priorité maximale en temps réel 0 0                    
Délai d'expiration en temps réel max illimité illimité us
ᔕᖺᘎᕊ
la source

Réponses:

7

limits.conf(5) la page de manuel dit:

rss
  maximum resident set size (KB) (Ignored in Linux 2.4.30 and higher)
Roman Cheplyaka
la source
Existe-t-il un autre moyen de limiter la mémoire totale utilisée par un processus? J'ai déjà eu des problèmes avec le thrashing à cause de programmes utilisant trop de mémoire?
Ma page de manuel datée de 2008 ne mentionnait pas une telle limitation. Quelle est donc la valeur correcte à utiliser?
@Rupert: le mien est daté du 24/08/2009. Voici la version en ligne: kernel.org/pub/linux/libs/pam/Linux-PAM-html/… . Je ne connais malheureusement aucune alternative.
Roman Cheplyaka
as(limite d'espace d'adressage) devrait faire l'affaire, comme décrit @cib. Réglez-le comme vous le feriez rss.
errant.info
1

Je ne connais pas de moyen de limiter cela sur une base par processus, mais vous pouvez restreindre la taille totale RSS (et autres) d'un groupe de processus avec le contrôleur de ressources mémoire .

éphémère
la source
1

La limite RSS dans limits.conf ne fonctionnera pas dans les noyaux> 2.4.30.

Vous devez utiliser Cgroups

PaulDaviesC
la source
Vous devez également indiquer comment utiliser les groupes de contrôle.
Cristian Ciupitu
@CristianCiupitu J'ai donné un lien vers la documentation de Cgroups. Je ne suis pas moi-même un expert en Cgroups et je viens de commencer à l'apprendre, afin de pouvoir remplacer limits.conf sur mes serveurs.
PaulDaviesC