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

Capítulo 10 Control de memoria física utilizando el daemon de límite de recursos (descripción general)

El daemon de límite de recursos rcapd permite regular el consumo de memoria física por parte de los procesos que se ejecutan en los proyectos que tienen definidos límites de recursos.

Solaris 10 8/07: Si está ejecutando zonas en el sistema, puede utilizar rcapd desde la zona global para regular el consumo de memoria física en las zonas no globales. Consulte el Capítulo 18Planificación y configuración de zonas no globales (tareas).

En este capítulo se cubren los temas siguientes.

Para conocer los procedimientos que utilizan la función rcapd, consulte el Capítulo 11Administración del daemon de límite de recursos (tareas).

Novedades en el control de la memoria física utilizando el daemon de límite de recursos

Solaris 10 Ahora puede utilizar el comando projmod para configurar el atributo rcap.max-rss en el archivo /etc/project.

Solaris 10 11/06: se ha agregado información sobre cómo habilitar e inhabilitar el daemon de límite de recursos como servicio de la utilidad de gestión de servicios (SMF) de Solaris.

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.

Introducción al daemon de límite de recursos

Un límite de recursos es un límite superior colocado para el consumo de un recurso, como la memoria física. Se admite el uso de límites de memoria física por proyecto.

El daemon de límite de recursos y sus utilidades asociadas proporcionan mecanismos para la aplicación y administración de límites de recursos en la memoria física.

Al igual que el control de recursos, el límite de recursos se puede definir utilizando los atributos de entradas de proyecto 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 límite de recursos en el nivel del usuario y sin sincronización. En el caso de la aplicación asíncrona, tiene lugar un breve retardo como consecuencia del intervalo de muestreo que utiliza el daemon.

Para obtener información sobre rcapd, consulte la página del comando man rcapd(1M) Para obtener información sobre los proyectos y la base de datos project, consulte el Capítulo 2Proyectos y tareas (información general) y la página del comando man project(4) Para obtener información sobre los controles de recursos, consulte el Capítulo 6Controles de recursos (descripción general).

Funcionamiento de los límites de recursos

El daemon muestrea de forma repetida el uso de los recursos de los proyectos que tienen límites de memoria física. El administrador especifica el intervalo de muestreo que utiliza el daemon. Consulte Cómo determinar los intervalos de muestra para obtener información adicional. Cuando el uso de la memoria física del sistema supera el umbral para la aplicación del límite, y además se dan otras condiciones, el daemon emprende las acciones necesarias para reducir el consumo de recursos de los proyectos con límites de memoria a niveles iguales o inferiores a los establecidos por los límites.

El sistema de memoria virtual divide la memoria física en segmentos conocidos como páginas. Las páginas son la unidad fundamental de memoria física del subsistema de administración de memoria de Solaris. Para leer datos de un archivo en la memoria, el sistema de memoria virtual lee una página cada vez, o carga la página en un archivo. Para reducir el consumo de recursos, el daemon puede extraer, o reasignar, las páginas poco utilizadas a un dispositivo de intercambio, que es un área fuera de la memoria física.

El daemon administra la memoria física regulando el tamaño del conjunto residente de la carga de trabajo de un proyecto para adaptarlo al tamaño de su conjunto de trabajo. El conjunto residente es el conjunto de páginas que residen en la memoria física. El conjunto de trabajo es el conjunto de páginas que utiliza la carga de trabajo de forma activa durante su ciclo de procesamiento. El conjunto de trabajo cambia con el tiempo, en función del modo de funcionamiento del proceso y el tipo de datos que se procesan. Se recomienda que cada carga de trabajo tenga acceso a la suficiente memoria física para permitir que su conjunto de trabajo permanezca como residente. Sin embargo, el conjunto de trabajo también puede incluir el uso de almacenamiento de disco secundario para contener la memoria que no quepa en la memoria física.

Sólo puede ejecutarse una instancia de rcapd en un momento preciso.

Atributo para limitar el uso de memoria física para proyectos

Para definir un límite de recurso de memoria física para un proyecto, establezca un límite en el tamaño de conjunto residente (RSS) añadiendo este atributo a la entrada de la base de datos project:

rcap.max-rss

La cantidad total de memoria física, en bytes, disponible para los procesos del proyecto.

Por ejemplo, la siguiente línea del archivo /etc/project define un límite RSS de 10 gigabytes para un proyecto denominado db.


db:100::db,root::rcap.max-rss=10737418240

Nota –

El sistema puede redondear el valor límite especificado a un tamaño de página.


Puede utilizar el comando projmod para definir el atributo rcap.max-rss en el archivo /etc/project:


# projmod -s -K rcap.max-rss=10GB db

El archivo /etc/project contiene la línea:


db:100::db,root::rcap.max-rss=10737418240

Configuración de rcapd

Utilice el comando rcapadm para configurar el daemon de límite de recursos. Puede realizar las siguientes acciones:

Para configurar el daemon, debe tener privilegios de superusuario o tener el perfil de administración de procesos en la lista de perfiles. Tanto el rol de administración de procesos como el rol del administrador de sistemas incluyen el perfil de administración de procesos.

Los cambios de configuración se pueden incorporar en rcapd de acuerdo con el intervalo de configuración (consulte Intervalos de operación rcapd) o según se solicite enviando SIGHUP (consulte la página del comando man kill(1)).

Si se utiliza sin argumentos, rcapadm muestra el estado actual del daemon de límite de recursos si se ha configurado.

En las subsecciones siguientes se describe la aplicación del límite, los valores de límite y los intervalos de funcionamiento de rcapd.

Uso del daemon de límite de recursos en un sistema con zonas instaladas

Puede controlar el uso del tamaño del conjunto residente (RSS) de una zona configurando el recurso capped-memory cuando configura la zona. Para más información, consulte Solaris 10 8/07: control de memoria física y recurso capped-memory. Puede ejecutar el comando rcapd en una zona, incluida la zona global, para aplicar límites de memoria a los proyectos de dicha zona.

Puede establecer un límite temporal para la cantidad máxima de memoria que puede consumir una zona especificada, hasta la próxima vez que se reinicie el sistema. Consulte Cómo especificar un límite de recursos temporal para una zona .

Si utiliza rcapd en una zona para regular el consumo de memoria física por parte de los procesos que se ejecutan en proyectos que tengan definidos límites de recursos, debe configurar el daemon en dicha zona.

Al seleccionar límites de memoria para las aplicaciones en diferentes zonas, normalmente no es necesario que las aplicaciones residan en zonas distintas. Una excepción a esta norma son los servicios por zona. Dichos servicios consumen memoria. Este consumo de memoria debe tenerse en cuenta a la hora de determinar la cantidad de memoria física para un sistema, así como los límites de memoria.


Nota –

No puede ejecutar rcapd en una zona con marca lx. Sin embargo, puede utilizar el daemon de la zona global para limitar la memoria de la zona con marca.


Umbral de aplicación de límite de memoria

El umbral de aplicación de límite de memoria es el porcentaje de utilización de la memoria física del sistema que activa la aplicación del límite. Cuando el sistema supera esta utilización, se aplican los límites. La memoria física que utilizan las aplicaciones y el núcleo se incluye en este porcentaje. El porcentaje de utilización determina el modo en que se aplican los límites de memoria.

Para aplicar los límites, puede extraer memoria de las cargas de trabajo del proyecto.

Se permite una carga de trabajo para utilizar la memoria física hasta su límite. Una carga de trabajo puede utilizar memoria adicional siempre que el uso de memoria del sistema esté por debajo del umbral de aplicación del límite de la memoria.

Para definir el valor para la aplicación del límite, consulte Cómo establecer el umbral de aplicación del límite de memoria.

Cómo determinar valores límite

Si un límite de proyecto está configurado con un valor demasiado bajo, es posible que no haya suficiente memoria para que la carga de trabajo siga funcionando de forma eficaz en condiciones normales. La paginación que se produce porque la carga de trabajo requiere más memoria afecta negativamente al rendimiento del sistema.

Los proyectos que tienen límites demasiado elevados pueden consumir la memoria física disponible antes de alcanzar los límites. En ese caso, el núcleo administra de forma eficaz la memoria física, no el comando rcapd.

