Como sabéis, el JES2 es el subsistema de entrada de trabajos, es decir, donde se ejecutan todos los procesos BATCH, STCs de sistema, usuarios, etc, y toda la ejecución se guarda en el SPOOL donde se almacenan los logs, hilos de ejecución y diversa información estadística.
Para que un JOB se ejecute, necesita de un iniciador para “entrar” en máquina. Estos Jobs suelen valerse de la clase de ejecución (ficha CLASS) para seleccionar el iniciador por donde van a entrar para ser ejecutados. Por poner un ejemplo, si tienes un job con clase D y los iniciadores solo aceptan las clases A y B, tu job no entrará jamas en el sistema y se quedará esperando indefinidamente.
Asimismo, si tengo 4 iniciadores activos que aceptan trabajos de clase A, yo podría lanzar hasta 4 trabajos CLASS=A y que se ejecuten en paralelo, compitiendo entre ellos por los recursos (de acuerdo a lo que le especifique el Work Load Manager en cuyo caso), pero si lanzo un quinto, se esperaría encolado a entrar en máquina hasta que alguno de los trabajos en ejecución acaben y quede el iniciador libre para dejar entrar al job siguiente.
Fig. 1: Pantalla INIT del SDSF (ahora, sin trabajos ejecutándose)
JES vs WLM
Los iniciadores pueden ser controlados y ser activados vía JES o vía WLM. La diferencia fundamental es que un iniciador JES es más bien estático, está siempre activo desde el mismo arranque del JES2 a la espera de que entren trabajos para ser ejecutados en función de las clases que atienden, mientras que los iniciadores controlados por WLM son dinámicos, se activan y desactivan a placer y según la carga de la máquina y de las condiciones de CPU, paginación y esperas del sistema.
Cual es mejor? Buena pregunta. Depende de muchos factores y de conocer muy bien tu instalación, porque tener todo JES2 puede llegar a ser bastante inamovible y acabar friendo la maquina (o peor, entrando en Capping!!), pero un dinamismo excesivo controlado por WLM puede hacer que en situaciones donde el consumo de CPU sea alto, WLM decida no arrancar más iniciadores para llegar al objetivo de carga, con lo que gran cantidad de trabajos quedarían encolados con la consiguiente afección al sistema. Cada Host es un mundo, por lo que tomar una decisión de este tipo es complejo. Hay instalaciones que tienen un sistema hibrido, algunas clases son controladas por WLM mientras que otras clases de rabiosa producción prefieren seguir siendo controladas por JES porque sabes que siempre estarán activas aunque luego se arrastren de lo lento que va todo.
Cambio de Clases de JES a WLM
Para cambiar clases de ejecución de JES a WLM, basta con ir teclear lo siguiente en la consola: $TJOBCLASS(A),MODE=WLM para cambiar la clase A de JES a WLM. O más fácil, al panel JC (Job Classes) del SDSF y cambiar la columna Mode de JES a WLM, así de sencillo.
Fig. 2: Cambio de las clases A, B y C de JES a WLM
Según el ejemplo de la Figura 2, todos los JOBs que tengan las clases A, B y C, pasarán a tener un iniciador controlado dinámicamente por WLM, mientras que el resto de clases pasarán por iniciadores controlados por JES.
Hay que recordar que aunque un job no tenga la clase controlada por WLM, NO SIGNIFICA que no pueda utilizar las prioridades de ejecución definidas por WLM en los capítulos anteriores para competir por los recursos de la máquina, sino que la entrada en máquina también estará controlada por WLM para salvaguadar los objetivos de ejecución (GOAL), cerrando el círculo.
Por tanto, dependerá de la instalación aplicar este tipo de políticas o no, como ya digo, si la máquina ya está ejecutando muchos Jobs, para llegar al objetivo de que los Jobs ejecutándose lo hagan lo mas rápido posible, WLM podría tomar la decisión de no arrancar mas iniciadores, dejando muchos Jobs encolados y podría ser contraproducente, y hubiera sido preferible que hubieran entrado, aun a costa de ralentizar aun mas la ejecución de los actuales.
Y esto ha sido todo por este mundillo del Work Load Manager. Recordad que esto no es mas que una escueta introducción, la verdadera investigación comienza ahora, leyendo manuales y probando como se comporta la máquina en función de las políticas que se diseñen.
Hola.
La información en tu blog me ha sido de mucha utilidad, agradezco tu intención y paciencia al mantener este maravilloso medio del mundo mainframe.
Mis muy sinceras gracias.
No hay de qué 😉