Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris

Configuración de controles de recursos

ProcedureCómo definir el número máximo de procesos ligeros para cada tarea de un proyecto

Este procedimiento añade un proyecto denominado x-files al archivo /etc/project y establece un número máximo de procesos ligeros para una tarea creada en el proyecto.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Utilice el comando projadd con la opción -K para crear un proyecto denominado x-files. Defina el número máximo de procesos ligeros para cada tarea creada en el proyecto como 3.


    # projadd -K 'task.max-lwps=(privileged,3,deny)' x-files
    
  3. Visualice la entrada en el archivo /etc/project siguiendo uno de estos métodos:

    • Type:


      # 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)
    • Type:


      # cat /etc/project
      system:0:System:::
      .
      .
      .
      x-files:100::::task.max-lwps=(privileged,3,deny)

Ejemplo 7–1 Ejemplo de sesión

Una vez implementados los pasos de este procedimiento, cuando el superusuario cree una tarea en el proyecto x-files uniendo el proyecto con newtask, el no podrá crear más de tres procesos ligeros mientras se ejecute esta tarea. Esto puede verse en la siguiente sesión de ejemplo.


# 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
#

ProcedureCómo definir múltiples controles en un proyecto

El archivo /etc/project puede contener parámetros de varios controles de recursos para cada proyecto, así como diferentes valores umbral para cada control. Los valores umbral se definen en las cláusulas de acción, que se separan con comas en caso de haber múltiples valores.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Utilice el comando projmod con las opciones -s y -K para definir los controles de recursos en el proyecto 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
    

    Se definen los controles siguientes:

    • Un control basic sin acción en el máximo de procesos ligeros por tarea.

    • Un control deny con privilegios en el máximo de procesos ligeros por tarea. Este control hace que falle la creación de cualquier proceso ligero que supere el máximo, tal como se muestra en el ejemplo de Cómo definir el número máximo de procesos ligeros para cada tarea de un proyecto.

    • Un límite para los descriptores de archivo por proceso en el nivel basic, que hace que falle cualquier llamada open que supere el máximo.

  3. Visualice la entrada en el archivo utilizando uno de estos métodos:

    • Type:


      # 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
      
    • Type:


      # 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