Tenga en cuenta los siguientes aspectos a la hora de determinar los límites de los proyectos.

Impacto en el sistema de E/S

El daemon puede intentar reducir el uso de memoria física de la carga de trabajo de un proyecto siempre que el uso muestreado supere el límite del proyecto. Durante la aplicación del límite, se utilizan los dispositivos de intercambio y otros dispositivos que contienen archivos que ha asignado la carga de trabajo. El rendimiento de los dispositivos de intercambio es un factor crítico a la hora de determinar el rendimiento de una carga de trabajo que excede su límite de forma rutinaria. La ejecución de la carga de trabajo es similar a su ejecución en un equipo con la misma cantidad de memoria física que el límite de la carga de trabajo.

Impacto en el uso de CPU

El uso de CPU del daemon varía según el número de procesos de las cargas de trabajo del proyecto que limita y el tamaño de los espacios de direccionamiento de las cargas de trabajo.

Una pequeña parte del tiempo de CPU del daemon se dedica a muestrear el uso de cada carga de trabajo. Añadir procesos a las cargas de trabajo aumenta el tiempo que se dedica a muestrear el uso.

Otra parte del tiempo de CPU del daemon se dedica a aplicar los límites cuando se superan. El tiempo dedicado es proporcional a la cantidad de memoria virtual asignada. El tiempo de CPU dedicado aumenta o disminuye según los cambios correspondientes en el tamaño total del espacio de direccionamiento de la carga de trabajo. Esta información se registra en la columna vm de la salida de rcapstat. Para obtener más información, consulte Supervisión del uso de recursos con rcapstat y la página del comando man rcapstat(1).

Informes de memoria compartida

El daemon rcapd informa al RSS sobre las páginas de memoria que se comparten con otros procesos o que se asignan varias veces en un mismo proceso, a modo de promedio bastante preciso. Si hay procesos de distintos proyectos que comparten la misma memoria, dicha memoria se cuenta con el total del RSS para todos los proyectos que comparten la memoria.

El promedio se utiliza con cargas de trabajo como bases de datos, que utilizan una gran cantidad de memoria compartida. Para las cargas de trabajo de bases de datos, también puede probar con un uso habitual del proyecto para definir un valor límite inicial apropiado utilizando el resultado de las opciones -J o -Z del comando prstat. Para obtener más información, consulte la página de comando man prstat(1M).

Intervalos de operación rcapd

Puede configurar los intervalos para las operaciones periódicas que lleve a cabo rcapd.

Todos los intervalos se especifican en segundos. En la tabla siguiente se describen las operaciones rcapd y sus valores de intervalo predeterminados.

Operación 

Valor de intervalo predeterminado en segundos 

Descripción 

scan

15 

Número de segundos entre exploraciones para los procesos que se han incorporado o extraído de una carga de trabajo del proyecto. El valor mínimo es de 1 segundo. 

sample

Número de segundos entre muestreos del tamaño del conjunto residente y las aplicaciones de límites subsiguientes. El valor mínimo es de 1 segundo. 

report

5  

Número de segundos entre actualizaciones de las estadísticas de paginación. Si se configura como 0, las estadísticas no se actualizan y la salida de rcapstat no es actual.

config

60 

Número de segundos entre reconfiguraciones. En un evento de reconfiguración, rcapadm lee el archivo de configuración para detectar las actualizaciones y busca en la base de datos project los límites de proyectos nuevos o revisados. El envío de SIGHUP a rcapd provoca una reconfiguración inmediata.

Para configurar los intervalos, consulte Cómo configurar intervalos de funcionamiento.

Cómo determinar los intervalos de exploración de rcapd

El intervalo de exploración controla la frecuencia con la que rcapd busca nuevos procesos. En los sistemas con múltiples procesos en ejecución, la exploración de la lista requiere más tiempo, de modo que quizá sea recomendable alargar el intervalo con el fin de reducir el tiempo de CPU global dedicado. Sin embargo, el intervalo de exploración también representa la cantidad de tiempo mínima durante la que debe existir un proceso para asignarse a una carga de trabajo limitada. Si hay cargas de trabajo que ejecutan múltiples procesos cortos, rcapd podría no atribuir los procesos a una carga de trabajo si se prolonga el intervalo de exploración.

