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

Capítulo 6 Controles de recursos (descripción general)

Una vez determinado el consumo de recursos de las cargas de trabajo del sistema tal como se describe en el Capítulo 4Contabilidad ampliada (descripción general), puede establecer límites para el uso de recursos. Los límites evitan que las cargas de trabajo consuman recursos en exceso. La función de controles de recursos es el mecanismo de limitación que se utiliza para tal fin.

En este capítulo se tratan los temas siguientes.

Para obtener información sobre cómo administrar los controles de recursos, consulte el Capítulo 7Administración de controles de recursos (tareas).

Novedades en los controles de recursos de Solaris 10

El siguiente conjunto de controles de recursos sustituye los valores configurables de la comunicación entre procesos (IPC) System V /etc/system:

Se han añadido los siguientes controles de recursos del puerto de eventos:

Se ha añadido el siguiente control de recursos criptográfico:

Se han añadido los siguientes controles de recursos adicionales:

Para más información, consulte Controles de recursos disponibles.

Para ver una lista completa de las nuevas funciones de Solaris 10 y una descripción de las versiones de Solaris, consulte Novedades de Oracle Solaris 10 9/10.

Conceptos de controles de recursos

En el sistema operativo Solaris, el concepto de límite de recurso por proceso se ha extendido a las entidades de tareas y proyectos descritas en el Capítulo 2Proyectos y tareas (información general). Estas mejoras se incorporan a través de la función de controles de recursos (rctls). Asimismo, las asignaciones que se configuraban mediante opciones de /etc/system ahora son automáticas o se configuran también mediante el mecanismo de controles de recursos.

Un control de recurso puede identificarse por el prefijo zone, project, task o process. Los controles de recursos pueden observarse en todo el sistema. Es posible actualizar los valores de controles de recursos en un sistema en ejecución.

Para ver una lista de los controles de recursos estándar disponibles en esta versión, consulte Controles de recursos disponibles. Consulte Propiedades del tipo de recurso para obtener información sobre los controles de recursos disponibles de la zona.

Para ver una lista de los controles de recursos estándar disponibles en esta versión, consulte Controles de recursos disponibles.

Límites y controles de recursos

Los sistemas UNIX proporcionan tradicionalmente una función de límite de recursos ( rlimit). La función rlimit permite a los administradores configurar uno o más límites numéricos para la cantidad de recursos que puede consumir un proceso. Estos límites incluyen el tiempo de CPU utilizado por proceso, el tamaño de archivo núcleo por proceso y el tamaño de pila máximo por proceso. El tamaño de pila es la cantidad de memoria de trabajo asignada para el segmento de datos del proceso.

La función de controles de recursos ofrece interfaces de compatibilidad para la función de límites de recursos. Las aplicaciones existentes que utilizan límites de recursos siguen ejecutándose sin cambios. Estas aplicaciones pueden observarse del mismo modo que las aplicaciones modificadas para aprovechar la función de controles de recursos.

Comunicación entre procesos y controles de recursos

Los procesos pueden comunicarse entre sí utilizando uno de los distintos tipos de comunicación entre procesos (IPC). IPC permite transferir o sincronizar información entre procesos. Antes de la versión Solaris 10, los parámetros IPC configurables se establecían añadiendo una entrada al archivo /etc/system. La función de controles de recursos ahora proporciona controles de recursos que definen el comportamiento de las funciones IPC del núcleo. Estos controles de recursos sustituyen las opciones configurables de /etc/system.

Es posible que los parámetros obsoletos estén incluidos en el archivo /etc/system de este sistema Solaris. Si es el caso, los parámetros se usan para iniciar los valores de control de recursos predeterminados, al igual que en las versiones anteriores de Solaris. Sin embargo, no se recomienda el uso de los parámetros obsoletos.

Para observar qué objetos IPC contribuyen al uso de un proyecto, utilice el comando ipcs con la opción -J. Consulte Cómo utilizar ipcs para ver un ejemplo. Para obtener más información acerca del comando ipcs, consulte ipcs(1).

Para obtener información sobre la configuración del sistema Solaris, consulte Oracle Solaris Tunable Parameters Reference Manual.

