Gestion del Sistema

System values, PTFs, IPL, monitoreo de estado, performance basico, gestion de disco y planificacion de tareas en IBM i.

System Values

Los System Values son parametros globales que controlan el comportamiento del sistema operativo IBM i. Son el equivalente a los archivos de configuracion en Linux (/etc/sysctl.conf, /etc/security/limits.conf), pero centralizados en un solo mecanismo integrado al SO.

Linux / x86

  • Configuracion dispersa en /etc/, /proc/, variables de entorno
  • Cada servicio tiene su propio archivo de configuracion
  • Cambios con vi/nano + systemctl restart
  • No hay validacion centralizada de valores
  • Configuracion de seguridad separada del kernel
  • Requiere documentacion externa para saber que parametro afecta que

IBM i

  • Todos los parametros en un solo mecanismo (WRKSYSVAL)
  • Afectan a todo el sistema de forma consistente
  • Cambios con CHGSYSVAL, algunos requieren IPL
  • El sistema valida rangos y tipos de valores
  • Seguridad, performance y comportamiento en un solo lugar
  • Cada system value tiene documentacion integrada (F1)

Hay mas de 200 system values organizados en categorias. Los mas importantes para administracion son los de seguridad, fecha/hora, control de trabajos y limites del sistema.

CL — Trabajar con System Values
WRKSYSVAL                           Lista todos los system values
WRKSYSVAL SYSVAL(QSECURITY)         Ir directo a un valor
DSPSYSVAL SYSVAL(QMAXSIGN)          Ver el valor actual
CHGSYSVAL SYSVAL(QMAXSIGN) VALUE('5')  Cambiar un valor
WRKSYSVAL *SEC                       Filtrar por categoria seguridad
WRKSYSVAL *ALC                       Filtrar por categoria allocation

System Values clave

Estos son los system values que todo administrador de IBM i debe conocer y monitorear. Estan organizados por categoria funcional.

Seguridad

QSECURITYRecomendado: 40 o 50

Nivel de seguridad del sistema (20, 30, 40, 50). Define la rigidez de los controles de acceso. El estandar es 40 o 50.

QMAXSIGNRecomendado: 3 a 5

Numero maximo de intentos fallidos de login antes de deshabilitar el perfil. Previene ataques de fuerza bruta.

QPWDEXPITVRecomendado: 60 a 90

Intervalo de expiracion de contrasenas en dias. Define cada cuanto se obliga al usuario a cambiar su password.

QPWDMINLENRecomendado: 8+

Largo minimo de contrasena. Valor recomendado de al menos 8 caracteres.

QLMTSECOFRRecomendado: 1 (habilitado)

Limita el uso de perfiles *SECOFR y *ALLOBJ a dispositivos especificos. Previene acceso administrativo desde cualquier terminal.

QINACTITVRecomendado: 15 a 60

Tiempo de inactividad en minutos antes de desconectar la sesion. Evita sesiones abandonadas.

Fecha, hora y entorno

QDATETIME

Fecha y hora del sistema. Se puede cambiar manualmente o sincronizar con un servidor NTP usando SNTP.

QDATFMT

Formato de fecha del sistema (*MDY, *DMY, *YMD, *ISO). Afecta como se muestran las fechas en pantallas 5250.

QTIMSEP

Separador de hora (: por defecto). Algunos paises usan punto.

QUTCOFFSET

Offset respecto a UTC. Necesario para que las funciones de timestamp SQL funcionen correctamente.

QCCSID

Coded Character Set Identifier del sistema. Define la codificacion de caracteres por defecto (ej: 65535, 37, 280).

Control de trabajos y sistema

QMAXJOB

Numero maximo de trabajos activos en el sistema. Si se alcanza, no se pueden iniciar nuevos trabajos.

QJOBMSGQFL

Accion cuando la cola de mensajes de un trabajo se llena (*NOWRAP, *WRAP, *PRTWRAP). Afecta la diagnostica de errores.

QCTLSBSD

