ulimit

Published: 17-11-2016

Updated: 22-02-2018

By: Maxime de Roucy

tags: limit system

Quelques notes sur ulimit.

max@laptop % ulimit -a -H
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             unlimited
-c: core file size (blocks)         unlimited
-m: resident set size (kbytes)      unlimited
-u: processes                       62254
-n: file descriptors                4096
-l: locked-in-memory size (kbytes)  1024
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 62254
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15:                              unlimited

max@laptop % ulimit -a -S
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         unlimited
-m: resident set size (kbytes)      unlimited
-u: processes                       62254
-n: file descriptors                1024
-l: locked-in-memory size (kbytes)  1024
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 62254
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15:                              unlimited

max@laptop % cat /proc/$$/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             62254                62254                processes
Max open files            1024                 4096                 files
Max locked memory         1048576              1048576              bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       62254                62254                signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

/etc/security/limits.conf et /etc/security/limits.d/* ne sont que des fichier de conf pour pam_limits (module PAM de session). Si pam_limits n’est pas activé ces fichiers de configuration ne sont pas pris en compte. Pour que pam_limits soit activé, il faut qu’il soit présent dans la chaine de lancement de session (voir /etc/pam.d) de l’un des processus parent du processus auquel on veut appliquer les limites.

Les limites sont propre à chaque processus ; elles ne se cumule pas pour un utilisateur.

Les limites « Soft » sont les limites appliqué au démarrage des processus sur lesquels elles s’appliquent. Ces processus peuvent augmenter d’eu même leurs limites jusqu’aux limites « Hard ». Seul root à la possibilité de modifier la limite « Hard » d’un processus.

Max open files

Il n’est pas possible de set cette valeur à « unlimited ».

La valeur maximal qu’il est possible de renseigner via ulimit est égal à 1048576. Il est possible de modifier cette valeur.

max@laptop % sysctl fs.nr_open
fs.nr_open = 1048576

Attention, la somme des « open files » (nombre de file descriptor) de tous les processus du système ne peut dépasser « fs.file-max » :

max@laptop % sysctl fs.file-max
fs.file-max = 1590902