Mecanismos de limitación del control de recursos

Los controles de recursos ofrecen un mecanismo para la limitación de los recursos del sistema. Es posible evitar que los procesos, tareas, proyectos y zonas consuman determinadas cantidades de recursos del sistema. Este mecanismo conduce a un sistema más eficaz, puesto que evita el consumo excesivo de recursos.

Los mecanismos de limitación pueden utilizarse para complementar los procesos de planificación de capacidades. Una limitación puede proporcionar información sobre las necesidades de recursos de una aplicación sin denegar necesariamente el recurso a la aplicación.

Mecanismos de atributos de proyecto

Los controles de recursos también pueden servir de mecanismo de atributo simple para las funciones de administración de recursos. Por ejemplo, el número de recursos compartidos de CPU disponibles para un proyecto en la clase de planificación del programador de reparto justo (FSS) se define mediante el control de recurso project.cpu-shares. Dado que el control asigna al proyecto un número fijo de recursos compartidos, las diferentes acciones que excedan el control no son relevantes. En este contexto, el valor actual del control project.cpu-shares se considera un atributo del proyecto especificado.

Otro tipo de atributo de proyecto se utiliza para regular el consumo de recursos de la memoria física por parte de los grupos de procesos asociados a un proyecto. Estos atributos tienen el prefijo rcap, por ejemplo, rcap.max-rss. Al igual que los controles de recursos, este tipo de atributo se configura en la base de datos project. Sin embargo, mientras que los controles de recursos los aplica de forma sincronizada el núcleo, los límites de recursos los aplica el daemon de aplicación de límites de recursos, rcapd, en el nivel del usuario y sin sincronización. Para obtener información sobre rcapd, consulte el Capítulo 10Control de memoria física utilizando el daemon de límite de recursos (descripción general) y rcapd (1M).

El atributo project.pool se utiliza para especificar la vinculación de agrupaciones para un proyecto. Para obtener más información sobre las agrupaciones de recursos, consulte el Capítulo 12Agrupaciones de recursos (descripción general).

Configuración de controles de recursos y atributos

La función de controles de recursos se configura a través de la base de datos project. Consulte el Capítulo 2Proyectos y tareas (información general). Los controles de recursos y otros atributos se configuran en el campo final de la entrada de la base de datos project. Los valores asociados con cada control de recursos se incluyen entre paréntesis, y aparecen como texto sin formato separado por comas. Los valores entre paréntesis constituyen una "cláusula de acción". Cada cláusula de acción se compone de un nivel de privilegio, un valor umbral y una acción asociada con el umbral específico. Cada control de recurso puede tener varias cláusulas de acción, que también se separan con comas. La entrada siguiente define un límite de proceso ligero por tarea y un límite de tiempo de CPU máximo por proceso en una entidad de proyecto. process.max-cpu-time enviaría SIGTERM a un proceso durante la ejecución del proceso durante una hora, y SIGKILL si el proceso siguiera ejecutándose durante una hora y un minuto. Consulte la Tabla 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

Nota –

En los sistemas con zonas activadas, los controles de recursos de la zona se especifican en la configuración de zona con un formato ligeramente diferente. Consulte Datos de configuración de zonas para obtener más información.


El comando rctladm permite realizar interrogaciones de tiempo de ejecución y modificaciones en la función de controles de recursos con ámbito global. El comando prctl permite realizar interrogaciones de tiempo de ejecución y modificaciones en la función de controles de recursos, con ámbito local.

Para obtener más información, consulte Acciones locales y globales en valores de controles de recursos, rctladm(1M) y prctl(1).


Nota –

En un sistema con zonas instaladas, no puede utilizar rctladm en una zona no global para modificar la configuración. Puede utilizar rctladm en una zona no global para ver el estado de registro global de cada control de recurso.


Controles de recursos disponibles

En la tabla siguiente se incluye una lista de los controles de recursos estándar disponibles en esta versión.

La tabla describe el recurso que limita cada control. Asimismo, identifica las unidades predeterminadas que utiliza la base de datos project para dicho recurso. Las unidades predeterminadas pueden ser de dos tipos:

De este modo, project.cpu-shares especifica el número de recursos compartidos a los que tiene derecho el proyecto. process.max-file-descriptor especifica el número máximo de archivos que se pueden asignar a un proceso mediante la llamada de sistema open(2).

Tabla 6–1 Controles de recursos estándar

Nombre de control 

Descripción 

Unidad predeterminada 

project.cpu-cap

Solaris 10 8/07: límite absoluto sobre la cantidad de recursos de la CPU que puede consumir un proyecto. Un valor de 100 significa el 100% de una CPU como opción de project.cpu-cap. Un valor de 125 es 125%, ya que el 100% corresponde a una CPU completa del sistema al utilizar el recurso cpu-cap.

Cantidad (número de CPU) 

project.cpu-shares

Número de recursos compartidos de CPU concedidos a este proyecto para utilizar con el programador de reparto justo (consulte FSS(7)).

Cantidad (recursos compartidos) 

project.max-crypto-memory

Cantidad total de memoria de núcleo que puede utilizar libpkcs11 para la aceleración criptográfica de hardware. Las asignaciones de búferes de núcleo y estructuras relativas a las sesiones se realizan para este control de recurso.

Tamaño (bytes) 

project.max-locked-memory

Cantidad total de memoria física bloqueada permitida. 

Si se asigna priv_proc_lock_memory a un usuario, procure configurar también este control de recurso para evitar que el usuario bloquee toda la memoria.

Solaris 10 8/07: tenga en cuenta que en la versión Solaris 10 8/07, este control de recursos sustituía a project.max-device-locked-memory, que se ha eliminado.

Tamaño (bytes) 

project.max-port-ids

Número máximo de puertos de eventos permitidos. 

Cantidad (número de puertos de eventos)  

project.max-sem-ids

Número máximo de ID de semáforo permitidos para este proyecto. 

Cantidad (ID de semáforo) 

project.max-shm-ids

Número máximo de ID de memoria compartida permitidos para este proyecto. 

Cantidad (ID de memoria compartida) 

project.max-msg-ids

Número máximo de ID de cola de mensajes permitidos para este proyecto. 

Cantidad (ID de cola de mensajes) 

project.max-shm-memory

Cantidad total de memoria compartida System V permitida para este proyecto. 

Tamaño (bytes) 

project.max-lwps

Número máximo de procesos ligeros disponibles de forma simultánea para este proyecto. 

Cantidad (LWP) 

project.max-tasks

Número máximo de tareas permitidas en este proyecto. 

Cantidad (número de tareas) 

project.max-contracts

Número máximo de contratos permitidos en este proyecto. 

Cantidad (contratos) 

task.max-cpu-time

Tiempo máximo de CPU disponible para los procesos de esta tarea. 

Tiempo (segundos) 

task.max-lwps

Número máximo de procesos ligeros disponibles de forma simultánea para los procesos de esta tarea. 

Cantidad (LWP) 

process.max-cpu-time

Tiempo máximo de CPU disponible para este proceso. 

Tiempo (segundos) 

process.max-file-descriptor

Índice descriptor de archivos máximo disponible para este proceso. 

Índice (descriptor de archivo máximo) 

process.max-file-size

Desfase de archivo máximo disponible para escritura de este proceso. 

Tamaño (bytes) 

process.max-core-size

Tamaño máximo de archivo principal creado por este proceso. 

Tamaño (bytes) 

process.max-data-size

Memoria de pila máxima disponible para este proceso. 

Tamaño (bytes) 

process.max-stack-size

Segmento de memoria de pila máxima disponible para este proceso. 

Tamaño (bytes) 

process.max-address-space

Cantidad máxima de espacio de dirección, sumando los tamaños de segmentos, disponible para este proceso. 

Tamaño (bytes) 

process.max-port-events

Número de eventos máximo permitido por puerto de eventos. 

Cantidad (número de eventos)  

process.max-sem-nsems

Número máximo de semáforos permitidos por conjunto de semáforos. 

Cantidad (semáforos por conjunto) 

process.max-sem-ops

Número máximo de operaciones de semáforos permitidas por llamada semop (valor copiado del control de recursos en la hora de semget()).

