СИСТЕМНАЯ ИНФОРМАЦИЯ
Тип и версия ОС
*Ubuntu Linux 20.04.4
Virtualmin версии 6.17-3*
Я единственный владелец своего сервера и всех виртуальных серверов. Я хочу ограничить ресурсы, используемые серверами. В настоящее время я настраиваю использование оперативной памяти, редактируя файл limits.conf следующим образом:
oneofmyuser жесткий memlock 1024
Теперь я запутался в опции cpu в примерах кодов -
#Where:
#<domain> can be:
# - a 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
# - NOTE: group and wildcard limits are not applied to root.
# To apply a limit to the root user, <domain> must be
# the literal username root.
#
#<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 file descriptors
# - 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
# - chroot - change root to directory (Debian-specific)
Как мне ограничить использование пользователем только 1 или 2 ядра? Есть значение ядра, но оно должно быть в Кб? Я хочу ограничить, например, 2 ядра? Так сколько кб? Также для cpu? Каковы идеальные значения для этих параметров для обычного сервера с обычным сайтом WordPress?
решение1
В Linux вы можете закрепить процесс за процессором с помощью taskset
. (См man taskset
. ). (См. такжеhttps://unix.stackexchange.com/questions/425065/linux-как-узнать-какие-процессы-прикреплены-к-какому-ядру)
Вы также можете использовать cpulimit
(см. man cpulimit
), который использует контрольные группы для установки предела использования процессора, где 100 будет эквивалентом одного процессора.
Чтобы использовать любой из них, вам придется выяснить, какой процесс запущен для пользователя, и добавить вышеуказанные команды. Я не знаком с Virtualmin, но, поскольку он имеет открытый исходный код, я подозреваю, что вы сможете довольно легко выяснить, где он запускает эти процессы, выполнив grep исходного кода.
Время ЦП limits.conf
— это время ЦП в минутах, как показано в столбце «Время», top
поэтому это всего лишь мера того, как долго процессу разрешено работать в монопольном режиме.
Значение «core» в limits.conf (см. man limits.conf
) относится к размеру файла дампа ядра, который представляет собой дамп, который можно включить для отладки в случае сбоя процесса.
Предыстория этого в том, что Linux был разработан для выполнения ровно противоположного — распределения задач по процессорам — и он в этом очень хорош. Единственная причина разумно ограничить задачи процессором на многоядерной машине — это сделать что-то с идеальным временем — или атаками по времени.
Другие варианты — заблокировать ОС на определенных ядрах с помощью загрузчика, или вы можете эмулировать отдельные ЦП или запускать контейнеры, закрепленные за определенными ЦП.