Ограничение системных ресурсов, доступных пользователям

Мы хотели бы выделять пользователям куски процессорного времени и оперативной памяти каждые несколько месяцев. Это на сервере Linux. Я думаю process accounting может помочь в отслеживании использования, но не обеспечивает соблюдение политики использования. Что было бы хорошим способом обеспечить соблюдение политики использования. Нам нужно что-то вроде банковского счета, с которого пользователь может снимать процессорное время и часы памяти.

Если я правильно понимаю, ulimit накладывает ограничение на разные ресурсы для каждого экземпляра оболочки и, следовательно, кажется неадекватным. Буду признателен, если вы поправите меня, если я ошибаюсь по поводу ulimit. Я подозреваю, что я есть.

2 ответа

Решение

Проверьте cgroups

http://en.wikipedia.org/wiki/Cgroups

cgroups (управляющие группы) - это функция ядра Linux для ограничения, учета и изоляции использования ресурсов (ЦП, память, дисковый ввод-вывод и т. д.) для групп процессов.

Демо от RedHat

http://www.youtube.com/watch?v=KX5QV4LId_c

pam_limits - это вариант, который вы можете попробовать. Параметры устанавливаются и документируются в /etc/security/limit.conf, который можно установить на уровне пользователя:

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4
Другие вопросы по тегам