martes, 16 de diciembre de 2008

Memoria para trabajos batch

En el articulo anterior se explicaba como arrancar los subsistemas QBATCH y QINTER cambiando el subsistema de control a QCTL. Doy por supuesto que tenemos el ajuste de rendimiento del sistema activado.

Por omisión el subsistema QBATCH corre en el pool de memoria *BASE, esta configuración mezcla trabajos de sistema con nuestros trabajos por lotes, que posiblemente tienen unas necesidades de ejecución muy diferentes.

¿Como podemos asignar una memoria especial para nuestros trabajos por lotes en el subsistema QBATCH?, pues es sencillo:
  1. Debemos asignar memoria a un pool de memoria compartido, habitualmente para los trabajos del QBATCH se utiliza el *SHRPOOL1, calcular un tamaño mínimo para el pool (400 p.e. después se ajustara) y un nivel de actividad (numero trabajos activos al mismo tiempo en el pool, 10 p.e.) y ejecutar:
  2. CHGSHRPOOL POOL(*SHRPOOL1) SIZE(400) ACTLVL(10) PAGING(*CALC) TEXT('Batch jobs pool')
  3. Después añadir, al subsistema QBATCH, como segundo pool de memoria el *SHRPOOL1:
  4. CHGSBSD SBSD(QBATCH) POOLS((2 *SHRPOOL1))
  5. Una vez hecho, debemos cambiar el direccionamiento para que los trabajos que se sometan en este subsistema utilicen el segundo pool de memoria:
  6. CHGRTGE SBSD(QSYS/QBATCH) SEQNBR(9999) POOLID(2)
  7. A partir de este instante los trabajos que se sometan en el subsistema QBATCH utilizaran el pool de memoria *SHRPOOL1.
  8. El ajuste automático de rendimiento cambiará el tamaño de ese pool y su nivel de actividad según las necesidades de los trabajos, de la disponibilidad de recursos y de los parámetros que le indiquemos en la gestión de pools (WRKSHRPOOL).
Para más información podemos consultar los artículos:
Memoria para subsistema
Asignar prioridad automáticamente

lunes, 15 de diciembre de 2008

Subsistema de Control

Nuestro sistema iSeries (AS400) viene con dos configuraciones estándar de subsistema de control para la gestión de trabajos.

Esta configuración se controla con el valor de sistema QCTLSBSD, podemos visualizarlo con DSPSYSVAL SYSVAL(QCTLSBSD).

En los nuevos sistemas viene por defecto como QBASE, en este caso solo arranca unos pocos subsistemas (QSYSWRK, QUSRWRK, QSERVER, QSPL) y la gestión de rendimiento es más difícil, ya que casi todos los trabajos corren en el mismo pool de memoria.

La otra configuración estándar (que viene de los tiempos del S/38) es utilizar el subsistema QCTL, para activarlo solo hemos de cambiar el valor del sistema QCTLSBSD con:
CHGSYSVAL SYSVAL(QCTLSBSD) VALUE('QCTL QSYS ')

Para que el cambio se active deberemos realizar IPL del sistema, por lo tanto deberemos planificar este cambio para cuando sea posible hacerlo.

Ahora cuando arranquemos el sistema tendremos el subsistema de control QCTL en lugar del QBASE. Ademas deberemos incluir en nuestro programa de inicio (valor de sistema QSTRUPGM) el arranque de los subsistemas QBATCH (para trabajos por lotes) y QINTER (para trabajos interactivos) si es que lo hemos modificado.

Ya de paso podemos activar el ajuste automático de rendimiento del sistema con:
CHGSYSVAL SYSVAL(QPFRADJ) VALUE('2')
Este cambio indica al sistema que haga el ajuste de rendimiento en IPL y dinámicamente y entra en vigor inmediatamente.

Este ajuste incluye entre otros:
- Tamaño memoria
- Niveles de actividad
- Paginación

Para una información más detallada podemos consultar el documento Experience Report

martes, 2 de diciembre de 2008

Cambiar inicio de sesión

Como cambiar la pantalla de inicio de sesión del AS400.

Primero hemos de tener en cuenta que:
  • El inicio de sesión se asocia a un subsistema, por tanto podemos tener, para algunos subsistemas, diferentes pantallas de inicio de sesión.
  • No es buena idea cambiar la pantalla del subsistema QCTL.
  • También deberíamos crear la nueva pantalla en una biblioteca del sistema, como la QGPL, para evitar problemas en caso de restaurar el sistema.
Una vez tengamos claro los puntos anteriores, podemos continuar con el procedimiento:
  1. Crearemos la nueva pantalla tomando como base la del fuente ubicado en QGPL/QDDSSRC.QDSIGNON, la podemos copiar como MYSIGNON.
  2. CPYSRCF FROMFILE(QGPL/QDDSSRC) TOFILE(QGPL/QDDSSRC) FROMMBR(QDSIGNON) TOMBR(MYSIGNON)
  3. Editar el nuevo archivo de pantalla (tipo DSPF) con el PDM, o el SDA.
  4. Si lo que queremos es añadir un texto tipo ASCII Art, puede que nos sea más fácil añadirla con el SDA.
  5. Hemos de respetar todos los campos, si no queremos mostrarlos, los podemos configurar como ocultos, con la columna Use = H o con las palabras clave DSPATR(PR) y DSPATR(ND).
  6. Lo más habitual es solo dejar los campos de entrada Usuario (USERID) y Contraseña (PASSWRD) y de salida con el nombre del Sistema, Subsistema y dispositivo (SYSNAME, SBSNAME, DEVNAME).
  7. Una vez creada la nueva pantalla de inicio de sesión, podemos probarla creando un subsistema especial, ¿como hacerlo? ver la entrada publicada "Asignar prioridad automáticamente" para crear un subsistema SPECIAL.
  8. CHGSBSD SBSD(QGPL/SPECIAL) SGNDSPF(QGPL/MYSIGNON)
  9. Una vez comprobado el nuevo inicio de sesión funciona correctamente, ya podemos cambiar la configuración del subsistema QINTER:
  10. CHGSBSD SBSD(QINTER) SGNDSPF(QGPL/MYSIGNON)
  11. Una vez hecho esto debemos reiniciar el subsistema QINTER, si tenemos usuarios conectados deberemos buscar el momento adecuado para hacerlo.
  12. Esto deberíamos hacerlo desde la consola del sistema:
  13. ENDSBS SBS(QINTER) OPTION(*IMMED)
  14. y a continuación:
  15. STRSBS SBSD(QINTER)
  16. Y ya tenemos nuestra nueva pantalla de signon.