Я хотел бы ограничить использование любым процессом более 500 МБ ОЗУ. Насколько мне известно, это делается с помощью RSS в /etc/security/limits.conf, но процесс под названием gnome-panel, по-видимому, использует 618436 кБ VmRSS. Как это возможно?
/etc/security/limits.conf * жесткий rss 512000
имя пользователя@debian:~$ cat /proc/3002/status Имя: gnome-panel Состояние: S (спящий) Тег: 3002 Код: 3002 PPid: 2910 TracerPid: 0 Uid: 1000 1000 1000 1000 Gid: 1000 1000 1000 1000 FDSize: 64 Группы: 20 24 25 29 44 46 112 116 117 1000 1002 1003 VmПик: 916636 КБ Размер виртуальной машины: 916636 КБ VmLck: 0 КБ VmHWM: 618436 КБ VmRSS: 618436 кБ VmData: 601972 КБ VmStk: 104 КБ VmExe: 516 КБ VmLib: 29232 КБ VmPTE: 1760 кБ Темы: 1 Сигнал Q: 0/14001 СигналPnd: 00000000000000000 ШдПнд: 00000000000000000 SigBlk: 0000000000000000 Сигнал: 0000000020001000 СигналКгт: 0000000180000000 КапИнх: 00000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Разрешено_процессоров: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000001 Список_разрешенных_мемов: 0 добровольные_ctxt_переключения: 871965 недобровольные_ctxt_переключения: 47553 PaX: PeMR
имя пользователя@debian:~$ cat /proc/3002/limits Ограничение Мягкий предел Жесткий предел Единицы измерения Максимальное время ЦП неограниченно неограниченно секунд Максимальный размер файла неограничен неограниченное количество байт Максимальный размер данных неограниченный неограниченный байт Максимальный размер стека 8388608 неограниченных байт Максимальный размер файла ядра 0 0 байт Максимальный резидентный набор 524288000 524288000 байт Макс. количество процессов 100 100 процессов Максимальное количество открытых файлов 1024 1024 файла Макс. заблокированная память 65536 65536 байт Максимальное адресное пространство неограниченно неограниченно байт Макс. количество блокировок файлов неограниченно неограниченно Макс. ожидающих сигналов 14001 14001 сигналов Максимальный размер очереди сообщений 819200 819200 байт Максимальный хороший приоритет 0 0 Максимальный приоритет в реальном времени 0 0 Максимальный тайм-аут в реальном времени неограниченный неограниченный us
решение1
Нашел это решение, посмотрев здесь:http://shortrecipes.blogspot.de/2009/04/limitsconf-virtual-memory-limit.html
Для вашего примера:
* hard as 512000
Похоже, это эквивалентно ulimit -v 512000
, применяемому в момент входа в учетную запись.
решение2
limits.conf(5)
на странице руководства написано:
rss
maximum resident set size (KB) (Ignored in Linux 2.4.30 and higher)
решение3
Я не знаю способа ограничить это для каждого процесса, но вы можете ограничить общий размер RSS (и других) группы процессов с помощьюконтроллер ресурсов памяти.
решение4
Ограничение RSS в limits.conf не будет работать в ядрах > 2.4.30.
Вы должны использоватьCgroups