Guia de administração do sistema: gerenciamento de recursos Oracle Solaris Containers e Oracle Solaris Zones

Configuração de controles de recursos

ProcedureComo definir o número máximo de LWPs para cada tarefa em um projeto

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.

  1. 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 .

  2. 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
    
  3. 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)

Exemplo 7–1 Sessão de amostra

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
#

ProcedureComo definir múltiplos controles em um projeto

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.

  1. 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 .

  2. 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.

  3. 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