Como limitar os núcleos da CPU no Ubuntu/Virtualmin?

Como limitar os núcleos da CPU no Ubuntu/Virtualmin?

INFORMAÇÃO DO SISTEMA
Tipo e versão do sistema operacional
*Ubuntu Linux 20.04.4

Virtualmin versão 6.17-3*

Sou o único proprietário do meu servidor e de todos os servidores virtuais. Quero limitar os recursos usados ​​pelos servidores. Atualmente eu configurei o uso de memória RAM editando o arquivo limit.conf assim -

memlock rígido oneofmyuser 1024

Agora estou confuso com a opção de CPU nos códigos de exemplo -

#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)

Como posso limitar meu usuário a usar apenas 1 ou 2 núcleos? Existe um valor central, mas deveria estar em Kb? Quero limitar, por exemplo, 2 núcleos? Então, quantos KB? Também para CPU? Quais são os valores ideais para essas opções para um servidor normal com site wordpress normal?

Responder1

No Linux, você pode fixar um processo em uma CPU com taskset. (Ver man taskset). (Veja tambémhttps://unix.stackexchange.com/questions/425065/linux-how-to-know- Which-processes-are-pinned-to- which-core)

Você também pode usar cpulimit(consulte Recursos man cpulimit), que usa grupos de controle para definir um limite de uso da CPU, onde 100 seria equivalente a uma CPU.

Para usar qualquer um deles, você terá que descobrir qual processo é iniciado para o usuário e anexar os comandos acima. Não estou familiarizado com o Virtualmin, mas sendo de código aberto, suspeito que você será capaz de descobrir onde ele inicia esses processos com bastante facilidade, digitando o código-fonte.

O tempo de CPU em limits.confé o tempo de CPU em minutos, conforme mostrado na coluna Tempo, portanto, topé apenas uma medida de quanto tempo o processo pode ser executado exclusivamente.

O valor "core" em limit.conf (consulte Recursos man limits.conf) refere-se ao tamanho de um arquivo de dump principal, que é um dump que você pode ativar de um processo se ele travar, para depuração.

O pano de fundo disso é que o Linux foi projetado para fazer exatamente o oposto – distribuir tarefas pelas CPUs – e é extremamente bom nisso. A única razão para limitar razoavelmente as tarefas a uma CPU em uma máquina com vários núcleos é fazer algo com tempo perfeito - ou ataques de temporização.

Outras opções são bloquear o sistema operacional em determinados núcleos do bootloader, ou você pode emular CPUs singulares ou executar contêineres fixados em determinadas CPUs.

informação relacionada