Subsistema de control (normalmente QCTL). Es el primer subsistema que arranca y el ultimo en detenerse.

QIPLTYPE

Tipo de IPL que se hara en el proximo restart (0=atendido, 1=desatendido, 2=solo consola).

QPFRADJ

Ajuste automatico de performance. Cuando esta en 2 o 3, el sistema ajusta automaticamente los pools de memoria.

SQL — Consultar system values via SQL
-- Ver todos los system values de seguridad
SELECT SYSTEM_VALUE_NAME, CURRENT_NUMERIC_VALUE,
       CURRENT_CHARACTER_VALUE
FROM QSYS2.SYSTEM_VALUE_INFO
WHERE SYSTEM_VALUE_NAME LIKE 'QSEC%'
   OR SYSTEM_VALUE_NAME LIKE 'QPWD%'
   OR SYSTEM_VALUE_NAME LIKE 'QMAX%'
ORDER BY SYSTEM_VALUE_NAME;

-- Ver un valor especifico
SELECT CURRENT_NUMERIC_VALUE
FROM QSYS2.SYSTEM_VALUE_INFO
WHERE SYSTEM_VALUE_NAME = 'QSECURITY';

PTFs (Program Temporary Fixes)

Las PTFs son parches del sistema operativo y productos licenciados. Son el equivalente a los paquetes de actualizacion en Linux (apt update && apt upgrade). IBM publica PTFs individuales y grupos de PTFs que agrupan correcciones relacionadas.

PTF individual

Corrige un problema especifico. Se identifica con un ID como SI99999. Puede tener pre-requisitos.

PTF Group

Agrupacion de PTFs relacionadas. Ej: SF99950 (Technology Refresh), SF99730 (DB2 Group). Se aplican como conjunto.

Technology Refresh (TR)

Actualizaciones semestrales que agregan funcionalidad nueva al SO. Se entregan como PTF Group.

Cumulative PTF Package

Paquete acumulativo que incluye todas las PTFs hasta una fecha determinada. Se aplica periodicamente como mantenimiento.

CL — Gestion de PTFs
DSPPTF                              Ver PTFs aplicadas al sistema
DSPPTF LICPGM(5770SS1) SELECT(*ALL) Ver PTFs del SO base
WRKPTFGRP                           Ver grupos de PTFs instalados
DSPPTF PTFID(SI99999)               Ver detalle de una PTF especifica

LODPTF DEV(OPTVRT01) PTFID(SI99999)   Cargar PTF desde medio
APYPTF LICPGM(5770SS1) APY(*TEMP)     Aplicar temporalmente
APYPTF LICPGM(5770SS1) APY(*PERM)     Aplicar permanentemente

RMVPTF LICPGM(5770SS1) PTFID(SI99999) Quitar una PTF temporal
SNDPTFORD PTFID(SI99999)              Pedir PTF a IBM (requiere contrato)
Aplicacion temporal vs permanente: Una PTF aplicada temporalmente (*TEMP) puede revertirse sin IPL. Una vez aplicada permanentemente (*PERM) no se puede quitar. La practica comun es aplicar temporalmente, probar por unos dias, y luego hacer permanente.
Importante: Algunas PTFs requieren un IPL para activarse. El sistema las marca como "delayed". Es recomendable revisar DSPPTF SELECT(*ACNREQ) para ver cuales requieren accion adicional.
SQL — Consultar PTFs via SQL
-- Ver PTFs aplicadas al sistema base
SELECT PTF_IDENTIFIER, PTF_IPL_ACTION,
       PTF_STATUS_MESSAGE, PTF_LOADED_STATUS
FROM QSYS2.PTF_INFO
WHERE PTF_PRODUCT_ID = '5770SS1'
ORDER BY PTF_IDENTIFIER DESC
FETCH FIRST 20 ROWS ONLY;

-- Ver grupos de PTFs y su nivel
SELECT PTF_GROUP_NAME, PTF_GROUP_LEVEL,
       PTF_GROUP_STATUS