Cantidad (número de operaciones) 

process.max-msg-qbytes

Número máximo de bytes de mensajes en una cola de mensajes (valor copiado del control de recurso en la hora de msgget() ).

Tamaño (bytes) 

process.max-msg-messages

Número máximo de mensajes en una cola de mensajes (valor copiado del control de recurso en la hora de msgget()).

Cantidad (número de mensajes) 

Puede ver los valores predeterminados de los controles de recursos de un sistema que no tenga controles de recursos definidos ni cambiados. Dicho sistema no contiene entradas que no sean predeterminadas en /etc/system o la base de datos project. Para ver los valores, utilice el comando prctl.

Controles de recursos de la zona

Los controles de recursos de la zona limitan el uso total de los recursos de todas las entidades de procesos de una zona. Los controles de recursos de la zona también pueden configurarse utilizando los nombres de propiedades globales descritos en Configuración de controles de recursos de zonas y Cómo configurar la zona.

Tabla 6–2 Controles de recursos de la zona

Nombre de control 

Descripción 

Unidad predeterminada 

zone.cpu-cap

Solaris 10 5/08: límite absoluto sobre la cantidad de recursos de CPU que puede consumir una zona no global. Un valor de 100 significa el 100% de una CPU como opción de project.cpu-cap. Un valor de 125 es 125%, ya que el 100% corresponde a una CPU completa del sistema al utilizar el recurso cpu-cap.

Cantidad (número de CPU) 

zone.cpu-shares

Número de recursos compartidos de CPU del planificador de reparto justo (FSS) para esta zona 

Cantidad (recursos compartidos) 

zone.max-locked-memory

Cantidad total de memoria física bloqueada disponible para una zona. 

Si se asigna priv_proc_lock_memory a una zona, procure configurar también este control de recurso para evitar que la zona bloquee toda la memoria.

Tamaño (bytes) 

zone.max-lwps

Número máximo de procesos ligeros disponibles de forma simultánea para esta zona 

Cantidad (LWP) 

zone.max-msg-ids

Número máximo de ID de cola de mensajes permitidos para esta zona 

Cantidad (ID de cola de mensajes) 

zone.max-sem-ids

Número máximo de ID de semáforo permitidos para esta zona 

Cantidad (ID de semáforo) 

zone.max-shm-ids

Número máximo de ID de memoria compartida permitidos para esta zona 

Cantidad (ID de memoria compartida) 

zone.max-shm-memory

Cantidad total de memoria compartida System V permitida para esta zona 

Tamaño (bytes) 

zone.max-swap

Cantidad total de intercambio que pueden consumir las asignaciones de espacio de direcciones del proceso del usuario y los montajes tmpfs para esta zona.

Tamaño (bytes) 

Para obtener información sobre la configuración de controles de recursos de la zona, consulte Propiedades del tipo de recurso y Cómo configurar la zona. Para utilizar los controles de recursos de la zona en las zonas con marca lx, consulte Cómo configurar, verificar y confirmar la zona con marca lx.

Tenga en cuenta que es posible aplicar un control de recurso de la zona para la zona global. Para obtener más información, consulte el Capítulo 17Configuración de zonas no globales (descripción general) y Uso del programador de reparto justo en un sistema Solaris con zonas instaladas.

Compatibilidad con unidades

Los indicadores globales que identifican los tipos de controles de recursos se definen para todos los controles de recursos. El sistema utiliza los indicadores para comunicar la información de tipo básico a las aplicaciones como el comando prctl. Las aplicaciones utilizan la información para determinar lo siguiente:

Hay disponibles los siguientes indicadores globales:

Indicador global 

Cadena de tipo de control de recurso 

Modificador 

Escala 

RCTL_GLOBAL_BYTES 

bytes 

 

KB 

210

 

MB 

220

 

GB 

230

 

TB 

240

 

PB 

250

 

EB 

260

RCTL_GLOBAL_SECONDS 

segundos 

 

Ks 

103

 

Sra. 

106

 

Gs 

109

 

Ts 

1012

 

Ps 

1015

 

Es 

1018

RCTL_GLOBAL_COUNT 

número 

none 

 

