Como limitar os usuários ao N núcleos?

2

Eu tenho um servidor SSH onde os usuários fazem login para executar várias tarefas. O problema é que eu tenho 4 núcleos, e um usuário está executando tarefas em 4. Como posso limitar o número de núcleos que qualquer usuário pode usar?

Esta não é uma máquina virtual.

ATUALIZAÇÃO: Eu estava lendo /etc/security/limits.conf e viu

#*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4

Eu tentei configurar isso para que um usuário fique limitado a três processos. mas o usuário fica

 -bash: fork: retry: No child processes

no seu terminal.

Eu comecei a pesquisar ulimit e cota

    
por j0h 09.02.2014 / 01:41

2 respostas

1

taskset (1) pode ajudá-lo. Pode definir o número do núcleo para um processo. Você pode usar ps (1) para obter todo o processo do usuário alvo. Por exemplo,

housezet@arch: ~
$ ps aux | awk '/^housezet/{print }' | xargs -l taskset -p 0x00000001

Este processo atual só usa um núcleo. E se limitar o uso da CPU também for aceitável, você também pode considerar o uso de cpulimit (1) .

    
por House Zet 09.02.2014 / 02:33
0

Eu não acredito que exista alguma ferramenta existente que possa lidar com o que você procura, já que não é uma tarefa particularmente fácil de fazer. Manipulação de qual processo vai onde não é feito no espaço do usuário.

A única maneira que eu posso pensar em fazer o que você está procurando é usar ulimit para definir a quantidade máxima de tempo de CPU, o que evitaria que um usuário monopolizasse demais. Você também pode alterar o nível nice de um usuário, portanto, se um usuário em particular estiver batendo na CPU, você poderá diminuir sua atividade.

    
por ruscur 09.02.2014 / 02:10