JavaScript is required to for searching.
Ignorar Links de Navegao
Sair do Modo de Exibio de Impresso
Guia de administração do sistema: gerenciamento de recursos do Oracle Solaris Containers e Oracle Solaris Zones     Oracle Solaris 10 1/13 Information Library (Português (Brasil))
search filter icon
search icon

Informação sobre o documento

Prefácio

Parte I Gerenciamento de Recursos

1.  Introdução ao gerenciador de recursos do Solaris 10

2.  Projetos e tarefas (visão geral)

3.  Administração de projetos e tarefas

4.  Contabilidade estendida (Visão geral)

5.  Administração da contabilidade estendida (tarefas)

6.  Controles de Recursos (Visão Geral)

O que há de novo nos controles de recursos para Solaris 10?

Conceitos de Controles de Recursos

Limites de recursos e controles de recursos

Comunicação entre processos e controles de recursos

Mecanismos de restrição do controle de recursos

Mecanismos de atributo de projeto

Configuração de controles de recursos e atributos

Controles de recursos disponíveis

Controles de recursos de zona

Suporte a Unidades

Valores de controle de recursos e níveis de privilégio

Ações globais e locais em valores de controle de recursos

Ações globais em valores de controle de recursos

Ações locais em valores de controle de recursos

Sinalizadores e propriedades do controle de recursos

Aplicação de controle de recursos

Monitoração global de eventos de controle de recursos

Aplicação de controles de recursos

Atualização temporária de valores do controle de recursos em um sistema em execução

Atualização de status de registro

Atualização de controles de recursos

Comandos usados com controles de recursos

7.  Administração de controles de recursos (Tarefas)

8.  Fair share scheduler (visão geral)

9.  Administração do fair share scheduler (tarefas)

10.  Controle da memória física usando o resource capping daemon (visão geral)

11.  Administração do resource capping daemon (tarefas)

12.  Pools de recursos (Visão geral)

13.  Criação e administração de pools de recursos (Tarefas)

14.  Exemplo de configuração de gerenciamento de recurso

15.  Funcionalidade do controle de recursos no Console de gerenciamento Solaris

Parte II Zonas

16.  Introdução ao Solaris Zones

17.  Configuração de zona não global (Visão geral)

18.  Planejamento e configuração de zonas não globais (Tarefas)

19.  Sobre instalação, parada, clonagem e desinstalação de zonas não globais (Visão geral)

20.  Instalação, inicialização, parada, desinstalação e clonagem de zonas não globais (Tarefas)

21.  Login na zona não global (Visão geral)

22.  Login em zonas não globais (Tarefas)

23.  Movendo e migrando zonas não globais (Tarefas)

24.  Oracle Solaris 10 9/10: migrando de um sistema Oracle Solaris físico para uma zona (Tarefas)

25.  Sobre pacotes e patches em um sistema do Oracle Solaris com zonas instaladas (Visão geral)

26.  Adicionando e removendo pacotes e patches em um sistema Oracle Solaris com zonas instaladas (Tarefas)

27.  Administração do Oracle Solaris Zones (Visão geral)

28.  Administração do Oracle Solaris Zones (Tarefas)

29.  Atualização de um sistema Oracle Solaris 10 com zonas não globais instaladas

30.  Soluções diversas de problemas do Oracle Solaris Zones

Parte III 1x}Zonas não nativas

31.  Sobre zonas não nativas e zonas não nativas do Linux

32.  Planejamento da configuração da zona não nativa lx (Visão geral)

33.  Configuração de zonas não nativas lx (Tarefas)

34.  Sobre instalação, inicialização, parada, clonagem e desinstalação de zonas não nativas lx (Visão geral)

35.  Instalação, inicialização, parada, desinstalação e clonagem de zonas não nativas (branded) lx (Tarefas)

36.  Login em zonas não nativas lx (Tarefas)

37.  Movendo e migrando zonas não nativas lx (Tarefas)

38.  Administração e execução de aplicativos em zonas não nativas lx (Tarefas)

Glossário

Índice

Configuração de controles de recursos e atributos

O recurso de controles de recursos é configurado através do banco de dados project. Consulte o Capítulo 2, Projetos 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