103

 

106

 

109

 

1012

 

1015

 

1018

Pueden utilizarse valores a escala con los controles de recursos. El ejemplo siguiente muestra un valor umbral a escala:

task.max-lwps=(priv,1K,deny)

Nota –

Los comandos prctl, projadd y projmod aceptan modificadores de unidades. No puede utilizar modificadores de unidades en la base de datos project.


Valores de controles de recursos y niveles de privilegio

Un valor umbral en un control de recurso constituye un punto de aplicación en el que se pueden desencadenar acciones locales o globales, por ejemplo registros.

Cada valor umbral de un control de recurso debe asociarse con un nivel de privilegio. El nivel de privilegio debe ser de uno de estos tres tipos.

Se garantiza que un control de recurso tiene un valor de sistema, definido por el sistema, o un proveedor de recursos. El valor del sistema representa qué cantidad del recurso es capaz de proporcionar la implementación actual del sistema operativo.

Puede definirse cualquier número de valores con privilegio, y sólo se permite un valor básico. A las operaciones que se llevan a cabo sin especificar un valor de privilegio se les asigna de forma predeterminada un privilegio básico.

El nivel de privilegio para un valor de control de recurso se define en el campo de privilegio del bloque de control de recurso como RCTL_BASIC, RCTL_PRIVILEGED o RCTL_SYSTEM. Consulte setrctl(2) para obtener más información. Puede utilizar el comando prctl para modificar los valores asociados con los niveles básico y con privilegios.

Acciones locales y globales en valores de controles de recursos

Hay dos categorías de acciones en los valores de controles de recursos: globales y locales.

Acciones globales en valores de controles de recursos

Las acciones globales se aplican a los valores de controles de recursos para cada control de recurso del sistema. Puede utilizar el comando rctladm que se describe en la página del comando man rctladm(1M) para llevar a cabo las acciones siguientes:

Puede desactivar o activar la acción de registro global en los controles de recursos. Es posible definir la acción syslog hasta un grado específico asignando un nivel de gravedad, syslog=nivel. Las posibles configuraciones de nivel son:

De modo predeterminado, no hay ningún registro global de los conflictos de controles de recursos. En Solaris 10 5/08, se agregó el nivel n/a para controles de recursos en los que no se podían configurar acciones globales.

Acciones locales en valores de controles de recursos

Las acciones locales se llevan a cabo en un proceso que intenta exceder el valor de control. Para cada valor umbral que se coloca en un control de recurso, puede asociar una o más acciones. Hay tres tipos de acciones locales: none, deny y signal=. Estas tres acciones se utilizan del modo siguiente:

none

No se emprende ninguna acción en las solicitudes de recursos para una cantidad que supere el umbral. Esta acción resulta útil para supervisar el uso de los recursos sin que ello afecte al progreso de las aplicaciones. También puede activar un mensaje global que se muestre al superar el control de recurso, aunque el proceso que supera el umbral no se vea afectado.

deny

Puede denegar las solicitudes de recursos para una cantidad que supere el umbral. Por ejemplo, un control de recurso task.max-lwps con la acción deny hace que la llamada de sistema fork falle si el nuevo proceso supera el valor de control. Consulte la página del comando man fork(2).

signal=

Puede activar una acción de mensaje de señal global cuando se supera el control de recurso. Se envía una señal al proceso cuando se supera el valor umbral. No se envían señales adicionales si el proceso consume recursos adicionales. En la Tabla 6–3 se enumeran las señales disponibles.

No se pueden aplicar todas las acciones a cada control de recurso. Por ejemplo, un proceso no puede superar el número de recursos compartidos de CPU asignados al proyecto del cual es miembro. Por tanto, no se permite una acción de denegación en el control de recurso project.cpu-shares.

