#linux #stack #kernel #limit
Вопрос:
Обнаружилась очень странная ситуация.
установка ulimit с помощью команды ulimit:
ulimit -s 5100000
ulimit -c 1000000
ulimit -n 4096
проверка улимита — все хорошо
[lt@lt-hkg1-tsr01 ~]$ ulimit -a
core file size (blocks, -c) 1000000
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 255870
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 5100000
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[lt@lt-hkg1-tsr01 ~]$
теперь проверяем ulimit через cgexec
[lt@lt-hkg1-tsr03 ~]$ cgexec -g cpuset:/lt/default /bin/bash -c "ulimit -a"
core file size (blocks, -c) 1000000
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1031435
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[lt@lt-hkg1-tsr03 ~]$
как вы можете видеть, основные файлы и открытые файлы верны
, но размер стека возвращается к значению по умолчанию (даже у меня другое значение в файле /etc/security/limits.conf).
Я обнаружил, что это относится к ядру 5.x (5.4 / 5.10 /5.12) но работал, как и ожидалось, в 3.x и 4.x
Это ошибка или функция?
Комментарии:
1. я обнаружил, что удаление setgid из cgexec делает поведение таким, каким оно было раньше. все еще не знаю ошибку или функцию