FROM QSYS2.GROUP_PTF_INFO
ORDER BY PTF_GROUP_NAME;

IPL (Initial Program Load)

El IPL es el proceso de arranque (boot) del sistema IBM i. Es el equivalente a reiniciar un servidor Linux, pero con diferencias importantes: el IPL en IBM i es un proceso mas largo y controlado porque el sistema debe verificar la integridad de todos los objetos y recuperar journals pendientes.

Tipos de IPL

IPL Atendido (QIPLTYPE 0)

El operador puede intervenir durante el arranque. Se muestra el menu de IPL en consola. Usado para mantenimiento.

IPL Desatendido (QIPLTYPE 1)

Arranca automaticamente sin intervencion. Usado para reinicios planificados nocturnos o de fin de semana.

IPL Tipo A

Arranca desde la copia A del Licensed Internal Code (LIC). Es la copia de produccion. Modo normal.

IPL Tipo B

Arranca desde la copia B del LIC. Se usa despues de aplicar actualizaciones al LIC. La copia B es la alternativa.

IPL Tipo D

Arranca desde medios (cinta, DVD, virtual). Usado para instalacion del SO o recuperacion de desastres.

Proceso de IPL

1

Power On Reset

El hardware inicia y ejecuta diagnosticos. Se carga el Licensed Internal Code (LIC).

2

LIC IPL

Se inicializa el almacenamiento, se verifica integridad del disco y se monta el ASP del sistema.

3

OS IPL

Se carga el sistema operativo. Se ejecuta la recuperacion de journals y commitment control.

4

Inicio de subsistemas

Arranca QCTL (subsistema de control) que luego arranca QINTER, QBATCH, QCMN, etc.

5

Programa de arranque

Se ejecuta el programa definido en QSTRUPPGM (startup program). Tipicamente arranca subsistemas y servicios.

6

Sistema disponible

El sistema esta listo para recibir sesiones de usuario.

CL — Comandos de IPL
PWRDWNSYS OPTION(*IMMED) RESTART(*YES)    Reiniciar inmediatamente
PWRDWNSYS OPTION(*CNTRLD) DELAY(300)       Apagado controlado (5 min)
PWRDWNSYS OPTION(*CNTRLD) DELAY(600) RESTART(*YES)  Reinicio controlado

DSPSYSVAL SYSVAL(QIPLTYPE)           Ver tipo de IPL configurado
CHGSYSVAL SYSVAL(QIPLTYPE) VALUE('1')  Configurar IPL desatendido
DSPSYSVAL SYSVAL(QIPLDATTIM)         Ver fecha/hora programada de IPL

CHGSYSVAL SYSVAL(QIPLDATTIM) VALUE('03/15/26 23:00:00')  Programar IPL
Cuidado: Un IPL con OPTION(*IMMED) termina todos los trabajos sin esperar. Datos no grabados se pueden perder. Siempre usar OPTION(*CNTRLD) con un DELAY suficiente para que los trabajos terminen ordenadamente.

Monitoreo de estado del sistema

IBM i ofrece varios comandos y herramientas para monitorear el estado del sistema en tiempo real. Estos son los equivalentes a top, htop, vmstat y iostat de Linux.

WRKSYSSTS

Work with System Status. Muestra uso de CPU, pools de memoria, transiciones de pagina, y estado general del sistema. Es el 'top' de IBM i.

WRKACTJOB

Work with Active Jobs. Lista todos los trabajos activos con CPU, estado, subsistema y tipo. Es como 'ps aux' combinado con 'top'.

WRKSYSACT

Work with System Activity. Muestra actividad del sistema en tiempo real con refrescado automatico. Mas detallado que WRKSYSSTS.

WRKDSKSTS

Work with Disk Status. Muestra uso y performance de cada unidad de disco (brazos). Es como 'iostat' de Linux.

WRKSBSD

Work with Subsystem Descriptions. Lista subsistemas y su estado (activo/inactivo). Los subsistemas son como 'systemd units'.

