Projetos são recipientes de cargas de trabalho no agendador FSS. Grupos de usuários atribuídos a um projeto são tratados como blocos únicos controláveis. Observe que você pode criar um projeto com um número próprio de compartilhamentos para um usuário individual.
Usuários podem ser membros de múltiplos projetos aos quais se atribuem diferentes números de compartilhamentos. Movendo-se processos de um projeto para outro, é possível atribuir recursos da CPU a processos em quantidades variáveis.
Para obter mais informações sobre o banco de dados de project(4) e serviços de nomes, consulte Banco de dados de project.
A configuração de compartilhamentos de CPU é gerenciada pelo serviço de nomes como uma propriedade do banco de dados de project.
Quando a primeira tarefa (ou processo) associada a um projeto é criada através da função de biblioteca setproject(3PROJECT), o número de compartilhamentos de CPU definido como controle de recurso project.cpu-shares no banco de dados de project é passado para o kernel. A um projeto que não tem o controle de recurso project.cpu-shares atribui-se um compartilhamento.
No exemplo abaixo, esta entrada no arquivo /etc/project define o número de compartilhamentos para x-files do projeto como 5:
x-files:100::::project.cpu-shares=(privileged,5,none) |
Se você alterar o número de compartilhamentos da CPU alocados para um projeto no banco de dados quando os processos já estão em execução, o número de compartilhamentos para esse projeto não será modificado neste estágio. O projeto deve ser reiniciado para a alteração ter efeito.
Se você desejar alterar temporariamente o número de compartilhamentos atribuídos a um projeto sem alterar os atributos do projeto no banco de dados de project, use o comando prctl. Por exemplo, para alterar o valor do controle de recurso project.cpu-shares de x-filesdo projeto para 3 enquanto os processos associados ao projeto estão em execução, digite o seguinte:
# prctl -r -n project.cpu-shares -v 3 -i project x-files |
Para obter mais informações, consulte a página do manual prctl(1).
Substitui o valor atual para o controle de recurso nomeado.
Especifica o nome do controle de recurso.
Especifique o valor para o controle de recurso.
Especifica o tipo de ID do próximo argumento.
Especifica o objeto da alteração. Neste exemplo, o projeto x-files é o objeto.
O projeto system com ID de projeto 0 inclui todos os daemons do sistema que são iniciados pelos scripts de inicialização no momento de inicialização. system pode ser visualizado como um projeto com um número de compartilhamentos ilimitado. Isso significa que system é sempre agendado primeiro, independentemente de quantos compartilhamentos foram dados para outros projetos. Se você não desejar que o projeto system tenha compartilhamentos ilimitados, pode especificar um número de compartilhamentos para este projeto no banco de dados de project.
Como dito anteriormente, processos que pertencem a projetos com compartilhamentos zero sempre recebem prioridade zero do sistema. Projetos com um ou mais compartilhamentos são executados com prioridades um e superior. Assim, projetos com compartilhamentos zero são somente agendados quando estão disponíveis recursos da CPU que não são solicitados por um projeto com compartilhamento não zero.
O número máximo de compartilhamentos que podem ser atribuídas a um projeto é 65535.