Observação - Em sistemas com zonas ativadas, os controles de recursos de zona são especificados na configuração da zona com o uso de um formato ligeiramente diferente. Para obter mais informações, consulte Dados de configuração de zona.


O comando rctladm permite que você faça interrogações de tempo de execução ao recurso 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 ao recurso 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).


Observação - Em um sistema com zonas instaladas, não é possível usar rctladm em uma zona não global para modificar configurações. Você pode usar rctladm em uma zona não global para visualizar o estado de registro global de cada controle de recursos.


Controles de recursos disponíveis

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:

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.

Controles de recursos de zona

Os controles de recursos de zona limitam o uso total de recursos de todas as entidades de processamento dentro de uma zona. Os controles de recursos de zona também podem ser definidos com o uso de nomes de propriedade globais, como descrito em Definição de controles de recursos de zonas e Como configurar a zona.

Tabela 6-2 Controles de recursos de zona

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 zona 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 zona
Quantidade (compartilhamentos)
zone.max-locked-memory
Quantidade total de memória física bloqueada disponível para uma zona.

Quando priv_proc_lock_memory está atribuído a uma zona, configure também este controle de recursos para impedir que a zona bloqueie a memória inteira.

Tamanho (bytes)
zone.max-lwps
Número máximo de LWPs disponíveis simultaneamente para esta zona
Quantidade (LWPs)
zone.max-msg-ids
Número máximo de IDs de fila de mensagens permitido para esta zona
Quantidade (IDs de fila de mensagens)
zone.max-sem-ids
Número máximo de IDs de semáforo permitido para esta zona
Quantidade (IDs de semáforo)
zone.max-shm-ids
Número máximo de IDs de memória compartilhada permitido para esta zona
Quantidade (IDs de memória compartilhada)
zone.max-shm-memory
Quantidade total de memória compartilhada V de sistema para esta zona
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 zona.
Tamanho (bytes)

Para obter informações sobre configuração de controles de recursos gerais de zona, consulte Propriedades de tipo de recursos e Como configurar a zona. Para usar controles de recursos gerais de zonas em zonas não nativas lx, consulte Como configurar, verificar e comprometer a zona não nativa lx..

Observe que é possível aplicar um controle de recursos de zona geral à zona global. Consulte o Capítulo 17, Configuração de zona não global (Visão geral) e Usando o Fair Share Scheduler em um sistema Oracle Solaris com zonas instaladas para obter informações adicionais.

Suporte a Unidades

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:

Os seguintes sinalizadores globais estão disponíveis:

Sinalizador global
Sequê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)

Observação - 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.


Valores de controle de recursos e níveis de privilégio

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.

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.

Ações globais e locais em valores de controle de recursos

Há duas categorias de ações em valores de controle de recursos: global e local.

Ações globais em valores de controle de recursos

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 man rctladm(1M) para executar as seguintes ações:

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:

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 em valores de controle de recursos

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:

none

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.

deny

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 man fork(2).

signal=

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 man 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 man 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 pelo recurso 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).

Sinalizadores e propriedades do controle de recursos

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.

lowerable

Privilégios de superusuário não são necessários para diminuir os valores privilegiados para este controle.

no-deny

Mesmo quando valores de limiar são excedidos, o acesso a esse recurso nunca é negado.

cpu-time

SIGXCPU está disponível para ser enviado quando valores de limiar desse recurso são atingidos.

seconds

O valor de tempo para o controle de recursos.

no-basic

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.

no-signal

Uma ação de sinal local não pode ser definido em valores de controle de recursos.

no-syslog

A ação de mensagem global syslog não pode ser definida para esse controle de recursos.

deny

Sempre negue a solicitação para o recurso quando os valores de limite sejam excedidos.

count

Um valor de contagem (inteiro) de controle de recursos.

bytes

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.

Aplicação de controle de recursos

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.

Figura 6-1 Processos coletivos, relacionamentos de recipiente e suas configurações de controle de recursos

image:O diagrama mostra a aplicação de cada controle de recursos no nível de confinamento.

Monitoração global de eventos de controle de recursos

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 7, Administração de controles de recursos (Tarefas) e a página man rctladm(1M).