CL — Monitoreo rapido
WRKSYSSTS                           Estado general del sistema
WRKACTJOB SBS(QINTER)               Solo trabajos interactivos
WRKACTJOB SBS(QBATCH)               Solo trabajos batch
WRKACTJOB JOB(QZDASOINIT)           Trabajos de SQL (ODBC/JDBC)
WRKSYSACT                            Actividad en tiempo real

DSPMSG QSYSOPR                      Ver mensajes del operador
DSPLOG LOG(QHST)                    Ver log historico del sistema
SQL — Monitoreo via SQL
-- Estado del sistema (equivale a WRKSYSSTS)
SELECT TOTAL_JOBS, ACTIVE_JOBS_IN_SYSTEM,
       CURRENT_CPU_CAPACITY,
       SYSTEM_ASP_USED, TOTAL_AUXILIARY_STORAGE
FROM QSYS2.SYSTEM_STATUS;

-- Trabajos activos con mas consumo de CPU
SELECT JOB_NAME, AUTHORIZATION_NAME, SUBSYSTEM,
       ELAPSED_CPU_PERCENTAGE, FUNCTION_TYPE, FUNCTION
FROM QSYS2.ACTIVE_JOB_INFO
WHERE ELAPSED_CPU_PERCENTAGE > 0
ORDER BY ELAPSED_CPU_PERCENTAGE DESC
FETCH FIRST 15 ROWS ONLY;

-- Subsistemas activos
SELECT SUBSYSTEM_DESCRIPTION_LIBRARY,
       SUBSYSTEM_DESCRIPTION, STATUS,
       CURRENT_ACTIVE_JOBS, MAXIMUM_ACTIVE_JOBS
FROM QSYS2.ACTIVE_SUBSYSTEM_INFO;

Performance basico

El tuning de performance en IBM i se centra en tres areas principales: CPU, memoria (pools) y disco. El sistema tiene un mecanismo de ajuste automatico (QPFRADJ) que funciona bien para la mayoria de los casos, pero es importante entender los conceptos.

Memory Pools

La memoria en IBM i se divide en pools. Cada pool tiene una cantidad asignada de memoria y un nivel de actividad (cuantos threads pueden estar activos simultaneamente). Los pools principales son:

PoolNombreUsoAjuste
*MACHINEPool de maquinaKernel y funciones internas del SONo tocar
*BASEPool baseTrabajos batch y subsistemas que no tienen pool propioAutomatico
*INTERACTPool interactivoSesiones 5250 y trabajos interactivosAjustar segun usuarios
*SPOOLPool de spoolImpresion y procesamiento de spool filesRaramente necesita ajuste
User poolsPools de usuarioPools custom para aplicaciones o subsistemas especificosA medida
CL — Performance pools
WRKSYSSTS                            Ver pools y su uso de memoria
WRKSHRPOOL                           Ver/modificar shared memory pools
CHGSYSVAL SYSVAL(QPFRADJ) VALUE('2')  Activar ajuste automatico (recomendado)
CHGSYSVAL SYSVAL(QPFRADJ) VALUE('3')  Ajuste automatico + notificacion

Indicadores clave de performance

CPU %

Uso de procesador. Arriba de 80% sostenido indica saturacion.

Faulting rate

Fallos de pagina por segundo. Si es alto, el pool necesita mas memoria.

Disk % busy

Porcentaje de ocupacion del brazo de disco. Arriba de 40% puede causar lentitud.

Active-to-wait

Transiciones de activo a espera. Indica cuanto se mueven los trabajos entre estados.

Gestion de disco

El almacenamiento en IBM i se gestiona a traves de ASPs (Auxiliary Storage Pools). El ASP del sistema (ASP 1) contiene el SO y objetos del sistema. Se pueden crear ASPs de usuario para separar datos.