Cómo determinar los intervalos de muestra

El intervalo de muestra configurado con rcapadm es la cantidad de tiempo más breve que rcapd espera entre el muestreo del uso de una carga de trabajo y la aplicación del límite si se supera. Si reduce este intervalo, de los casos rcapd aplicará los límites con mayor frecuencia, lo que posiblemente generará una mayor E/S debido a la paginación. Sin embargo, un intervalo de muestra más breve también puede disminuir el impacto que podría tener un aumento repentino del uso de memoria física de una carga de trabajo específica en otras cargas de trabajo. Se estrecha la ventana entre muestreos, en la que la carga de trabajo puede consumir memoria no afectada y posiblemente obtener memoria de otras cargas de trabajo limitadas.

Si el intervalo de muestra especificado como rcapstat es más breve que el intervalo especificado como rcapd con rcapadm, la salida de algunos intervalos puede ser cero. Esta situación tiene lugar porque rcapd no actualiza las estadísticas con mayor frecuencia que el intervalo especificado con rcapadm. El intervalo especificado con rcapadm es independiente del intervalo de muestreo que utiliza rcapstat.

Supervisión del uso de recursos con rcapstat

Utilice rcapstat para supervisar el uso de recursos de los proyectos limitados. Para ver un ejemplo del informe rcapstat, consulte Creación de informes con rcapstat.

Puede configurar el intervalo de muestreo para el informe y especificar el número de veces que se repiten las estadísticas.

intervalo

Especifica el intervalo de muestreo en segundos. El intervalo predeterminado es de 5 segundos.

count

Especifica el número de veces que se repiten las estadísticas. De modo predeterminado, rcapstat registra las estadísticas hasta que se recibe una señal de finalización o hasta que termina el proceso de rcapd.

Las estadísticas de paginación del primer informe que emite rcapstat muestran la actividad desde el inicio del daemon. Los informes subsiguientes reflejan la actividad desde que se emitió el último informe.

La tabla siguiente define las cabeceras de columna de un informe rcapstat.

Cabeceras de columna rcapstat

Descripción 

id

El ID de proyecto del proyecto limitado. 

project

El nombre de proyecto. 

nproc

El número de procesos del proyecto. 

vm

Cantidad total de memoria virtual que utilizan los procesos del proyecto, incluidos todos los archivos y dispositivos asignados, en kilobytes (K), megabytes (M) o gigabytes (G). 

rss

Cantidad estimada de tamaño del conjunto residente total (RSS) de los procesos del proyecto, en kilobytes (K), megabytes (M) o gigabytes (G), que no representan páginas compartidas. 

cap

El límite de RSS definido para el proyecto. Consulte Atributo para limitar el uso de memoria física para proyectos o la página de comando man rcapd(1M) para obtener información sobre cómo especificar límites de memoria.

at

Cantidad total de memoria que rcapd intenta extraer desde la última muestra de rcapstat.

avgat

Promedio de memoria que rcapd intenta extraer durante cada ciclo de muestra desde la última muestra de rcapstat. La frecuencia a la que el RSS de obtención de muestras rcapd puede establecerse con rcapadm. Consulte Intervalos de operación rcapd.

pg

Cantidad total de memoria que rcapd extrae correctamente desde la última muestra de rcapstat.

avgpg

Promedio estimado de la cantidad de memoria que rcapd extrae correctamente durante cada ciclo de muestra desde la última muestra de rcapstat. La frecuencia a la que los tamaños RSS de procesos de muestras rcapd pueden establecerse con rcapadm. Consulte Intervalos de operación rcapd.

Comandos utilizados con rcapd

Referencia de comando 

Descripción 

rcapstat(1)

Supervisa el uso de recursos de los proyectos limitados. 

rcapadm(1M)

Configura el daemon de límite de recursos, muestra el estado actual del daemon de límite de recursos si se ha configurado y habilita o inhabilita el límite de recursos.  

rcapd(1M)

El daemon de límite de recursos.