Ограничение процессов не должно превышать 10% использования ЦП

Я управляю системой Linux, в которой много пользователей, но иногда происходит злоупотребление; где пользователь может запустить один процесс, который использует более 80% CPU / Memory.

Итак, есть ли способ предотвратить это, ограничив объем использования ЦП, который может использовать процесс (например, до 10%)? Я знаю cpulimit , но, к сожалению, он ограничивает процессы, которые я поручаю ограничить (например, отдельные процессы). Поэтому мой вопрос: как я могу применить ограничение для всех запущенных процессов и процессов, которые будут выполняться в будущем, без необходимости предоставления их id / path, например?

  • Установите ключ Comp на рабочий стол Centos 7
  • MySQL 3.23 на Centos 6?
  • clang-tidy install
  • вызов javac из CentOS 7
  • Интерфейс настройки NM_CONTROLLED для да, используя nmcli в CentOS 7
  • что такое служба dhcpv6-client в firewalld, и могу ли я безопасно удалить ее?
  • Могу ли я доверять / proc / cpuinfo в виртуальной среде
  • Как вручную настроить монитор в CentOS7, подключенном через KVM?
  • USB WiFi на CentOS7
  • Если вы запускаете автоматические обновления
  • команда locale-gen в centos6
  • Виртуальная машина Fedora 14 Xen не обнаруживает сеть
  • 5 Solutions collect form web for “Ограничение процессов не должно превышать 10% использования ЦП”

    Хотя это может быть злоупотребление памятью, это не для CPU: когда процессор простаивает, запущенный процесс (путем «запуска», я имею в виду, что процесс не ждет ввода-вывода или чего-то еще) 100% процессорное время по умолчанию. И нет никаких оснований для введения предела.

    Теперь вы можете настроить приоритеты благодаря nice . Если вы хотите, чтобы они применялись ко всем процессам для данного пользователя, вам просто нужно убедиться, что его оболочка для входа запущена с nice : дочерние процессы наследуют nice значение. Это зависит от того, как пользователи входят в систему. См. Например, « Приоритеть ssh logins (nice)» .

    Кроме того, вы можете настроить виртуальные машины. Действительно, установка предела для каждого процесса не имеет особого смысла, поскольку пользователь может запускать многие процессы, злоупотребляя системой. С виртуальной машиной все ограничения будут глобальными для виртуальной машины.

    Другим решением является установка пределов /etc/security/limits.conf ; см. справочную страницу limits.conf (5). Например, вы можете установить максимальное время процессора для входа и / или максимальное количество процессов для входа. Вы также можете установить maxlogins на 1 для каждого пользователя.

    nice / renice

    nice – отличный инструмент для «одних» настроек в системе.

      nice COMMAND 

    CPULimit

    cpulimit если вам нужно запустить работу с интенсивным процессором, и свободное время процессора важно для реагирования системы.

     cpulimit -l 50 COMMAND 

    контрольные группы

    cgroups применяют ограничения на набор процессов, а не только один

     cgcreate -g cpu:/cpulimited cgset -r cpu.shares=512 cpulimited cgexec -g cpu:cpulimited COMMAND_1 cgexec -g cpu:cpulimited COMMAND_2 cgexec -g cpu:cpulimited COMMAND_3 

    Ресурсы

    http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups

    Вы смотрели на группы? Есть информация о Arch Wiki о них. Прочтите раздел о cpu.shares , похоже, он делает то, что вам нужно, и они могут работать на уровне пользователя, поэтому вы можете ограничить все пользовательские процессы одновременно.

    Для памяти то, что вы ищете, это ulimit -v . Обратите внимание, что ulimit наследуется дочерними процессами, поэтому, если вы применяете его к оболочке входа пользователя во время входа в систему, это относится ко всем его процессам.

    Если ваши пользователи используют bash качестве оболочки для входа, размещение следующей строки в /etc/profile должно привести к тому, что все пользовательские процессы будут иметь жесткий лимит в 1 гигабайт (точнее, один миллион килобайт):

     ulimit -vH 1000000 

    Опция H гарантирует, что это жесткий предел, то есть пользователь не сможет установить его обратно. Конечно, пользователь может заполнить память, запустив сразу несколько процессов.

    Для других оболочек вам нужно будет выяснить, какие файлы инициализации они читают вместо (и какую другую команду вместо ulimit они используют).

    Для CPU то, что вы хотите, кажется, не имеет смысла для меня. Каким будет использование 90% процессора при неиспользовании только одного процесса? Я думаю, что вы действительно хотите nice (и, возможно, ionice ). Обратите внимание, что, подобно ulimit , nice значения наследуются дочерними процессами, поэтому достаточно применить его к оболочке входа во время входа в систему. Я думаю, это также относится к ionice но я не уверен.

    Поскольку вы заявляете, что cpulimit не будет практичным в вашем случае, тогда я предлагаю вам взглянуть на хороший , renice и tasket , который может приблизиться к тому, что вы хотите достичь, хотя набор задач позволяет установить сходство процессора с процессорами, поэтому он может быть не сразу полезно в вашем случае.

    Linux и Unix - лучшая ОС в мире.