Автор Тема: debian cpu/memory usage limiting  (Прочитано 7168 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
debian cpu/memory usage limiting
« : 20 ноября 2011, 09:42:31 »
Вопрос состоит в следующем есть система на Debian Lenny/Squeeze, есть пользователь в системе который запускает процессы и нужно чтобы процессы по достижению предела в использовании памяти или CPU тупо убивались. Системы 64 битные и поэтому просто надоело что любой криво настроеный процесс уводит систему в очень лагучее состояние. Чем это правильнее всего сделать ? И как это дело работает с такой ситуацией что когда запускается процесс то выглядит это примерно так:

user1       30900  0.0  0.0  25584  1000 ?        Ss   Nov19   0:01 SCREEN -A -h 100 -m -d -L -S ... ./process_name
user1       30902  0.0  0.0  11184  1456 pts/24   Ss+  Nov19   0:00 /bin/sh ./process_name
user1       30908  4.9  0.3  73040 61684 pts/24   Sl+  Nov19  36:04 ./process_name

/etc/security/limits.conf ?
cpulimit ?
для памяти ?

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
debian cpu/memory usage limiting
« Ответ #1 : 20 ноября 2011, 09:51:57 »
Если нужно контролировать каждый процесс - то да, через limits.conf.
А есть более гибкое решение (и соответственно более сложное) - через cgroups. Позволяет выставлять лимиты не только на память/CPU, но и disk и network на целые группы процессов. Правда cgroups достаточно новая фича, так что документации пока неособо много. И кстати не факт что в lenny есть, разве что с backport-ядром.

Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
debian cpu/memory usage limiting
« Ответ #2 : 20 ноября 2011, 09:54:58 »
Да каждый процесс по отдельности чтобы не превышал лимит.

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
debian cpu/memory usage limiting
« Ответ #3 : 20 ноября 2011, 09:55:02 »
Вот пример как лимитировать ресурсы пользователю - http://www.opennet.ru/base/sys/ulimit_mc.txt.html
Про cgroups можно прочесть здесь
и здесь
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
debian cpu/memory usage limiting
« Ответ #4 : 20 ноября 2011, 10:00:48 »
Тоесть limits.conf нормально использовать для этого :)?
И как насчёт CPU ?

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
debian cpu/memory usage limiting
« Ответ #5 : 20 ноября 2011, 10:07:17 »
И как насчёт CPU ?
через limits.conf выставить приоритет низкий да и пускай вертится себе
Not as ultimate as 42, but pretty close...

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
debian cpu/memory usage limiting
« Ответ #6 : 20 ноября 2011, 10:13:18 »
limits.conf позволяет лимитировать процессорное время
Здесь можно прочесть - http://www.linuxtopia.org/online_books/linux_administrators_security_guide/16_Linux_Limiting_and_Monitoring_Users.html
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
debian cpu/memory usage limiting
« Ответ #7 : 20 ноября 2011, 10:15:15 »
лимитировать процессорное время
а ты поди угадай, какое оно должно быть :D
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
debian cpu/memory usage limiting
« Ответ #8 : 20 ноября 2011, 10:15:33 »
Ок спасибо, на сколько я понял с limits всё просто, прописал типа ulimit -m 600000 и оно сразу начало работать :)?

С процессором у меня немного сложнее мне надо чтобы процессы просто не жрали больше 70% WCPU тоесть при достижении этого предела можно тупо также убить :)

Хотя походу не так всё просто с этим ulimit к запущенным процессам оно не применится.
« Последнее редактирование: 20 ноября 2011, 10:23:50 от OmIkRoNiXz »

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
debian cpu/memory usage limiting
« Ответ #9 : 20 ноября 2011, 10:24:44 »
Эти лимиты через PAM работают, при входе пользователя в систему.
Вы по ссылочке то сходите, там написано =)
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
debian cpu/memory usage limiting
« Ответ #10 : 20 ноября 2011, 10:44:34 »
это понятно, а в таком случае оно будет правильно работать: ulimit -m 600000 прописал в ~/.profile авторизация у пользователя по ключам, на удалённом сервере я делаю так ssh -MN server1 если потом смотрю вот так ssh server1 "ulimit -a" то изменений нету, а если запрашиваю оболочку ssh server1 то лимит установлен max memory size         (kbytes, -m) 600000 в случае запусков процессов по такому принципу ssh server1 "screen ... ./process_name" оно так сказать будет подвержено этому лимиту ?

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
debian cpu/memory usage limiting
« Ответ #11 : 20 ноября 2011, 10:57:25 »
Правильнее, я думаю, воспользоваться limits.conf, все таки.
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
debian cpu/memory usage limiting
« Ответ #12 : 23 ноября 2011, 23:39:02 »
кто нибудь может мне обьяснить где я не правильно сделал что-то ? VSZ и RSS явно больше 600М

user1       19582  0.0  0.0  25584  1004 ?        Ss   Nov22   0:07 SCREEN -A -h 100 -m -d -L -S screen1 ./process_name
user1       19584  0.0  0.0  11180  1452 pts/3    Ss+  Nov22   0:00 /bin/sh ./process_name
user1       19590 35.2  4.2 742712 694680 pts/3   Sl+  Nov22 773:34 ./process_name

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 128156
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) 600000
open files                      (-n) 1024
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) 128156
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

# cat /etc/security/limits.conf | grep user1
user1              hard    rss             600000

Оффлайн VanDyke

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 1800
  • Рейтинг: 73
  • Пол: Мужской
  • Network Warrior
    • Просмотр профиля
  • Откуда: Destination network unreachable
debian cpu/memory usage limiting
« Ответ #13 : 24 ноября 2011, 07:11:12 »
OmIkRoNiXz, а что в /proc/19590/limits
Not as ultimate as 42, but pretty close...

Оффлайн OmIkRoNiXz

  • Пользователь
  • **
  • Сообщений: 74
  • Рейтинг: 1
    • Просмотр профиля
debian cpu/memory usage limiting
« Ответ #14 : 24 ноября 2011, 10:10:25 »
$ cat /proc/19590/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        2048000              2048000              bytes
Max resident set          614400000            614400000            bytes
Max processes             128156               128156               processes
Max open files            1024                 1024                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       128156               128156               signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us