Após determinar o consumo de recursos das cargas de trabalho no sistema, como descrito no Capítulo 4Contabilidade estendida (visão geral), você pode colocar limites no uso de recursos. Limites impedem que cargas de trabalho consumam recursos em excesso. O recurso controles de recurso é o mecanismo de restrição usado para este propósito.
Este capítulo aborda os seguintes tópicos:
Para obter informações sobre como administrar controles de recursos, consulte o Capítulo 7Administração de controles de recursos (tarefas).
O seguinte conjunto de controles de recursos substitui os ajustáveis da comunicação entre processos (IPC) de sistema V /etc/system:
project.max-shm-ids
project.max-msg-ids
project.max-sem-ids
project.max-shm-memory
process.max-sem-nsems
process.max-sem-ops
process.max-msg-qbytes
Os seguintes controles de recursos de porta de evento foram adicionados:
project.max-device-locked-memory
project.max-port-ids
process.max-port-events
O seguinte controle de recursos criptográfico foi adicionado:
project.max-crypto-memory
Os seguintes controles de recursos extras foram adicionados:
project.max-lwps
project.max-tasks
project.max-contracts
Para obter mais informações, consulte Controles de recursos disponíveis.
Para obter uma lista completa dos novos recursos do Solaris 10 e uma descrição das versões do Solaris, consulte Novidades no Oracle Solaris 10 9/10.
No sistema operacional Solaris, o conceito de limite de recursos por processo foi estendido para as entidades de tarefas e projetos descritos no Capítulo 2Projetos e tarefas (visão geral). Essas melhorias são fornecidas pelos controles de recursos (rctls). Além disso, alocações que eram definidas através dos ajustáveis /etc/system agora são automáticas ou configuradas também através do mecanismo de controles de recursos.
Um controle de recursos é identificado pelo prefixo zone, project, task ou process. Controles de recursos podem ser observados em uma base do sistema geral. É possível atualizar valores de controle de recursos em um sistema em execução.
Para obter uma lista dos controles de recursos padrão disponíveis nesta versão, consulte Controles de recursos disponíveis Para obter informações sobre controles de recursos para região geral, consulte Propriedades de tipo de recursos.
Para obter uma lista dos controles de recursos padrão disponíveis nesta versão, consulte Controles de recursos disponíveis.
Sistemas do UNIX tradicionalmente fornecem uma função de limite de recursos (rlimit). A função rlimit permite que os administradores definam um ou mais limites numéricos da quantidade de recursos que um processo pode consumir. Esses limites incluem tempo de CPU usado por processo, tamanho de arquivo de núcleo por processo e tamanho de pilha máximo por processo. Tamanho de pilha é a quantidade de memória temporária alocada para o segmento de dados do processo.
A facilidade de controles de recursos fornece interfaces de compatibilidade para a facilidade de limites de recursos. Aplicativos existentes que usam limites de recursos continuam a ser executados inalterados. Esses aplicativos podem ser observados da mesma maneira que aplicativos que são modificados para tirarem proveito da facilidade de controles de recursos.
Processos podem se comunicar entre si usando um dos vários tipos de comunicação entre processos (IPC). IPC permite que a transferência ou a sincronização de informações ocorra entre processos. Antes da versão Solaris 10, os parâmetros ajustáveis de IPC eram definidos pela adição de uma entrada no arquivo /etc/system. A facilidade de controles de recursos agora fornece controles de recursos que definem o comportamento das facilidades de IPC do kernel. Esses controles de recursos substituem os ajustáveis /etc/system.
Parâmetros obsoletos podem ser incluídos no arquivo /etc/system neste sistema do Solaris. Se incluídos, os parâmetros são usados para inicializar os valores de controle de recursos padrão, como nas versões anteriores do Solaris. No entanto, o uso de parâmetros obsoletos não é recomendável.
Para observar quais objetos IPC estão contribuindo para o uso de um projeto, use o comando ipcs com a opção -J. Para visualizar um exemplo, consulte Como usar ipcs Para obter mais informações sobre o comando ipcs, consulte ipcs(1).
Para obter informações sobre o desempenho do sistema Solaris, consulte Oracle Solaris Tunable Parameters Reference Manual.
Controles de recursos fornecem um mecanismo para a restrição dos recursos do sistema. É possível impedir que processos, tarefas, projetos e regiões consumam quantidades de recursos de sistema especificados. Esse mecanismo conduz a um sistema mais gerenciável ao impedir o consumo excessivo de recursos.
Mecanismos de restrição podem ser usados para oferecer suporte a processos de planejamento de capacidade. Uma restrição encontrada pode fornecer informações sobre as necessidades de recurso de um aplicativo sem necessariamente negar o recurso ao aplicativo.
Controles de recursos também servem como um mecanismo de atributo simples para facilidades de gerenciamento de recursos. Por exemplo, o número de compartilhamentos de CPU disponibilizadas para um projeto na classe de agendamento fair share scheduler (FSS) é definido pelo controle de recursos project.cpu-shares. Uma vez que o controle atribui ao projeto um número fixo de compartilhamentos, as várias ações associadas a exceder um controle não são pertinentes. Neste contexto, o valor atual para o controle project.cpu-shares é considerado um atributo no projeto especificado.
Outro tipo de atributo de projeto é usado para regular o consumo de recursos da memória física por coleções de processos anexados a um projeto. Esses atributos têm o prefixo rcap, por exemplo, rcap.max-rss . Como um controle de recursos, este tipo de atributo é configurado no banco de dados de project. No entanto, enquanto os controles de recursos são aplicados sincronicamente pelo kernel, os limites de recurso são aplicados assincronicamente no nível de usuário pelo daemon de aplicação do limite de recursos, rcapd . Para obter informações sobre rcapd, consulte o Capítulo 10Controle da memória física usando o resource capping daemon (visão geral) e rcapd (1M).
O atributo project.pool é usado para especificar uma vinculação de grupo para um projeto. Para obter mais informações sobre grupos de recursos, consulte o Capítulo 12Grupos de recursos (visão geral).
A facilidade dos controles de recursos é configurada através do banco de dados de project . Consulte o Capítulo 2Projetos e tarefas (visão geral). Controles de recursos e outros atributos são definidos no campo final da entrada do banco de dados de project. Os valores associados a cada controle de recursos estão entre parênteses e aparecem como texto não formato separado por vírgulas. Os valores entre parênteses compreendem uma “cláusula de ação”. Cada cláusula de ação é composta de um nível de privilégio, um valor de limiar e uma ação que é associada ao limiar específico. Cada controle de recursos tem várias cláusulas de ação, que também são separadas por vírgulas. A entrada a seguir define um limite de processo leve por tarefa e um limite máximo de tempo de CPU por processo em uma entidade de projeto. O process.max-cpu-time envia para um processo um SIGTERM após 1 hora de execução do processo, e um SIGKILL, se o processo continuar a ser executado durante um total de 1 hora e 1 minuto. Consulte a Tabela 6–3.
development:101:Developers:::task.max-lwps=(privileged,10,deny); process.max-cpu-time=(basic,3600,signal=TERM),(priv,3660,signal=KILL) typed as one line |
Em sistemas com regiões ativadas, os controles de recursos de região geral são especificados na configuração da região com o uso de um formato ligeiramente diferente. Para obter mais informações, consulte Dados de configuração de região.
O comando rctladm permite que você faça interrogações de tempo de execução à facilidade de controles de recursos, assim como modificações, com escopo global. O comando prctl permite que você faça interrogações de tempo de execução à facilidade de controles de recursos, assim como modificações, com escopo local.
Para obter mais informações, consulte Ações globais e locais em valores de controle de recursos, rctladm(1M) e prctl(1).
Em um sistema com regiões instaladas, não é possível usar rctladm em uma região não global para modificar configurações. Você pode usar rctladm em uma região não global para visualizar o estado de registro global de cada controle de recursos.
Uma lista de controles de recursos padrão disponíveis nesta versão é mostrada na tabela abaixo.
A tabela descreve o recurso que é restringido por cada controle. A tabela também identifica as unidades padrão usadas pelo banco de dados de project para esse recurso. Há dois tipos de unidades padrão:
Quantidades representam uma quantidade limitada.
Índices representam um identificador válido máximo.
Assim, project.cpu-shares especifica o número de compartilhamentos a que o projeto tem direito. process.max-file-descriptor especifica o número de arquivo mais alto que pode ser atribuído a um processo pela chamada do sistema open(2).
Tabela 6–1 Controles de recursos padrão
Nome do controle |
Descrição |
Unidade padrão |
---|---|---|
project.cpu-cap |
Solaris 10 8/07: Limite absoluto da quantidade de recursos da CPU que pode ser consumida por um projeto. Um valor 100 significa 100% de uma CPU como a definição project.cpu-cap. Um valor 125 é 125% pois 100% corresponde a uma CPU completa no sistema durante o uso de caps de CPU. |
Quantidade (número de CPUs) |
project.cpu-shares |
Número de compartilhamentos de CPU concedidas para este projeto para uso com o fair share scheduler (consulte FSS(7)). |
Quantidade (compartilhamentos) |
project.max-crypto-memory |
A quantidade total de memória do kernel que pode ser usada por libpkcs11 para a aceleração criptográfica de hardware. Alocações para buffers de kernel e estruturas relacionadas a sessão são carregadas contra este controle de recursos. |
Tamanho (bytes) |
project.max-locked-memory |
Quantidade total de memória física bloqueada permitida. Se priv_proc_lock_memory for atribuído a um usuário, configure também este controle de recursos para impedir que o usuário bloqueie a memória inteira. Solaris 10 8/07: Observe que na versão Solaris 10 8/07, este controle de recursos substituiu project.max-device-locked-memory, que foi removido. |
Tamanho (bytes) |
project.max-port-ids |
Número máximo permitido de portas de evento. |
Quantidade (número de portas de evento) |
project.max-sem-ids |
Número máximo de IDs de semáforo permitido para este projeto. |
Quantidade (IDs de semáforo) |
project.max-shm-ids |
Número máximo de IDs de memória compartilhada permitido para este projeto. |
Quantidade (IDs de memória compartilhada) |
project.max-msg-ids |
Número máximo de IDs de fila de mensagens permitido para este projeto. |
Quantidade (IDs de fila de mensagens) |
project.max-shm-memory |
Quantidade total de memória compartilhada V de sistema para este projeto. |
Tamanho (bytes) |
project.max-lwps |
Número máximo de LWPs disponíveis simultaneamente para este projeto. |
Quantidade (LWPs) |
project.max-tasks |
Número máximo de tarefas permitidas neste projeto. |
Quantidade (número de tarefas) |
project.max-contracts |
Número máximo de contratos permitidos neste projeto. |
Quantidade (contratos) |
task.max-cpu-time |
Tempo máximo de CPU disponível para estes processos de tarefa. |
Tempo (segundos) |
task.max-lwps |
Número máximo de LWPs disponíveis simultaneamente para estes processos de tarefa. |
Quantidade (LWPs) |
process.max-cpu-time |
Tempo máximo de CPU disponível para este processo. |
Tempo (segundos) |
process.max-file-descriptor |
Índice de descritor de arquivo máximo disponível para este processo. |
Índice (descritor de arquivo máximo) |
process.max-file-size |
Deslocamento de arquivo máximo disponível para gravar por este processo. |
Tamanho (bytes) |
process.max-core-size |
Tamanho máximo de um arquivo de núcleo criado por este processo. |
Tamanho (bytes) |
process.max-data-size |
Memória acumulada máxima disponível para este processo. |
Tamanho (bytes) |
process.max-stack-size |
Segmento máximo de memória de pilha disponível para este processo. |
Tamanho (bytes) |
process.max-address-space |
Quantidade máxima de espaço de endereço, como soma de tamanhos de segmentos, disponível para este processo. |
Tamanho (bytes) |
process.max-port-events |
Número máximo de eventos permitido por porta de evento. |
Quantidade (número de eventos) |
process.max-sem-nsems |
Número máximo de semáforos permitido por conjunto de semáforos. |
Quantidade (semáforos por conjunto) |
process.max-sem-ops |
Número máximo de operações de semáforo permitido por chamada de semop (valor copiado do controle de recursos no tempo de semget()). |
Quantidade (número de operações) |
process.max-msg-qbytes |
Número máximo de bytes de mensagens em uma fila de mensagens (valor copiado do controle de recursos no tempo de msgget()). |
Tamanho (bytes) |
process.max-msg-messages |
Número máximo de mensagens em uma fila de mensagens (valor copiado do controle de recursos no tempo de msgget()). |
Quantidade (número de mensagens) |
Você pode exibir os valores padrão para controles de recursos em um sistema que não tem quaisquer controles de recursos definidos ou alterados. Esse sistema contém entradas não padrão em /etc/system ou no banco de dados de project . Para exibir valores, use o comando prctl.
Os controles de recursos gerais de região limitam o uso total de recursos de todas as entidades de processamento dentro de uma região. Os controles de recursos gerais de região também podem ser definidos com o uso de nomes de propriedade globais, como descrito em Definição de controles de recursos de região geral e Como configurar a região.
Tabela 6–2 Controles de recursos gerais de região
Nome do controle |
Descrição |
Unidade padrão |
---|---|---|
zone.cpu-cap |
Solaris 10 5/08: Limite absoluto da quantidade de recursos da CPU que pode ser consumida por uma região não global. Um valor 100 significa 100% de uma CPU como a definição project.cpu-cap. Um valor 125 é 125% pois 100% corresponde a uma CPU completa no sistema durante o uso de caps de CPU. |
Quantidade (número de CPUs) |
zone.cpu-shares |
Número de compartilhamentos de CPU do fair share scheduler (FSS) para esta região |
Quantidade (compartilhamentos) |
zone.max-locked-memory |
Quantidade total de memória física bloqueada disponível para uma região. Quando priv_proc_lock_memory está atribuído a uma região, configure também este controle de recursos para impedir que a região bloqueie a memória inteira. |
Tamanho (bytes) |
zone.max-lwps |
Número máximo de LWPs disponíveis simultaneamente para esta região |
Quantidade (LWPs) |
zone.max-msg-ids |
Número máximo de IDs de fila de mensagens permitido para esta região |
Quantidade (IDs de fila de mensagens) |
zone.max-sem-ids |
Número máximo de IDs de semáforo permitido para esta região |
Quantidade (IDs de semáforo) |
zone.max-shm-ids |
Número máximo de IDs de memória compartilhada permitido para esta região |
Quantidade (IDs de memória compartilhada) |
zone.max-shm-memory |
Quantidade total de memória compartilhada V de sistema para esta região |
Tamanho (bytes) |
zone.max-swap |
Quantidade total de permuta que pode ser consumida por mapeamentos de espaço de endereço de processamento de usuário e por montagens tmpfs para esta região. |
Tamanho (bytes) |
Para obter informações sobre configuração de controles de recursos gerais de região, consulte Propriedades de tipo de recursos e Como configurar a região. Para usar controles de recursos gerais de região em regiões com marca lx, consulte Como configurar, verificar e comprometer a região com marca lx..
Observe que é possível aplicar um controle de recursos de região geral à região global. Consulte o Capítulo 17Configuração de região não global (visão geral) e Uso do fair share scheduler em um sistema do Solaris com regiões instaladas para obter informações adicionais.
Sinalizadores globais que identificam tipos de controle de recursos são definidos para todos os controles de recursos. Os sinalizadores são usados pelo sistema para comunicar informações básicas de tipo a aplicativos como o comando prctl. Os aplicativos usam as informações para determinar o seguinte:
As seqüências de unidades que são apropriadas para cada controle de recursos
A escala correta a ser usada ao interpretar valores em escala
Os seguintes sinalizadores globais estão disponíveis:
Sinalizador global |
Seqüência de tipo de controle de recursos |
Modificador |
Escala |
---|---|---|---|
RCTL_GLOBAL_BYTES |
bytes |
C |
1 |
|
KB |
210 |
|
|
MB |
220 |
|
|
GB |
230 |
|
|
TB |
240 |
|
|
PB |
250 |
|
|
EB |
260 |
|
RCTL_GLOBAL_SECONDS |
segundos |
s |
1 |
|
Ks |
103 |
|
|
Ms |
106 |
|
|
Gs |
109 |
|
|
Ts |
1012 |
|
|
Ps |
1015 |
|
|
Es |
1018 |
|
RCTL_GLOBAL_COUNT |
contagem |
nenhum |
1 |
|
K |
103 |
|
|
R |
106 |
|
|
G |
109 |
|
|
T |
1012 |
|
|
P |
1015 |
|
|
E |
1018 |
Valores em escala podem ser usados com controles de recursos. O exemplo abaixo mostra um valor de limiar em escala:
task.max-lwps=(priv,1K,deny)
Modificadores de unidades são aceitos pelos comandos prctl, projadd e projmod. Não é possível usar modificadores de unidades no próprio banco de dados de project.
Um valor de limiar em um controle de recursos constitui um ponto de aplicação em que ações locais podem ser acionadas, ou ações globais como registro podem ocorrer.
Cada valor de limiar em um controle de recursos deve estar associado a um nível de privilégio. P nível de privilégio deve ser um dos três tipos seguintes.
Básico, que pode ser modificado pelo proprietário do processo de chamada
Privilegiado, que pode ser modificado somente pelos chamadores (superusuários) privilegiados
Sistema, que é fixo durante a instância do sistema operacional
Um controle de recursos com certeza tem um valor de sistema, que é definido pelo sistema ou provedor de recursos. O valor de sistema representa a quantidade de recursos que a implementação atual do sistema operacional é capaz de fornecer.
Qualquer número de valores privilegiados podem ser definidos e somente um valor básico é permitido. Às operações executadas sem a especificação de um valor de privilégio é atribuído um privilégio básico por padrão.
O nível de privilégio para um valor de controle de recursos é definido no campo de privilégio do bloco do controle de recursos como RCTL_BASIC, RCTL_PRIVILEGED, ou RCTL_SYSTEM. Para obter mais informações, consulte setrctl(2) Você pode usar o comando prctl para modificar valores associados aos níveis básico e privilegiado.
Há duas categorias de ações em valores de controle de recursos: global e local.
Ações globais aplicam valores de controle de recursos para cada controle de recurso no sistema. Você pode usar o comando rctladm descrito na página do manual rctladm(1M) para executar as seguintes ações:
Exibir o estado global dos controles de recursos de sistema ativo
Definir ações de registro global
Você pode desativar ou ativar a ação de registro global nos controles de recursos. Você pode definir a ação syslog para um grau específico atribuindo um nível de severidade, syslog=level. As configurações possíveis para level são as seguintes:
depuração
info
notice
warning
err
crit
alert
emerg
Por padrão, não há registro global das violações do controle de registro. No Solaris 10 versão 5/08, o nível n/a foi adicionado para controles de recurso em que nenhuma ação global pode ser configurada.
Ações locais são tomadas em um processo que tenta exceder o valor de controle. Para cada valor de limiar colocado em um controle de recursos, você pode associar uma ou mais ações. Há três tipos de ações locais: none, deny e signal=. Estas três ações são usadas como a seguir:
Nenhuma ação é tomada sobre solicitações de recurso para uma quantidade que seja maior do que o limiar. Esta ação é útil para monitorar o uso de recursos sem afetar o progresso dos aplicativos. Você também pode ativar uma mensagem global que é exibida quando o controle de recursos é excedido, embora o processo que exceda o limiar não é afetado.
Você pode negar solicitações de recursos para uma quantidade que seja maior do que o limiar. Por exemplo, um controle de recursos task.max-lwps com ação deny faz com que uma chamada de sistema fork falhe, se o novo processo exceder o valor de controle. Consulte a página do manual fork(2).
Você pode ativar uma ação de mensagem de sinal global quando o controle de recursos é excedido. Um sinal é enviado para o processo quando o valor do limiar é excedido. Sinais adicionais não são enviados se o processo consumir recursos adicionais. Os sinais disponíveis estão listados na Tabela 6–3.
Nem todas as ações podem ser aplicadas a cada controle de recursos. Por exemplo, um processo não pode exceder o número de compartilhamentos de CPU atribuídas ao projeto do qual é membro. Assim, uma ação de negação não é permitida no controle de recursos project.cpu-shares.
Devido à implementação de restrições, as propriedades globais de cada controle podem restringir o intervalo de ações disponíveis que podem ser definidas no valor de limiar. (Consulte a página do manual rctladm(1M) Uma lista de ações de sinal disponíveis é apresentada na tabela abaixo. Para obter informações adicionais sobre sinais, consulte a página do manual signal(3HEAD).
Tabela 6–3 Sinais disponíveis para valores de controle de recursos
Sinal |
Descrição |
Notas |
---|---|---|
SIGABRT |
Terminar o processo. |
|
SIGHUP |
Enviar um sinal de desligar. Ocorre quando o transportador incide sobre uma linha aberta. Sinal enviado para o grupo de processos que controlam o terminal. |
|
SIGTERM |
Terminar o processo. Sinal de término enviado pelo software. |
|
SIGKILL |
Terminar o processo e eliminar o programa. |
|
SIGSTOP |
Parar o processo. Sinal de controle de trabalho. |
|
SIGXRES |
Limite de controle de recursos excedido. Gerado pela facilidade de controle de recursos. |
|
SIGXFSZ |
Terminar o processo. Limite de tamanho de arquivo excedido. |
Disponível somente para controles de recursos com a propriedade RCTL_GLOBAL_FILE_SIZE (process.max-file-size). Para obter mais informações, consulte rctlblk_set_value(3C). |
SIGXCPU |
Terminar o processo. Limite de tempo de CPU excedido. |
Disponível somente para controles de recursos com a propriedade RCTL_GLOBAL_CPUTIME (process.max-cpu-time). Para obter mais informações, consulte rctlblk_set_value(3C). |
Cada controle de recursos no sistema tem um determinado conjunto de propriedades associadas. Esse conjunto de propriedades é definido como um conjunto de sinalizadores, que estão associados a todas as instâncias controladas desse recurso. Sinalizadores globais podem ser modificados, mas os sinalizadores podem ser recuperados usando-se rctladm ou a chamada do sistema getrctl.
Sinalizadores locais definem o comportamento e a configuração padrão para um valor de limiar específico desse controle de recursos em um processo específico ou um processo coletivo. Os sinalizadores locais para um valor de limiar não afetam o comportamento de outros valores de limiar definidos para o mesmo controle de recursos. No entanto, os sinalizadores globais afetam o comportamento de cada valor associado a um controle específico. Sinalizadores locais podem ser modificados, dentro de restrições fornecidas pelos sinalizadores globais correspondentes, pelo comando prctl ou pela chamada do sistema setrctl. Consulte setrctl(2).
Para obter uma lista completa de sinalizadores locais, sinalizadores globais e suas definições, consulte rctlblk_set_value(3C).
Para determinar o comportamento do sistema quando um valor de limiar para um controle de recursos específico for atingido, use rctladm para exibir os sinalizadores globais para o controle de recursos. Por exemplo, para exibir os valores para process.max-cpu-time, digite o que se segue:
$ rctladm process.max-cpu-time process.max-cpu-time syslog=off [ lowerable no-deny cpu-time inf seconds ] |
Os sinalizadores globais indicam o seguinte.
Privilégios de superusuário não são necessários para diminuir os valores privilegiados para este controle.
Mesmo quando valores de limiar são excedidos, o acesso a esse recurso nunca é negado.
SIGXCPU está disponível para ser enviado quando valores de limiar desse recurso são atingidos.
O valor de tempo para o controle de recursos.
Os valores de controle de recursos com o tipo de privilégio basic não podem ser definidos. Somente valores de controle de recursos privilegiados são permitidos.
Uma ação de sinal local não pode ser definido em valores de controle de recursos.
A ação de mensagem global syslog não pode ser definida para esse controle de recursos.
Sempre negue a solicitação para o recurso quando os valores de limite sejam excedidos.
Um valor de contagem (inteiro) de controle de recursos.
Unidade de tamanho do controle de recursos.
Use o comando prctl para exibir valores e ações locais e para o controle de recursos.
$ prctl -n process.max-cpu-time $$ process 353939: -ksh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-cpu-time privileged 18.4Es inf signal=XCPU - system 18.4Es inf none |
O sinalizar max (RCTL_LOCAL_MAXIMAL) é definido para os dois valores de limiar e o sinalizador inf (RCTL_GLOBAL_INFINITE) é definido para este controle de recursos. Um valor inf tem uma quantidade infinita. O valor nunca é aplicado. Portanto, como configuradas, as duas quantidades de limiar representam valores infinitos que nunca são excedidos.
Mais de um controle de recursos pode existir em um recurso. Um controle de recursos pode existe em cada nível de confinamento no modelo do processo. Se controles de recurso estiverem ativos no mesmo recurso em diferentes níveis de recipiente, o menor controle de recipiente é aplicado primeiro. Assim, uma ação será tomada em process.max-cpu-time antes de task.max-cpu-time se os dois controles forem encontrados simultaneamente.
Com freqüência, o consumo de recursos de processos é desconhecido. Para obter mais informações, tente usar as ações do controle de recursos global que estão disponíveis com o comando rctladm. Use rctladm para estabelecer uma ação syslog em um controle de recursos. Em seguida, se alguma entidade gerenciada por esse controle de recursos encontrar um valor de limiar, uma mensagem de sistema será registrada no nível de registro configurado. Para obter mais informações, consulte o Capítulo 7Administração de controles de recursos (tarefas) e a página do manual rctladm(1M).
Cada controle de recursos listado na Tabela 6–1 pode ser atribuído a um projeto no login ou quando newtask, su, ou os outros iniciadores que reconhecem projeto at, batch ou cron são invocados. Cada comando que é iniciado é inicializado em uma tarefa separada com o projeto padrão do usuário que o invoca. Para obter mais informações, consulte as páginas do manual login(1), newtask(1), at(1), cron(1M) e su(1M).
Atualizações de entradas no banco de dados de project, seja para o arquivo /etc/project ou para uma representação do banco de dados em um serviço de nomes de rede network, não são aplicadas aos projetos atualmente ativos. As atualizações são aplicadas quando uma nova tarefa se une ao projeto através de login ou de newtask.
Valores alterados no banco de dados de project somente se tornam efetivas para novas tarefas que são iniciadas em um projeto. No entanto, você pode usar os comandos rctladm e prctl para atualizar controles de recursos em um sistema em execução.
O comando rctladm afeta o estado de registro global de cada controle de recursos com base em um sistema geral. Este comando pode ser usado para visualizar o estado global e para configurar o nível de registro syslog quando controles são excedidos.
Você pode visualizar e alterar temporariamente valores de controle de recursos e ações em uma base por processo, por tarefa ou por projeto usando o comando prctl. Um ID de projeto, tarefa ou processo é dado como entrada, e o comando opera sobre o controle de recursos no nível em que o controle é definido.
Quaisquer modificações de valores e ações têm efeito imediatamente. No entanto, essas modificações se aplicam somente ao processo, à tarefa ou ao projeto atuais. As alterações não registradas no banco de dados de project. Se o sistema for reiniciado, as modificações serão perdidas. Alterações permanentes em controles de recursos devem ser feitas no banco de dados de project.
Todas as configurações de controle que podem ser modificadas no banco de dados de project também podem ser modificadas com o comando prctl. Valores básicos e privilegiados podem ser adicionados ou excluídos. Suas ações também podem ser modificadas. Por padrão, o tipo básico é considerado para todas as operações definidas, mas processos e usuários com privilégios de superusuário também pode modificar controles de recurso privilegiados. Controles de recurso de sistema no podem ser alterados.
Os comandos que são usados com controles de recursos são mostrados na tabela abaixo.
Referência de comandos |
Descrição |
---|---|
Permite que você observe quais objetos IPC estão contribuindo para o uso de um projeto |
|
Permite que você faça interrogações de tempo de execução à facilidade de controles de recursos, assim como modificações, com escopo local. |
|
Permite que você faça interrogações de tempo de execução à facilidade de controles de recursos, assim como modificações, com escopo global |
A página do manual resource_controls(5) descreve controles de recursos disponíveis através do banco de dados de projeto, incluindo unidades e fatores de escala.