Debido a la restricción de la implementación, las propiedades globales de cada control pueden restringir el intervalo de acciones disponibles que se pueden configurar en el valor umbral. (Consulte la página del comando man rctladm(1M) En la tabla siguiente se presenta una lista de las acciones de señales disponibles. Para obtener información adicional sobre las señales, consulte la página del comando man signal(3HEAD).

Tabla 6–3 Señales disponibles para los valores de controles de recursos

Señal 

Descripción 

Notas 

SIGABRT 

Finaliza el proceso. 

 

SIGHUP 

Envía una señal de colgar. Tiene lugar cuando el portador se encuentra en una línea abierta. La señal se envía al grupo de proceso que controla el terminal. 

 

SIGTERM 

Finaliza el proceso. Señal de finalización que envía el software. 

 

SIGKILL 

Finaliza el proceso y cierra el programa. 

 

SIGSTOP 

Detiene el proceso. Señal de control del trabajo. 

 

SIGXRES 

Límite de control de recurso superado. Lo genera la función de control de recurso. 

 

SIGXFSZ 

Finaliza el proceso. Límite de tamaño de archivo superado. 

Disponible sólo para los controles de recursos con la propiedad RCTL_GLOBAL_FILE_SIZE (process.max-file-size). Consulte rctlblk_set_value(3C) para obtener más información.

SIGXCPU 

Finaliza el proceso. Límite de tiempo de CPU superado. 

Disponible sólo para los controles de recursos con la propiedad RCTL_GLOBAL_CPUTIME (process.max-cpu-time). Consulte rctlblk_set_value(3C) para obtener más información.

Propiedades e indicadores de controles de recursos

Cada control de recurso del sistema tiene un grupo determinado de propiedades asociadas. Este conjunto de propiedades se define como un conjunto de indicadores, asociados con todas las instancias controladas de dicho recurso. Los indicadores globales no se pueden modificar, pero se pueden recuperar utilizando las llamadas de sistema rctladm o getrctl.

Los indicadores globales definen el comportamiento predeterminado y la configuración de un valor umbral específico de dicho control de recurso en un proceso específico o colectivo. Los indicadores locales de un valor umbral no afectan al comportamiento de otros valores umbral definidos para el mismo control de recurso. Sin embargo, los indicadores globales afectan al comportamiento de cada valor asociado con un control particular. Los indicadores locales pueden modificarse, dentro de los límites establecidos por sus indicadores globales correspondientes, mediante el comando prctl o la llamada de sistema setrctl. Consulte setrctl(2).

Para ver una lista completa de los indicadores locales y sus definiciones, consulte rctlblk_set_value(3C).

Para determinar el comportamiento del sistema cuando se alcanza un valor umbral para un control de recurso concreto, utilice rctladm para ver los indicadores globales para el control de recurso. Por ejemplo, para ver los valores de process.max-cpu-time, escriba lo siguiente:


$ rctladm process.max-cpu-time
	process.max-cpu-time  syslog=off  [ lowerable no-deny cpu-time inf seconds ]

Los indicadores globales significan lo siguiente.

lowerable

No se requieren privilegios de superusuario para reducir los valores con privilegios para este control.

no-deny

Nunca se deniega el acceso al recurso, ni siquiera cuando se superan los valores umbral.

cpu-time

SIGXCPU está disponible para su envío cuando se alcanzan los valores umbral de este recurso.

seconds

Valor de tiempo para el control de recurso.

no-basic

Los valores de control de recurso con el tipo de privilegio basic no se pueden establecer. Sólo se permiten valores de control de recurso con privilegios.

no-signal

Una acción de señal local no se puede establecer en valores de control de recurso.

no-syslog

La acción de mensaje syslog global no se puede establecer para este control de recurso.

deny

Siempre que se sobrepasen los valores de umbral, deniegue la solicitud de recursos.

count

Valor (entero) de cantidad para el control de recurso.

bytes

Unidad de tamaño de control de recurso.

Utilice el comando prctl para ver las acciones y los valores locales para el control de recurso.


$ 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 

El indicador max (RCTL_LOCAL_MAXIMAL) se configura para ambos valores umbral, y el indicador inf (RCTL_GLOBAL_INFINITE) se define para este control de recurso. Un valor inf tiene una cantidad infinita. El valor nunca se aplica. Por ello, ambas cantidades umbral representan valores infinitos que nunca se superan.

Aplicación de controles de recursos

Un recurso puede tener más de un control de recurso. Puede haber un control de recurso en cada nivel de contenido en el modelo de proceso. Si hay controles de recursos activos en el mismo recurso en diferentes niveles de contenido, se aplicará en primer lugar el control del contenedor más pequeño. De este modo, la acción se lleva a cabo en process.max-cpu-time antes que en task.max-cpu-time si ambos controles se encuentran de forma simultánea.

Figura 6–1 Procesos colectivos, relaciones de contenedores y sus conjuntos de controles de recursos

El diagrama muestra la aplicación de cada control de recurso y su nivel de contenido.

Supervisión global de los eventos de controles de recursos

A menudo, se desconoce el consumo de recursos de los procesos. Para obtener más información, utilice las acciones de control de recursos globales disponibles con el comando rctladm. Utilice rctladm para establecer una acción syslog en un control de recursos. A continuación, si una entidad administrada por dicho control de recurso se encuentra con un valor umbral, se registra un mensaje del sistema en el nivel de registro configurado. Si desea más información, consulte el Capítulo 7Administración de controles de recursos (tareas) y la página del comando man rctladm(1M).

Aplicación de controles de recursos

Cada control de recurso incluido en la Tabla 6–1 puede asignarse a un proyecto al inicio de la sesión o cuando se invocan los dispositivos de lanzamiento newtask, su u otros dispositivos de lanzamiento del proyecto at, batch o cron. Cada comando que se inicia se abre en una tarea separada con el proyecto predeterminado del usuario que ejecuta el comando. Si desea más información, consulte las páginas del comando man login(1), newtask(1), at(1), cron(1M) y su(1M).

Las actualizaciones de las entradas de la base de datos project, tanto si son para el archivo /etc/project o una representación de la base de datos en un servicio de nombres de red, no se aplican a los proyectos activos. Las actualizaciones se aplican cuando una tarea nueva se une al proyecto mediante el inicio de sesión o newtask.

Actualización temporal de los valores de controles de recursos en un sistema en ejecución

Los valores modificados en la base de datos project sólo pasan a ser efectivos para las nuevas tareas que se inician en un proyecto. Sin embargo, puede utilizar los comandos rctladm y prctl para actualizar los controles de recursos en un sistema en ejecución.

Actualización de estados de registro

El comando rctladm afecta al estado de registro global de cada control de recurso en todo el sistema. Este comando puede utilizarse para ver el estado global y configurar el nivel de registro de syslog cuando se superan los controles.

Actualización de controles de recursos

Puede ver y modificar temporalmente los valores de controles de recursos y acciones por proceso, tarea o proyecto utilizando el comando prctl. Se especifica un ID de proceso, tarea o proyecto y el comando se aplica al control de recurso en el nivel en el que esté definido el control.

Cualquier modificación en los valores y acciones surtirá efecto de inmediato. No obstante, estas modificaciones se aplican únicamente al proceso, la tarea o el proyecto actuales. Los cambios no se registran en la base de datos project. Si se reinicia el sistema, se pierden las modificaciones. Los cambios permanentes en los controles de recursos deben realizarse en la base de datos project.

Todos los parámetros de los controles de recursos que se pueden modificar en la base de datos project también pueden modificarse con el comando prctl. Pueden añadirse o eliminarse valores básicos o con privilegios. Sus acciones también pueden modificarse. De modo predeterminado, se da por sentado el tipo básico para todas las operaciones, pero los procesos y usuarios con privilegios de superusuario también pueden modificar los controles de recursos con privilegios. No es posible modificar los controles de recursos del sistema.

Comandos utilizados con controles de recursos

En la tabla siguiente se incluyen los comandos que se utilizan con controles de recursos.

Referencia de comando 

Descripción 

ipcs(1)

Permite observar qué objetos IPC contribuyen al uso de un proyecto. 

prctl(1)

Permite realizar interrogaciones de tiempo de ejecución y modificaciones en la función de controles de recursos, con ámbito local. 

rctladm(1M)

Permite realizar interrogaciones de tiempo de ejecución y modificaciones en la función de controles de recursos, con ámbito global. 

La página del comando man resource_controls(5) describe los controles de recursos disponibles a través de la base de datos del proyecto, incluidos los factores de escala y las unidades.