• principal_3

    Desde 2015, enseñando sobre el sistema operativo z/OS de IBM en esta web. z/OS se utiliza en máquinas llamadas Mainframe.

  • principal_1

    Para realizar el contenido, utilizo el producto de IBM llamado z/Development and Test Environtment Personal Edition. Este software permite emular un Mainframe y así poder utilizar z/OS para aprender.

  • principal_2

    Es utilizado por grandes empresas (bancos, aseguradoras...). Aquí aprenderás a instalar y configurar productos relacionados con z/OS.

  • principal_4

    ADCD es una distribución de z/OS que contiene productos de IBM como IMS, DB2, CICS, ZOWE, TWS, NetView, System Automation, etc.

Tutoriales Básicos - SDSF

Esta nueva entrada sobre tutoriales básicos va a tratar de SDSF (Spool Search and Display Facility). Esta utilidad se usa para gestionar todas las salidas que generan los procesos que se lanzan en el sistema. Estos procesos pueden estar en ejecución permanente, hasta que se pare el sistema, (STC – Started Task) o pueden realizar una acción concreta y terminar su ejecución (JOB). También hay otros procesos de usuario que se generan cuando te logas en TSO (TSU). Todas las salidas de los procesos se almacenan en el Spool. En esta entrada explicaré, con ejemplos, las opciones que considero que pueden ser más útiles o que más he utilizado.

Aquí dejo un enlace la página de IBM donde se pueden encontrar más detalles:

IBM - SDSF

El Spool dispone de unos recursos que se van utilizando cuando lanzamos procesos en el sistema. Cuando estos recursos se agotan, el sistema deja de funcionar, es decir, no podremos ejecutar cosas nuevas, los procesos que hay en ejecución empezarían a fallar, etc. Por eso muy importante hacer un buen mantenimiento del Spool. Esto se suele hacer mediante procesos automáticos que liberan salidas del Spool o por la labor que realizan los equipos de personas que trabajan en Operación, que se encargan de monitorizar que el uso de los recursos no alcance valores muy elevados.

Cuando entramos a SDSF, según nuestros permisos de usuario y la versión que tengamos, tendremos unas opciones u otras. Estas opciones permiten hacer muchas acciones que haríamos mediante comando de JES (JES2 o JES3). Yo voy a mostrar las opciones que aparecen en el caso de una versión zOS 1.13. A partir de la versión 2.1 de zOS, se añadieron más opciones para la gestión del sistema.

Nos encontramos la siguiente pantalla. En ella encontramos varias opciones, las más relevantes podrían ser:

DA – Sirve para ver las tareas (STC, JOB o TSU) en ejecución.

I – Sirve para ver los procesos que están esperando para entrar a ejecutarse.

O – Sirve para ver la salida que ha dejado terminado

H – Sirve para ver la salida “holdeada” que ha dejado un proceso terminado. Algunas salidas se “bloquean” para que algunos procesos automáticos no las quiten.

ST – Sirve para ver tareas en ejecución o tareas terminadas. IMPORTANTE: No todas las tareas en ejecución se pueden ver desde ST.

LOG – Sirve para ver el log del sistema.

SR – Sirve para ver replys del sistema (WTOR), es decir, mensajes que lanza el sistema para informar de alguna situación, pedir algún dato, pedir confirmación de una acción, etc.

MAS – Sirve para ver los sistemas que comparten el Spool.

JC – Sirve para ver las clases que hay definidas en el sistema y que se pueden ser usadas por un job.

INIT – Permite ver los iniciadores, que no van por Workload Manager, que hay definidos en el sistema.

LINE y NODE – Permite ver las líneas y nodos que conectan unos sistemas con otros.

SP – Lo usaremos para ver los volúmenes o discos que contienen el Spool.

RM – Se usa para monitorizar el uso de todos los recursos del Spool.

 

Un proceso pasa por distintas fases: primero entrará a la cola de “Input”, cuando tenga un Iniciador disponible, pasará a ejecutarse y pasaría a estar en la opción “DA”. Cuando finalice, pasará a estar en la cola de “Output” o en la cola de “Held output”.

