Este capítulo descreve como administrar a facilidade de controles de recursos.
Para uma visão geral da facilidade de controles de registros, consulte o Capítulo 6Controles de recursos (visão geral).
Tarefa |
Descrição |
Para instruções |
---|---|---|
Defina controles de recursos. |
Defina controles de recursos para um projeto no arquivo /etc/project. | |
Obtenha ou revise os valores de controle de recurso para processos, tarefas ou projetos ativos com escopo local. |
Faça interrogações de tempo de execução, ou modificações, aos controles de recursos associados com um processo, tarefa ou projeto ativo no sistema. | |
Em um sistema em execução, visualize ou atualize o estado global de controles de recursos. |
Visualize o estado de registro global de cada controle de recurso em uma base de sistema geral. Defina também o nível de registro de syslog quando os controles forem excedidos. | |
Status de relatório das facilidades de comunicação entre processos (IPC). |
Exiba informações sobre as facilidades ativas de comunicação entre processos (IPC). Observe quais objetos IPC estão contribuindo para o uso de um projeto. | |
Determine se há capacidade de CPU suficiente alocada para um servidor Web. |
Defina uma ação global em um controle de recurso. Esta ação permite que você receba aviso de qualquer entidade cujo valor de controle de recurso tem uma definição muito baixa. |
Como determinar se há alocação de capacidade de CPU suficiente para um servidor Web |
Este procedimento adiciona um projeto nomeado x-files ao arquivo /etc/project e define um número máximo de LWPs para uma tarefa criada no projeto.
Torne-se superusuário ou assuma uma função equivalente.
Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .
Use o comando projadd com a opção -K para criar um projeto nomeado x-files. Defina o número máximo de LWPs para cada tarefa criada no projeto como 3 .
# projadd -K 'task.max-lwps=(privileged,3,deny)' x-files |
Visualize a entrada no arquivo /etc/project usando um dos seguintes métodos:
Tipo:
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: . . . x-files projid : 100 comment: "" users : (none) groups : (none) attribs: task.max-lwps=(privileged,3,deny) |
Tipo:
# cat /etc/project system:0:System::: . . . x-files:100::::task.max-lwps=(privileged,3,deny) |
Após implementar as etapas neste procedimento, quando um superusuário cria uma nova tarefa no projeto x-files unindo o projeto a newtask , o superusuário não poderá criar mais do que três LWPs enquanto estiver em execução nesta tarefa. Isso é mostrado na sessão de amostra anotada a seguir.
# newtask -p x-files csh # prctl -n task.max-lwps $$ process: 111107: csh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT task.max-lwps privileged 3 - deny - system 2.15G max deny - # id -p uid=0(root) gid=1(other) projid=100(x-files) # ps -o project,taskid -p $$ PROJECT TASKID x-files 73 # csh /* creates second LWP */ # csh /* creates third LWP */ # csh /* cannot create more LWPs */ Vfork failed # |
O arquivo /etc/project pode conter configurações para múltiplos controles de recursos para cada projeto, assim como múltiplos valores de limiar para cada controle. Valores de limiar são definidos em cláusulas de ação, que são separadas por vírgulas para múltiplos valores.
Torne-se superusuário ou assuma uma função equivalente.
Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .
Use o comando projmod com as opções -s e -K para definir controles de recursos no projeto x-files:
# projmod -s -K 'task.max-lwps=(basic,10,none),(privileged,500,deny); process.max-file-descriptor=(basic,128,deny)' x-filesone line in file |
Os seguintes controles são definidos:
Um controle basic sem ação no máximo de LWPs por tarefa.
Um controle deny privilegiado no máximo de LWPs por tarefa.. Este controle faz falhar qualquer criação de LWP que exceda o máximo, como mostrado no exemplo anterior Como definir o número máximo de LWPs para cada tarefa em um projeto.
Um limite nos descritores de arquivo máximos por processo no nível basic, que força a falha de qualquer chamada openque exceda o máximo.
Visualize a entrada no arquivo usando um dos seguintes métodos:
Tipo:
# projects -l . . . x-files projid : 100 comment: "" users : (none) groups : (none) attribs: process.max-file-descriptor=(basic,128,deny) task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file |
Tipo:
# cat etc/project . . . x-files:100::::process.max-file-descriptor=(basic,128,deny); task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file |
Use o comando prctl para fazer interrogações de tempo de execução, ou modificações, aos controles de recursos associados a um processo, tarefa ou projeto ativo no sistema. Para obter mais informações, consulte a página do manual prctl(1).
Este procedimento deve ser usado em um sistema no qual nenhum controle de recurso tenha sido definido ou alterado. Pode haver somente entradas não padrão no arquivo /etc/system ou no banco de dados de project.
Use o comando prctl em qualquer processo, como o shell atual em execução.
# prctl $$ process: 100337: -sh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-port-events privileged 65.5K - deny - system 2.15G max deny - process.crypto-buffer-limit system 16.0EB max deny - process.max-crypto-sessions system 18.4E max deny - process.add-crypto-sessions privileged 100 - deny - system 18.4E max deny - process.min-crypto-sessions privileged 20 - deny - system 18.4E max deny - process.max-msg-messages privileged 8.19K - deny - system 4.29G max deny - process.max-msg-qbytes privileged 64.0KB - deny - system 16.0EB max deny - process.max-sem-ops privileged 512 - deny - system 2.15G max deny - process.max-sem-nsems privileged 512 - deny - system 32.8K max deny - process.max-address-space privileged 16.0EB max deny - system 16.0EB max deny - process.max-file-descriptor basic 256 - deny 100337 privileged 65.5K - deny - system 2.15G max deny - process.max-core-size privileged 8.00EB max deny - system 8.00EB max deny - process.max-stack-size basic 8.00MB - deny 100337 privileged 8.00EB - deny - system 8.00EB max deny - process.max-data-size privileged 16.0EB max deny - system 16.0EB max deny - process.max-file-size privileged 8.00EB max deny,signal=XFSZ - system 8.00EB max deny - process.max-cpu-time privileged 18.4Es inf signal=XCPU - system 18.4Es inf none - task.max-cpu-time system 18.4Es inf none - task.max-lwps system 2.15G max deny - project.max-contracts privileged 10.0K - deny - system 2.15G max deny - project.max-device-locked-memory privileged 499MB - deny - system 16.0EB max deny - project.max-port-ids privileged 8.19K - deny - system 65.5K max deny - project.max-shm-memory privileged 1.95GB - deny - system 16.0EB max deny - project.max-shm-ids privileged 128 - deny - system 16.8M max deny - project.max-msg-ids privileged 128 - deny - system 16.8M max deny - project.max-sem-ids privileged 128 - deny - system 16.8M max deny - project.max-tasks system 2.15G max deny - project.max-lwps system 2.15G max deny - project.cpu-shares privileged 1 - none - system 65.5K max none - zone.max-lwps system 2.15G max deny - zone.cpu-shares privileged 1 - none - system 65.5K max none - |
Exiba o descritor de arquivo máximo para o shell atual em execução.
# prctl -n process.max-file-descriptor $$ process: 110453: -sh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-file-descriptor basic 256 - deny 110453 privileged 65.5K - deny - system 2.15G max deny |
Este procedimento de exemplo usa o comando prctl para adicionar temporariamente um novo valor privilegiado para negar o uso de mais do que três LWPs por projeto para o projeto x-files. O resultado é comparável ao resultado em Como definir o número máximo de LWPs para cada tarefa em um projeto.
Torne-se superusuário ou assuma uma função equivalente.
Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .
Use newtask para unir o projeto x-files.
# newtask -p x-files |
Use o comando id com a opção - p para verificar se o projeto correto foi unido.
# id -p uid=0(root) gid=1(other) projid=101(x-files) |
Adicione um novo valor privilegiado para project.max-lwps que limita o número de LWPs a três.
# prctl -n project.max-lwps -t privileged -v 3 -e deny -i project x-files |
Verifique o resultado.
# prctl -n project.max-lwps -i project x-files process: 111108: csh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.max-lwps privileged 3 - deny - system 2.15G max deny - |
Torne-se superusuário ou assuma uma função equivalente.
Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .
Use o comando prctl com a opção -r para alterar o valor mais baixo do controle de recurso process.max-file-descriptor .
# prctl -n process.max-file-descriptor -r -v 128 $$ |
Torne-se superusuário ou assuma uma função equivalente.
Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .
Exiba o valor de project.cpu-shares no projeto group.staff.
# prctl -n project.cpu-shares -i project group.staff project: 2: group.staff NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.cpu-shares privileged 1 - none - system 65.5K max none |
Substitua o valor atual 1 de project.cpu-shares pelo valor 10.
# prctl -n project.cpu-shares -v 10 -r -i project group.staff |
Exiba o valor de project.cpu-shares no projeto group.staff.
# prctl -n project.cpu-shares -i project group.staff project: 2: group.staff NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.cpu-shares privileged 10 - none - system 65.5K max none |
Use o comando rctladm para fazer a interrogação de tempo de execução, ou modificações, ao estado global da facilidade de controles de recursos. Para obter mais informações, consulte a página do manual rctladm(1M).
Por exemplo, você pode usar rctladm com a opção -e para ativar o atributo global syslog de um controle de recurso. Quando o controle é excedido, uma notificação é registrada no nível de syslog especificado. Para ativar o atributo global syslog de process.max-file-descriptor , digite o seguinte:
# rctladm -e syslog process.max-file-descriptor |
Quando usado sem argumentos, o comando rctladm exibe os sinalizadores globais, incluindo o sinalizador de tipo global, para cada controle de recurso.
# rctladm process.max-port-events syslog=off [ deny count ] process.max-msg-messages syslog=off [ deny count ] process.max-msg-qbytes syslog=off [ deny bytes ] process.max-sem-ops syslog=off [ deny count ] process.max-sem-nsems syslog=off [ deny count ] process.max-address-space syslog=off [ lowerable deny no-signal bytes ] process.max-file-descriptor syslog=off [ lowerable deny count ] process.max-core-size syslog=off [ lowerable deny no-signal bytes ] process.max-stack-size syslog=off [ lowerable deny no-signal bytes ] . . . |
Use o utilitário ipcs para exibir informações sobre as facilidades ativas da comunicação entre processos (IPC). Para obter mais informações, consulte a página do manual ipcs(1).
Você pode usar ipcs com a opção -J para ver o limite de projeto contra o qual um objeto IPC está alocado.
# ipcs -J IPC status from <running system> as of Wed Mar 26 18:53:15 PDT 2003 T ID KEY MODE OWNER GROUP PROJECT Message Queues: Shared Memory: m 3600 0 --rw-rw-rw- uname staff x-files m 201 0 --rw-rw-rw- uname staff x-files m 1802 0 --rw-rw-rw- uname staff x-files m 503 0 --rw-rw-rw- uname staff x-files m 304 0 --rw-rw-rw- uname staff x-files m 605 0 --rw-rw-rw- uname staff x-files m 6 0 --rw-rw-rw- uname staff x-files m 107 0 --rw-rw-rw- uname staff x-files Semaphores: s 0 0 --rw-rw-rw- uname staff x-files |
Uma ação global em um controle de recurso permite que você receba aviso de qualquer entidade que esteja encontrando um valor de controle de recurso com definição muito baixa.
Por exemplo, suponha que você deseja determinar se um servidor Web processa CPUs suficientes para uma carga de trabalho típica. Você pode analisar dados de sar para tempo ocioso de CPU e média de carga. Pode também examinar dados de contabilidade estendida para determinar o número de processos simultâneos que estão em execução para o processo do servidor Web.
No entanto, uma abordagem mais fácil é colocar o servidor Web em uma tarefa. Você pode então definir uma ação global, usando syslog, para notificar você toda vez que uma tarefa exceder o número agendado de LWPs apropriado para as capacidades da máquina.
Para obter mais informações, consulte a página do manual sar(1).
Use o comando prctl para colocar um controle de recurso privilegiado (pertencente ao superusuário) em tarefas que contenham um processo httpd. Limite o número total de LWPs de cada tarefa a 40, e desative todas as ações locais.
# prctl -n task.max-lwps -v 40 -t privileged -d all `pgrep httpd` |
Ative uma ação global de log do sistema no controle de recurso task.max-lwps.
# rctladm -e syslog task.max-lwps |
Observe se a carga de trabalho encontra o controle de recurso.
Se sim, você verá /var/adm/messages como:
Jan 8 10:15:15 testmachine unix: [ID 859581 kern.notice] NOTICE: privileged rctl task.max-lwps exceeded by task 19 |