System values, PTFs, IPL, monitoreo de estado, performance basico, gestion de disco y planificacion de tareas en IBM i.
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
IBM i
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.
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 allocationEstos son los system values que todo administrador de IBM i debe conocer y monitorear. Estan organizados por categoria funcional.
QSECURITYRecomendado: 40 o 50Nivel 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 5Numero maximo de intentos fallidos de login antes de deshabilitar el perfil. Previene ataques de fuerza bruta.
QPWDEXPITVRecomendado: 60 a 90Intervalo 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 60Tiempo de inactividad en minutos antes de desconectar la sesion. Evita sesiones abandonadas.
QDATETIMEFecha y hora del sistema. Se puede cambiar manualmente o sincronizar con un servidor NTP usando SNTP.
QDATFMTFormato de fecha del sistema (*MDY, *DMY, *YMD, *ISO). Afecta como se muestran las fechas en pantallas 5250.
QTIMSEPSeparador de hora (: por defecto). Algunos paises usan punto.
QUTCOFFSETOffset respecto a UTC. Necesario para que las funciones de timestamp SQL funcionen correctamente.
QCCSIDCoded Character Set Identifier del sistema. Define la codificacion de caracteres por defecto (ej: 65535, 37, 280).
QMAXJOBNumero maximo de trabajos activos en el sistema. Si se alcanza, no se pueden iniciar nuevos trabajos.
QJOBMSGQFLAccion cuando la cola de mensajes de un trabajo se llena (*NOWRAP, *WRAP, *PRTWRAP). Afecta la diagnostica de errores.
QCTLSBSDSubsistema de control (normalmente QCTL). Es el primer subsistema que arranca y el ultimo en detenerse.
QIPLTYPETipo de IPL que se hara en el proximo restart (0=atendido, 1=desatendido, 2=solo consola).
QPFRADJAjuste automatico de performance. Cuando esta en 2 o 3, el sistema ajusta automaticamente los pools de memoria.
-- 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';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.
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)
*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.DSPPTF SELECT(*ACNREQ) para ver cuales requieren accion adicional.-- 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;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.
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.
Power On Reset
El hardware inicia y ejecuta diagnosticos. Se carga el Licensed Internal Code (LIC).
LIC IPL
Se inicializa el almacenamiento, se verifica integridad del disco y se monta el ASP del sistema.
OS IPL
Se carga el sistema operativo. Se ejecuta la recuperacion de journals y commitment control.
Inicio de subsistemas
Arranca QCTL (subsistema de control) que luego arranca QINTER, QBATCH, QCMN, etc.
Programa de arranque
Se ejecuta el programa definido en QSTRUPPGM (startup program). Tipicamente arranca subsistemas y servicios.
Sistema disponible
El sistema esta listo para recibir sesiones de usuario.
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 IPLOPTION(*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.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.
WRKSYSSTSWork with System Status. Muestra uso de CPU, pools de memoria, transiciones de pagina, y estado general del sistema. Es el 'top' de IBM i.
WRKACTJOBWork with Active Jobs. Lista todos los trabajos activos con CPU, estado, subsistema y tipo. Es como 'ps aux' combinado con 'top'.
WRKSYSACTWork with System Activity. Muestra actividad del sistema en tiempo real con refrescado automatico. Mas detallado que WRKSYSSTS.
WRKDSKSTSWork with Disk Status. Muestra uso y performance de cada unidad de disco (brazos). Es como 'iostat' de Linux.
WRKSBSDWork with Subsystem Descriptions. Lista subsistemas y su estado (activo/inactivo). Los subsistemas son como 'systemd units'.
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
-- 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;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.
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:
*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 ajusteUser poolsPools de usuarioPools custom para aplicaciones o subsistemas especificosA medidaWRKSYSSTS 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 + notificacionCPU %
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.
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.
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
-- 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;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.
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.
WRKSYSVALTrabajar con system valuesCHGSYSVALCambiar un system valueDSPSYSVALVer el valor de un system valueDSPPTFVer PTFs aplicadasWRKPTFGRPVer grupos de PTFsAPYPTFAplicar PTFsPWRDWNSYSApagar o reiniciar el sistema (IPL)WRKSYSSTSEstado del sistema (CPU, memoria, pools)WRKACTJOBTrabajos activosWRKDSKSTSEstado de discosWRKSYSACTActividad del sistema en tiempo realWRKJOBSCDEPlanificador de trabajosDSPMSG QSYSOPRMensajes del operador del sistemaDSPLOGVer el history log del sistema