Normalmente, cuando un proceso está en ejecución o terminado, se revisa usando la opción ST.

 

DA - Active users

 

Veremos los procesos que están en ejecución.

 

Podremos entrar con una “S” para ver la salida. En el caso de que, al entrar en la salida, aparezca el mensaje “NO DISPLAYABLE DATA” pondremos el comando “INPUT ON”.

NOTA: Sólo podremos ver la salida de aquellos procesos que tiene un JOBID, por ejemplo, STC01675. Los procesos que no tienen JOBID no se mostrarán en la opción ST de SDSF.

 

Una salida será similar a la siguiente imagen. Dentro de las salidas podemos buscar un texto concreto con el comando “FIND” o saltar a las distintas partes internas que tiene usando el comando “N” y pulsando intro. Repetiremos el comando “N” para saltar a la siguiente parte.

 

En el panel DA, si pulsamos F11 para desplazarnos a la derecha, encontraremos algunos datos como porcentaje de CPU (CPU%) o el uso de entrada/salida (SIO). Por ejemplo, podríamos pensar que un job se ha quedado pillado porque no genera líneas nuevas al entrar en la salida y no coge CPU (CPU% = 0.00), pero si vemos que el valor de “SIO” sube y baja, estará realizando acciones.

Si os fijáis en la imagen, con el proceso JES2 está ocurriendo eso.

 

Para poder filtrar los datos que obtenemos en los paneles DA, I, O, H y ST podemos utilizar los comandos “PRE” (prefix) y “OWNER”.

Usando “PRE DBAG*” nos mostrará aquellos procesos cuyo JOBNAME que empieza por DBAG. Para mostrar todos, podremos poner “PRE *” o, simplemente “PRE”.

NOTA: Con el comando “SET DISPLAY ON/OFF” pondremos y quitaremos la barra que aparece marcada en rojo en la imagen.

 

El comando Owner es similar, pero, en este caso, filtraremos por el usuario que ejecuta ese proceso. Por ejemplo, “OWNER WEBSRV”.

Para mostrar todos, podremos poner “OWNER *” o, simplemente, “OWNER”.

 

Al panel DA también se puede acceder de forma que veamos sólo los JOB (OJOB – Only JOB), las tareas STC (OSTC – Only STC) o los usuarios TSU (OTSU – Only TSU) que hay en ejecución en ese momento.

 

Desde DA podremos cancelar usuarios o jobs que estén en ejecución poniendo una “C” delante. Por ejemplo, voy a cancelar el usuario IBMUSER.

NOTA: No debemos parar tareas STC de esta forma. Según la tarea, tendrá sus propios comandos de parada o cancelación.

 

Para continuar con la acción, elegiremos la opción 1.

 

Cuando cancelamos un job o un usuario, el proceso terminará con un código de abend (abnormal end) S222.

 

I – Input queue

En esta cola veremos los procesos que están esperando a tener un iniciador disponible para poderse ejecutar.

 

En la imagen vemos dos jobs esperando. Si nos fijamos en la columna “Pos”, veremos su posición en la cola.

 

Con una “J” delante del job deseado, forzaremos su ejecución para “colarlo” y que se ejecute antes que otros. En algunas instalaciones, aunque se tenga permisos para hacerlo, puede estar prohibido.

 

En algunas ocasiones, algunos jobs se dejan en la cola de Input en estado “holdeado” para que no se ejecuten hasta que los liberemos manualmente. Para liberarlo, usaremos la letra “A”. En este ejemplo, vemos el job PRUEBA03 en “STATUS HOLD”. Lo liberaremos con A y ocupará la posición que le toca en la cola.

NOTA: Si queremos holdear un job que ya está en la cola input, pondremos una H.

 

ST – Status of jobs.

“Me salto” las opciones O y H porque, habitualmente, las salidas de los jobs terminados se suelen mirar desde la opción ST.

 

Además de poder acceder a la salida de un job usando la letra “S” como hemos visto anteriormente, si pulsamos F11 para desplazarnos a la derecha, veremos la columna TGNum. Esa columna indica cuanto ocupa en el spool esa salida.

 

