Existem muitas perguntas semelhantes, mas nenhuma delas me ajuda com o meu problema.
Eu tenho o ubuntu 11.10 no servidor (é a versão desktop). Eu tenho um site em execução nele. Há um processo que é muito importante, mas não precisa ser executado com alta prioridade. Desejo limitar permanentemente o uso da CPU no processo , não no usuário. Este processo é executado pela função exec (é função php, não processo do sistema).
Então, eu vejo duas opções: 1. Adicione algum tipo de limite sempre que a função for executada. 2. Limite o uso da CPU permanentemente para este processo.
Eu tentei usar "nice" e cpulimit, mas nada parece funcionar. Nice não tem nenhum efeito e cpulimit (com -e) diz: "nenhum processo de destino encontrado".
Eu sou bastante iniciante, então, por favor, assuma que não sei quase nada.
cgsnapshot -s
para recuperar as informações sem gravar o arquivo de configuração manualmente, o último dos quais não é recomendado.Respostas:
Na ausência de detalhes solicitados ...
Aqui está como eu uso o cgroups no ubuntu.
Ao longo desta postagem, você precisará alterar a variável "$ USER" para o usuário que está executando o processo
Eu adicionei informações para a memória e isso será um FAQ, se você não precisar, não use.
1) Instale
cgroup-bin
2) Reinicialize. cgroups agora está localizado em
/sys/fs/cgroup
3) Faça um cgroup para o seu usuário (o proprietário do processo)
4) Seu usuário pode gerenciar recursos. Por padrão, os usuários recebem 1024 unidades de CPU (compartilhamentos), de modo a limitar a cerca de 10% da CPU, a memória está em bytes ...
5) Inicie seu processo (altere exec para cgexec)
Configuração
Supondo que os cgroups estejam trabalhando para você;)
Edite
/etc/cgconfig.conf
, adicione seu cgroup personalizadoAdicione no seu cgroup. Mude novamente $ USER para o nome do usuário que possui o processo.
Você também pode especificar grupos
gid=$GROUP
, /etc/cgconfig.conf é bem comentado.Agora, execute novamente seu processo com
cgexec -g cpu:$USER command <options>
Você pode ver seu processo (por PID) em
/sys/fs/cgroup/cpu/$USER/tasks
Exemplo
Para obter informações adicionais, consulte: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/
fonte