CL — Comandos de disco
WRKDSKSTS                            Ver estado de todas las unidades
WRKASPBRM                            Gestion de ASPs con BRMS
DSPASPSTS ASP(1)                     Estado del ASP del sistema

RCLSTG *SELECT                       Reclamar storage no utilizado
RGZPFM FILE(MILIB/CLIENTES)          Reorganizar archivo fisico (defrag)
DSPLIB LIB(MILIB)                    Ver tamanio de una biblioteca
SQL — Consultar uso de disco
-- Uso del ASP del sistema
SELECT SYSTEM_ASP_USED AS porcentaje_usado,
       TOTAL_AUXILIARY_STORAGE AS total_gb
FROM QSYS2.SYSTEM_STATUS;

-- Tamanio de bibliotecas
SELECT OBJNAME AS biblioteca,
       OBJSIZE / 1024 / 1024 AS tamano_mb
FROM TABLE(QSYS2.OBJECT_STATISTICS('QSYS', '*LIB'))
ORDER BY OBJSIZE DESC
FETCH FIRST 20 ROWS ONLY;

-- Archivos mas grandes del sistema
SELECT OBJNAME, OBJLIB,
       OBJSIZE / 1024 / 1024 AS tamano_mb,
       NUMBER_ROWS
FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALL', '*FILE'))
ORDER BY OBJSIZE DESC
FETCH FIRST 20 ROWS ONLY;
Alerta de disco: Cuando el ASP del sistema supera el 90% de uso, el rendimiento se degrada significativamente. Al llegar al 95%, el sistema puede entrar en un estado restringido. Es critico monitorear el espacio y tener alertas automaticas configuradas.

Planificacion de trabajos

IBM i incluye un planificador de trabajos nativo (WRKJOBSCDE) que permite programar la ejecucion de comandos y programas en horarios especificos. Es el equivalente a cron en Linux, pero integrado al SO y con interfaz interactiva.

CL — Job Scheduler
WRKJOBSCDE                           Ver/gestionar trabajos programados
ADDJOBSCDE JOB(BKPNOCHE)            Agregar un trabajo programado
  CMD(CALL PGM(MILIB/BKPNOCHE))
  FRQ(*WEEKLY)
  SCDDATE(*NONE)
  SCDDAY(*MON *TUE *WED *THU *FRI)
  SCDTIME('230000')

ADDJOBSCDE JOB(RPTMENSUAL)          Reporte mensual
  CMD(CALL PGM(MILIB/RPTMENSUAL))
  FRQ(*MONTHLY)
  SCDDATE(*MONTHSTR)
  SCDTIME('060000')

RMVJOBSCDE JOB(BKPNOCHE)            Eliminar un trabajo programado
CHGJOBSCDE JOB(BKPNOCHE) STATUS(*HLD)  Poner en hold (pausar)

Frecuencia *WEEKLY

Se ejecuta los dias de la semana especificados. Ideal para backups nocturnos y tareas de mantenimiento.

Frecuencia *MONTHLY

Se ejecuta una vez al mes en la fecha indicada. Usado para reportes mensuales y cierres.

Frecuencia *ONCE

Se ejecuta una sola vez en la fecha y hora programadas. Para tareas puntuales.

Frecuencia *MINUTES

Se repite cada N minutos. Usado para monitoreo y procesos ciclicos.

Resumen de comandos

ComandoFuncion
WRKSYSVALTrabajar con system values
CHGSYSVALCambiar un system value
DSPSYSVALVer el valor de un system value
DSPPTFVer PTFs aplicadas
WRKPTFGRPVer grupos de PTFs
APYPTFAplicar PTFs
PWRDWNSYSApagar o reiniciar el sistema (IPL)
WRKSYSSTSEstado del sistema (CPU, memoria, pools)
WRKACTJOBTrabajos activos
WRKDSKSTSEstado de discos
WRKSYSACTActividad del sistema en tiempo real
WRKJOBSCDEPlanificador de trabajos
DSPMSG QSYSOPRMensajes del operador del sistema
DSPLOGVer el history log del sistema