Si usamos el signo de interrogación ‘?’ en la línea de comandos, podremos ver otras columnas que están ocultas.

 

Si ponemos la interrogación a nivel de salida, podremos cada una de las partes que componen la salida completa. Entraremos cada parte con una “S”. Esto es útil cuando queremos encontrar algo concreto en una salida con muchas líneas y sabemos la parte donde se puede encontrar.

 

Con el comando “P” podremos purgar, es decir, eliminar una salida. Hay que tener mucho cuidado con esta opción porque no podremos recuperar la salida.

 

Pedirá confirmación.

 

Podemos purgar varias salidas a la vez de la siguiente forma:

 

Con el comando “SJ” accederemos al JCL que está ejecutando ese JOB.

 

Con la opción “XDC” podremos pasar una salida a un dataset para conservarla.

 

Aparecerá el siguiente panel en el que habrá que rellenar los datos.

 

Saldrá un mensaje indicando las líneas que se han copiado a dataset.

 

Tendremos el dataset con la información de la salida.

 

LOG – System log

 

Aquí veremos la información de lo que ocurre en el sistema, al igual que saldría por consola. Podemos movernos con las teclas F7, F8, F10 y F11. También podemos usar el comando “FIND” para buscar lo que deseemos.

 

El log se corresponde con la tarea SYSLOG.

 

SR – System request.

 

Sirve para ver replys pendientes en el sistema. Una forma de responder aquellos mensajes que requieran respuesta es poner una “R” delante del mensaje deseado.

 

Aparecerá una ventana en la que pondremos nuestra respuesta.

 

MAS – Members in the MAS.

 

Aquí veremos los sistemas que componen el spool. Si hay varios sistemas, quiere decir que el spool es compartido. Además, en la parte de arriba, podemos ver el porcentaje de uso del spool. En este caso está al 32%.

 

JC – Job classes.

 

En esta opción veremos las clases disponibles para asignar a los jobs. Cada clase tendrá unas características distintas, por ejemplo, la duración máxima del job. Normalmente, nos dirán que clase debemos usar para nuestros procesos.

 

INIT – Initiators.

 

Esta opción voy a hacer a modo informativo ya en muchas instalaciones está prohibido tocar los iniciadores. Yo no recomiendo tocarlos a menos que alguien de un departamento superior lo pida o se haga siguiendo instrucciones de algún procedimiento habitual. Normalmente, los iniciadores se paran antes de comenzar con ciertas intervenciones, por ejemplo, un IPL.

En la pantalla de Init nos encontraremos lo que vemos en la imagen. El status “INACTIVE” significa que el iniciador está arrancado, pero está a la espera de algún job para empezar a ejecutarlo, por lo tanto, no es un estado “anómalo”. El status “DRAINED” indica que el iniciador está parado.

Desde este panel los iniciadores pueden ser arrancados “S” o parados “P”.

Si no tenemos iniciadores activos, y estamos seguros de que no existen iniciadores controlados por WORKLOAD MANAGER, los jobs no se ejecutarán

 

Además podremos cambiar la clase que atiende un iniciador escribiendo en el campo “CLASSES” las clases deseadas.

NOTA: Recuerdo que esto es informativo. NO tocar esta configuración en un sistema de un cliente a no ser que sea solicitado.

 

RM –  Resource monitor.

 

Aquí podremos ver los distintos recursos del Spool. Podremos observar el porcentaje de uso y su límite. Algunos recursos son:

JNUM. Número total de procesos (STC, JOBS y TSU)

JOES. Número de jobs en la cola de output.

JQES. Número de jobs en la cola para ejecutarse.

TGS. Número total de líneas de los jobs.

 

Todas estas cifras se reducen cuando purgamos o sacamos del spool salidas antiguas.

 

Hasta aquí las opciones más relevantes que se me han ocurrido. Su recuerdo alguna más, actualizaré la entrada.

Si alguien me lo pide, puedo hacer un tutorial básico de comandos de JES2 para complementar esta entrada.

 

 

Publish modules to the "offcanvs" position.