SafeChildren Banner

Havoc Oracle Solaris Experts

miércoles, 16 de junio de 2010

Cambios de Contexto (Context Switch) en Solaris

Introducción
Los cambios de contexto son la acción de almacenar y restaurar los registros de la CPU de un proceso con objeto de poder continuar su ejecución  en otro momento. Básicamente es el mecanismo para poder ejecutar múltiples procesos en una única CPU (multitarea)

Los cambios de contexto pueden ser debidos a eventos de multitarea (realizados por el Sistema Operativo) o por Interrupción Hardware.
  • Los debidos a multitarea se producen cuando dos -o más procesos- están peleando por los recursos del sistema, y o bien se ha quedado a la espera de I/O (waiting) o se ha expirado su tiempo de ejecución máxima. 
  • Los debidos a interrupción por hardware son aquellos que hacen un wake up cuando el hardware necesita que alguien gestione sus datos, por ejemplo una tarjeta de red cada vez que obtiene datos

Para gestionar todo esto tenemos variar opciones: Tipos de Planificadores (TS, FSS, FX, RT, IA) y Procesor Set.

Tipos de Planifcadores "Constantes"
Los tipos de planificadores nos permiten ajustar los parámetros de comportamiento de los procesos en varios aspectos, entre ellos, Tiempos de Ejecución <dentro de la CPU>, Prioridad, etc.

No voy a hacer un comentario muy exhaustivo sobre ellos ya que debo dedicarle un post completo, así que, simplemente deciros que podéis hacer referencia a los post de Cómo cambiar el planificador a un proceso o Cómo cambiar el planificador por defecto de Solaris y esperar a que hablemos de ello en las próximas semanas.

Processor Set
Un pset es un pool de procesadores a los cuales se le asignan unos procesos y éstos no pueden ejecutarse fuera de estos. Dicho de otra forma, supongamos que definimos un pset con las CPUs (1,2,3,4) y otro pset con las CPUs(5,6,7,8) además hacemos que, por ejemplo, Apache Tomcat esté unido al pset1 y que Apache HTTP esté unido al pset2 de esta forma, los <threads> the Tomcat, no "pelearan" por las CPUs con los <threads> de Apache HTTPD obteniendo menos (I)CSW

Coste de Cambio de Contexto
Generalmente supone un coste elevado ya que requiere un tiempo considerable de CPU, por ello, debemos tener en cuenta los valores de CSW -Context SWitch- y ICSW -Involuntary Context SWitch- que nos proporciona el comando </usr/sbin/mpstat>

Conclusión
En esta ocasión hemos visto un poco de teoría sobre el funcionamiento interno y su repercusión el en rendimiento del sistema. Esto, nos ayudará a comprender los siguiente post en los que hablaremos de mejora de aplicaciones J2EE -en cuanto a rendimiento- y continuaremos con la serie de Instalación de Apache Tomcat en Entornos de Producción


Referencias

    No hay comentarios:

    Publicar un comentario en la entrada