Вы находитесь на странице: 1из 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

ndice
1. Introduccin a la resolucin de problemas ....................................................................... 11 1.1 Proceso de determinacin de problemas .................................................................... 11
1.1.1 Definiendo el problema ................................................................................................... 11 1.1.2 Recolectando informacin del usuario ............................................................................ 11 1.1.3 Recolectando informacin del sistema ............................................................................ 12 1.1.4 Resolviendo el problema ................................................................................................. 13 1.1.5 Obteniendo parches de software...................................................................................... 13 1.1.6 Otra documentacin relevante ......................................................................................... 13

1.2 Evitar los problemas ................................................................................................... 14


1.2.1 Verificaciones preventivas .............................................................................................. 14

2. LVM, file systems, y determinacin de problemas de disco............................................ 16 2.1 Estructuras de datos en el LVM ................................................................................. 16
2.1.1 Volmenes fsicos ........................................................................................................... 16 2.1.2 Grupos de volmenes ...................................................................................................... 16 2.1.3 Volmenes lgicos .......................................................................................................... 17 2.1.4 Object Data Manager (ODM).......................................................................................... 17

2.2 Determinacin de problemas del LVM ...................................................................... 17


2.2.1 Redistribucin de datos ................................................................................................... 17 2.2.2 Backup de la informacin................................................................................................ 18 2.2.3 Re-sincronizacin de la ODM ......................................................................................... 18 2.2.4 Entendiendo los problemas del importvg ........................................................................ 19
2.2.4.1 Nivel de versin de AIX......................................................................................................... 19 2.2.4.2 PVID invlido ........................................................................................................................ 19 2.2.4.3 Modificacin de algn disco mientras el grupo de volmenes estaba exportado................... 20 2.2.4.4 Entorno de discos compartidos .............................................................................................. 20

2.2.5 Extendiendo la cantidad mxima de particiones fsicas .................................................. 20

2.3 Reemplazo de discos .................................................................................................. 21


2.3.1 Reemplazando un disco ................................................................................................... 21
2.3.1.1 Eliminando un disco defectuoso............................................................................................. 23 2.3.1.2 Agregando un disco nuevo..................................................................................................... 23

2.3.2 Recuperando un disco removido incorrectamente........................................................... 25

2.4 EL JFS en AIX ........................................................................................................... 26


2.4.1 Creando un JFS................................................................................................................ 26 2.4.2 Aumentando el tamao del file system............................................................................ 27 2.4.3 Verificacin y recuperacin de file systems.................................................................... 27
2.4.3.1 Reparando un superbloque daado......................................................................................... 28

2.4.4 Asignacin de archivos sparse (esparcidos) .................................................................... 28 2.4.5 Problemas desmontando file systems .............................................................................. 29 2.4.6 Eliminando file systems .................................................................................................. 30

2.5 Espacio de paginado ................................................................................................... 30


2.5.1 Recomendaciones para crear o extender los espacios de paginado ................................. 31 2.5.2 Cmo determinar si hace falta ms espacio de paginado ................................................ 31 2.5.3 Cmo disminuir el espacio de paginado por defecto (hd6) ............................................. 32

3. Dumps del sistema............................................................................................................ 35 3.1 Configuracin de los dispositivos de dump................................................................ 35


3.1.1 Estimar el tamao de un posible dump............................................................................ 35 3.1.2 Seleccionando el dispositivo de dump............................................................................. 35
Pgina 2 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

3.1.3 Creando un dispositivo de dump ..................................................................................... 36 3.1.4 Cambiando el tamao del dispositivo de dump............................................................... 37 3.1.5 Configuracin adicional .................................................................................................. 38

3.2 Revisando el estado del dump .................................................................................... 39


3.2.1 Informacin del ltimo dump .......................................................................................... 39 3.2.2 Cdigos de estado de un dump ........................................................................................ 39 3.2.3 Log de errores.................................................................................................................. 40

3.3 Core dump .................................................................................................................. 42


3.3.1 Revisando un core dump ................................................................................................. 42 3.3.2 Localizando el core dump................................................................................................ 43 3.3.3 Determinando qu programa provoc el core dump ....................................................... 43 3.3.4 Verificando el dump ........................................................................................................ 43

3.4 Introduccin al anlisis del dump............................................................................... 44


3.4.1 Usos del comando crash .................................................................................................. 44 3.4.2 Qu es el kernel?............................................................................................................ 45 3.4.3 Examinando un dump del sistema ................................................................................... 45 3.4.4 Subcomandos bsicos del crash....................................................................................... 45
3.4.4.1 El subcomando stat ................................................................................................................ 47 3.4.4.2 El subcomando trace m ........................................................................................................ 47 3.4.4.3 El subcomando proc............................................................................................................... 50 3.4.4.4 El subcomando thread ............................................................................................................ 51 3.4.4.5 El subcomando od ................................................................................................................. 52 3.4.4.6 Revisando el log de errores .................................................................................................... 52 3.4.4.7 El subcomando le ................................................................................................................... 53 3.4.4.8 El log de errores del VMM .................................................................................................... 53

3.4.5 Manejando la salida del crash.......................................................................................... 54 3.4.6 Tipo de cadas.................................................................................................................. 55


3.4.6.1 Kernel panic o trap ................................................................................................................. 55 3.4.6.2 Addressing exception o data storage interrupt ....................................................................... 55 3.4.6.3 Bloqueo del sistema (System hang) ....................................................................................... 55

3.4.7 Informacin requerida por el centro de soporte............................................................... 55

3.5 Observacin y anlisis de algunos ejemplos .............................................................. 56


3.5.1 Ejemplo 1......................................................................................................................... 56 3.5.2 Ejemplo 2......................................................................................................................... 65 3.5.3 Ejemplo 3......................................................................................................................... 66

4. Optimizacin del rendimiento .......................................................................................... 68 4.1 Introduccin al monitoreo y optimizacin del rendimiento en AIX .......................... 68
4.1.1 Rendimiento de CPU ....................................................................................................... 69
4.1.1.1 Procesos y threads .................................................................................................................. 69 4.1.1.2 Time slice ............................................................................................................................... 69 4.1.1.3 Modo kernel y modo usuario.................................................................................................. 69 4.1.1.4 Rendimiento en SMP ............................................................................................................. 70
a. Coherencia de cache (Cache coherency) .................................................................................................... 70 b. Afinidad de procesador (Processor affinity)............................................................................................... 70 c. Locking ...................................................................................................................................................... 71

4.1.2 Rendimiento de memoria................................................................................................. 72


4.1.2.1 Advertencia inicial ................................................................................................................. 72 4.1.2.2 Segmentos de memoria .......................................................................................................... 72
a. La lista libre (Free list) ............................................................................................................................... 73 b. Reemplazo de pginas (Page replacement) ................................................................................................ 73 c. Mecanismo de control de la carga de memoria .......................................................................................... 74

4.1.2.3 Espacio de paginado............................................................................................................... 74 Pgina 3 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

a. Ajustando el umbral del espacio de paginado ............................................................................................ 75

4.1.2.4 Prdidas de memoria (Memory leaks).................................................................................... 76 4.1.2.5 Memoria compartida .............................................................................................................. 76

4.1.3 Rendimiento de I/O de disco ........................................................................................... 76


4.1.3.1 Advertencia inicial ................................................................................................................. 77 4.1.3.2 El diseo del subsistema de disco .......................................................................................... 77 4.1.3.3 Consideraciones de rendimiento relativas al ancho de banda ................................................ 78 4.1.3.4 Diseo del disco ..................................................................................................................... 78
a. Tiempo de acceso del disco........................................................................................................................ 79 b. Discos por bus o loop (lazo) del adaptador ................................................................................................ 80 c. Buffers fsicos de disco .............................................................................................................................. 80

4.1.3.5 Conceptos del Logical Volume Manager (LVM)................................................................... 81

4.1.4 Rendimiento de red.......................................................................................................... 82


4.1.4.1 Protocolos TCP/IP.................................................................................................................. 83 4.1.4.2 Modificacin de los parmetros de red .................................................................................. 83 4.1.4.3 Optimizacin de los buffers de red......................................................................................... 84

4.2 Herramientas de rendimiento de CPU y memoria...................................................... 85


4.2.1 El comando sar ................................................................................................................ 85
4.2.1.1 Ejemplos del uso del comando sar ......................................................................................... 85 4.2.1.2 Sumario del comando sar ....................................................................................................... 89 4.2.1.3 El comando sadc .................................................................................................................... 89 4.2.1.4 Los comandos sa1 y sa2 ......................................................................................................... 90

4.2.2 El comando vmstat .......................................................................................................... 90 4.2.3 El comando ps ................................................................................................................. 95


4.2.3.1 Uso del comando ps para estudiar la utilizacin de CPU....................................................... 95
a. La columna C ............................................................................................................................................. 95 b. La columna TIME...................................................................................................................................... 96 c. La columna %CPU..................................................................................................................................... 96
U

4.2.3.2 Uso del comando ps para estudiar la utilizacin de memoria ................................................ 97


a. La columna SIZE ....................................................................................................................................... 97 b. La columna RSS ........................................................................................................................................ 97 c. La columna %MEM ................................................................................................................................... 98

4.2.4 El comando tprof ............................................................................................................. 99


4.2.4.1 Usando el reporte general del tprof ........................................................................................ 99 4.2.4.2 Utilizando el tprof en un programa ...................................................................................... 100

4.2.5 El comando svmon ........................................................................................................ 101


4.2.5.1 El reporte global del svmon ................................................................................................. 102 4.2.5.2 El reporte de usuario del svmon ........................................................................................... 103 4.2.5.3 El reporte de procesos del svmon......................................................................................... 106 4.2.5.4 El reporte de segmentos del svmon...................................................................................... 108 4.2.5.5 El reporte detallado de segmentos del svmon ...................................................................... 110 4.2.5.6 El reporte de comandos del svmon....................................................................................... 112 4.2.5.7 El reporte de clase Workload Manager del svmon............................................................... 114

4.2.6 El comando topas .......................................................................................................... 115 4.2.7 El comando emstat ........................................................................................................ 117

4.3 Herramientas de rendimiento de I/O de disco .......................................................... 118


4.3.1 Revisin general ............................................................................................................ 118 4.3.2 El comando iostat .......................................................................................................... 119
4.3.2.1 El histrico de I/O de disco .................................................................................................. 120 4.3.2.2 Reporte de utilizacin de TTY y CPU ................................................................................. 121 4.3.2.3 El comando iostat en sistemas SMP..................................................................................... 122 4.3.2.4 Reporte de utilizacin de disco ............................................................................................ 123

4.3.3 Anlisis de rendimiento del LVM utilizando el lslv...................................................... 124


4.3.3.1 Atributos del volumen lgico ............................................................................................... 125 Pgina 4 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

a. Espejado ....................................................................................................................................................126 b. Poltica intra..............................................................................................................................................126 c. Poltica inter ..............................................................................................................................................127 d. Striping .....................................................................................................................................................127

4.3.3.2 Fragmentacin de volmenes lgicos .................................................................................. 128 4.3.3.3 Asignacin de volmenes lgicos ........................................................................................ 128 4.3.3.4 El mejor rendimiento del LVM ............................................................................................ 130

4.3.4 Monitoreo del LVM y file systems................................................................................ 130


4.3.4.1 El comando filemon ............................................................................................................. 130
a. Usando el comando filemon......................................................................................................................131

4.3.4.2 Anlisis del reporte .............................................................................................................. 132


a. Reporte a nivel archivo lgico...................................................................................................................132 b. Reporte a nivel volumen lgico ................................................................................................................134 c. Reporte a nivel volumen fsico..................................................................................................................135 d. Reporte a nivel memoria virtual................................................................................................................136

4.3.4.3 Comportamiento tpico del sistema AIX.............................................................................. 137

4.3.5 Rendimiento de los file systems .................................................................................... 137


4.3.5.1 El comando fileplace............................................................................................................ 138 4.3.5.2 Desfragmentacin de un file system .................................................................................... 139

4.3.6 Recomendaciones generales de rendimiento de I/O...................................................... 140 4.3.7 Consumo de las herramientas de rendimiento ............................................................... 141 4.3.8 Sumario de comandos.................................................................................................... 142
4.3.8.1 El comando filemon ............................................................................................................. 142 4.3.8.2 El comando fileplace............................................................................................................ 142 4.3.8.3 El comando lslv.................................................................................................................... 142

4.4 Herramientas de rendimiento de red......................................................................... 142


4.4.1 Visin general................................................................................................................ 143 4.4.2 Optimizacin de las colas de transmisin y recepcin de los adaptadores.................... 144 4.4.3 Optimizacin de protocolos........................................................................................... 145 4.4.4 Herramientas de monitoreo del rendimiento de red ...................................................... 147
4.4.4.1 El comando vmstat ............................................................................................................... 147 4.4.4.2 El comando ping .................................................................................................................. 147 4.4.4.3 El comando traceroute.......................................................................................................... 148 4.4.4.4 El comando netstat ............................................................................................................... 148 4.4.4.5 El comando netpmon............................................................................................................ 150 4.4.4.6 Los comandos tcpdump e iptrace ......................................................................................... 151

4.4.5 Herramientas para el control del rendimiento de red..................................................... 153 4.4.6 Resolucin de nombres.................................................................................................. 154 4.4.7 Optimizacin del rendimiento de NFS .......................................................................... 155
4.4.7.1 Rendimiento del lado del servidor NFS ............................................................................... 155 4.4.7.2 Rendimiento del lado del cliente NFS.................................................................................. 156 4.4.7.3 Opciones de montaje ............................................................................................................ 157

4.4.8 Sumario de comandos.................................................................................................... 158


4.4.8.1 El comando netstat ............................................................................................................... 158 4.4.8.2 El comando tcpdump............................................................................................................ 158 4.4.8.3 El comando iptrace............................................................................................................... 158 4.4.8.4 El comando ipreport............................................................................................................. 158

4.5 Herramientas especficas para el manejo de rendimiento ........................................ 159


4.5.1 El scheduler de AIX ...................................................................................................... 159
4.5.1.1 Clculo de prioridad en versiones de AIX anteriores a la 4.3.2 ........................................... 160 4.5.1.2 Clculo de prioridad en AIX Versin 4.3.2 y posteriores .................................................... 162

4.5.2 Colas de ejecucin mltiples con balanceo de carga en AIX Versin 4.3.3 ................. 163
4.5.2.1 Balanceo de carga inicial...................................................................................................... 164 Pgina 5 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

4.5.2.2 Balanceo de carga idle.......................................................................................................... 164 4.5.2.3 Balanceo de carga peridico frecuente................................................................................. 164 4.5.2.4 Balanceo de carga peridico infrecuente.............................................................................. 165

4.5.3 Manejo del rendimiento del scheduler........................................................................... 165


4.5.3.1 El comando schedtune.......................................................................................................... 165
a. Primer ejemplo de schedtune.....................................................................................................................165 b. Segundo ejemplo de schedtune .................................................................................................................166 c. Tercer ejemplo de schedtune .....................................................................................................................166 d. Lineamientos generales de SCHED_R y SCHED_D................................................................................166 e. Sumario del comando schedtune ...............................................................................................................167

4.5.3.2 Los comandos nice y renice ................................................................................................. 167


a. Ejecutando un comando con nice ..............................................................................................................167 b. Cambiando el valor nice de un thread en ejecucin ..................................................................................168 c. Sumario de los comando nice y renice ......................................................................................................169

4.5.4 El comando bindprocessor............................................................................................. 169 4.5.5 El comando vmtune ....................................................................................................... 170 4.5.6 Workload Manager ........................................................................................................ 173

4.6 Escenarios de rendimiento........................................................................................ 174


4.6.1.1 Coleccin de datos ............................................................................................................... 174 4.6.1.2 Anlisis de datos .................................................................................................................. 175 4.6.1.3 Recomendacin .................................................................................................................... 176

4.6.2 Escenario de rendimiento de I/O ................................................................................... 176


4.6.2.1 Coleccin de datos ............................................................................................................... 176 4.6.2.2 Anlisis de datos .................................................................................................................. 178
a. Anlisis de la salida del comando vmstat ..................................................................................................178 b. Anlisis de la salida del comando iostat....................................................................................................178

4.6.2.3 Recomendacin .................................................................................................................... 179

4.6.3 Escenarios de I/O adicionales........................................................................................ 179


4.6.3.1 I/O wait de CPU y threads del kernel................................................................................... 179 4.6.3.2 Distribucin de I/O............................................................................................................... 180 4.6.3.3 Fragmentacin de un volumen lgico .................................................................................. 181 4.6.3.4 Monitoreando el escenario utilizando filemon ..................................................................... 182 4.6.3.5 Asignacin de volumen lgico ............................................................................................. 182

4.6.4 Escenario de rendimiento del paginado......................................................................... 184


4.6.4.1 Coleccin de datos ............................................................................................................... 184 4.6.4.2 Anlisis de los datos............................................................................................................. 190
a. La columna kthr (kernel thread) ................................................................................................................190 b. La columna de memoria............................................................................................................................190 c. La columna page .......................................................................................................................................191 d. La columna faults......................................................................................................................................191 e. La columna cpu .........................................................................................................................................191

4.6.4.3 Recomendacin .................................................................................................................... 191

5.1 Identificar un problema genrico de red................................................................... 193 5.2 Pasos para aislar un problema de red TCP/IP........................................................... 193
5.2.1 Problemas de red en un host determinado ..................................................................... 193 5.2.2 No hay acceso a la red ................................................................................................... 193 5.2.3 Problemas de resolucin de nombres ............................................................................ 194 5.2.4 Anlisis de un problema de ruteo .................................................................................. 194 5.2.5 Ruteo esttico o dinmico ............................................................................................. 195 5.2.6 Problemas con las interfases de red ............................................................................... 197
5.2.6.1 Anlisis genrico de interfases ............................................................................................. 197 5.2.6.2 Problemas de interfase ethernet............................................................................................ 198 5.2.6.3 Problemas de interfase token-ring........................................................................................ 198 5.2.6.4 Problemas con interfases ATM o ATMLE .......................................................................... 199 Pgina 6 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

5.2.6.5 Problemas con interfases X.25 ............................................................................................. 203

5.3 Problemas de TCP/IP ms comunes......................................................................... 204


5.3.1 LED 581 ........................................................................................................................ 204 5.3.2 Problemas con telnet...................................................................................................... 206 5.3.3 Retrasos del login en sistemas AIX 4.3.x ...................................................................... 207 5.3.4 Problemas de DHCP (Dynamic Host Configuration Protocol) ..................................... 207 5.3.5 Las teclas de funcin de X.25 no funcionan correctamente .......................................... 207

5.4 Asuntos de configuracin de TCP/IP ....................................................................... 208


5.4.1 Maximum Transmission Unit (MTU) ........................................................................... 208 5.4.2 Mbufs............................................................................................................................. 208

5.5 Comandos para identificar un problema de TCP/IP................................................. 209


5.5.1 ping ................................................................................................................................ 209 5.5.2 rup.................................................................................................................................. 210 5.5.3 netstat............................................................................................................................. 210 5.5.4 arp .................................................................................................................................. 212 5.5.5 iptrace e ipreport............................................................................................................ 212 5.5.6 tcpdump ......................................................................................................................... 212 5.5.7 no (Network Options).................................................................................................... 213 5.5.8 Comandos stat ............................................................................................................... 213

5.6 Resolucin de problemas de NIS (Network Information Services) ......................... 213


5.6.1 Herramientas para la resolucin de problemas de NIS.................................................. 213
5.6.1.1 ping....................................................................................................................................... 214 5.6.1.2 rpcinfo .................................................................................................................................. 214 5.6.1.3 ypmatch................................................................................................................................ 215 5.6.1.4 ypwhich................................................................................................................................ 215

5.6.2 Ejemplos de resolucin de problemas con NIS ............................................................. 216


5.6.2.1 yppush falla al crear mapas nuevos...................................................................................... 217 5.6.2.2 Los broadcast de clientes no vinculan.................................................................................. 217 5.6.2.3 El comando ypwhich es inconsistente.................................................................................. 217 5.6.2.4 Mapas muy largos no son soportados................................................................................... 218 5.6.2.5 Routers, dispositivos de red, y vinculacin NIS................................................................... 218 5.6.2.6 Grupos incorrectos por cambios en un grupo nuevo ............................................................ 218 5.6.2.7 mkdbm falla para entradas de mapas NIS muy grandes....................................................... 218

5.7 Resolucin de problemas de NFS............................................................................. 219


5.7.1 Pasos generales para solucionar un problema de NFS .................................................. 219 5.7.2 Problemas de montaje en NFS....................................................................................... 219
5.7.2.1 Montajes soft y montajes hard.............................................................................................. 221

5.7.3 Problemas de rendimiento de NFS ................................................................................ 221


5.7.3.1 Empeorando el rendimiento del cliente para redes o servidores lentos................................ 225

5.7.4 Fallas de locking............................................................................................................ 226


5.7.4.1 Iniciando el rpc.lockd con depuracin.................................................................................. 226

5.7.5 Un cliente NFS se detiene durante el reinicio del sistema............................................. 227

5.8 Depuracin de SLIP (Serial Line Internet Protocol) ................................................ 227 5.9 Depuracin de PPP (Point-to-Point Protocol) asincrnico....................................... 228
5.9.1 AIX como cliente PPP (llamadas salientes) .................................................................. 228
5.9.1.1 Chat scripts (scripts de conversacin) .................................................................................. 230 5.9.1.2 Problemas de autenticacin.................................................................................................. 230

5.9.2 AIX como servidor PPP (llamadas entrantes) ............................................................... 231

6. Resolucin de problemas de impresin .......................................................................... 233 6.1 Pasos a seguir para resolver problemas comunes..................................................... 234
Pgina 7 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.1.1 Pasos a seguir en problemas de impresin local............................................................ 234 6.1.2 Pasos a seguir en problemas de impresin remota ........................................................ 234 6.1.3 Revise lo obvio .............................................................................................................. 235 6.1.4 Nada se imprime en impresoras locales ........................................................................ 235
6.1.4.1 Mi trabajo se perdi, pero otros son impresos...................................................................... 235 6.1.4.2 Nada se imprime, pero las luces en la impresora parpadean o cambian............................... 236 6.1.4.3 Nada llega a la impresora ..................................................................................................... 237 6.1.4.4 Hay espacio suficiente en el file system del spool?............................................................ 240

6.1.5 La salida es basura o est incompleta ............................................................................ 241


6.1.5.1 Los parmetros del puerto son correctos? .......................................................................... 241 6.1.5.2 Los tabuladores estn configurados correctamente? .......................................................... 241 6.1.5.3 Se imprime nicamente la primera lnea o lneas escalonadas? ......................................... 241 6.1.5.4 La impresora funciona bien por un tiempo y luego mal? ................................................... 242 6.1.5.5 Hay problemas imprimiendo grficos?............................................................................... 243 6.1.5.6 El tipo de impresora es el correcto?.................................................................................... 243

6.1.6 El espaciado es incorrecto ............................................................................................. 243


6.1.6.1 Espaciado doble ................................................................................................................... 244 6.1.6.2 Sin margen izquierdo ........................................................................................................... 244

6.1.7 La impresin con una fuente incorrecta......................................................................... 244


6.1.7.1 El archivo es PostScript o PCL formateado?...................................................................... 244 6.1.7.2 Cul es la fuente por defecto de la impresora? ................................................................... 244 6.1.7.3 Qu fuentes estn instaladas en la impresora?.................................................................... 245 6.1.7.4 El programa interfase o el backend de impresin fijan la fuente? ...................................... 245

6.1.8 El trabajo de impresin pide un tamao de papel equivocado ...................................... 246 6.1.9 El trabajo de impresin por red falla ............................................................................. 246
6.1.9.1 Los trabajos de impresin quedan encolados en la cola local .............................................. 246 6.1.9.2 Est configurado el tiempo de espera para la impresin remota con System V? ............... 248 6.1.9.3 Los trabajos de impresin quedan en la cola remota............................................................ 248 6.1.9.4 Los trabajos de impresin desaparecen ................................................................................ 248

6.2 Tcnicas de resolucin de problemas comunes........................................................ 249


6.2.1 Utilizando lptest para generar archivos de impresin.................................................... 249 6.2.2 Use enscript para generar PostScript ............................................................................. 250 6.2.3 Use splp para ver los dispositivos especiales ................................................................ 250 6.2.4 Imprimiendo a un archivo.............................................................................................. 250 6.2.5 Imprimiendo directamente al archivo del dispositivo especial...................................... 250 6.2.6 Imprimiendo directamente en impresoras de red........................................................... 251
6.2.6.1 Imprimiendo directamente en una impresora conectada a LPD ........................................... 251 6.2.6.2 Imprimiendo directamente en una impresora conectada a HP JetDirect .............................. 251 6.2.6.3 Telnet a impresoras JetDirect ............................................................................................... 251

6.2.7 Utilizando iptrace para rastrear una impresin de red ................................................... 252 6.2.8 Capturando archivos...................................................................................................... 252
6.2.8.1 Capturando el archivo antes de que pase por la cola............................................................ 252 6.2.8.2 Capturando un archivo despus de que pas por la cola ...................................................... 253 6.2.8.3 Capturando un archivo tal como va por la red ..................................................................... 253 6.2.8.4 Capturando un archivo en el sistema remoto ....................................................................... 253

6.2.9 Capturar el flag .............................................................................................................. 254


6.2.9.1 Flags de System V................................................................................................................ 254 6.2.9.2 Flags de PowerPC ................................................................................................................ 254

6.2.10 Utilizando script para capturar las entradas del usuario .............................................. 256 6.2.11 Utilizando fuser para encontrar procesos .................................................................... 256 6.2.12 Utilizando el comando echo en scripts shell................................................................ 256

6.3 Resolucin de problemas en el subsistema de impresin System V ........................ 256


Pgina 8 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.3.1 Problemas de permisos en archivos............................................................................... 257 6.3.2 El servicio de impresin est activo?........................................................................... 257 6.3.3 La impresora tiene los atributos correctos? ................................................................. 257
6.3.3.1 Dispositivo de impresin...................................................................................................... 257 6.3.3.2 Atributos de la impresora definidos en System V ................................................................ 257

6.3.4 Logs y archivos de estado.............................................................................................. 258


6.3.4.1 Revise el correo.................................................................................................................... 258 6.3.4.2 Revise los logs en /var/lp/logs.............................................................................................. 258 6.3.4.3 Verificando el archivo pstatus.............................................................................................. 259

6.3.5 La variable LANG est configurada correctamente?................................................... 259 6.3.6 Trabajos remotos cancelados quedan encolados ........................................................... 260 6.3.7 Imprimiendo en un archivo............................................................................................ 260 6.3.8 Limpiando y comenzando de nuevo.............................................................................. 261
6.3.8.1 Reiniciar los nmeros de trabajo del subsistema de impresin ............................................ 261 6.3.8.3 Limpiando impresoras viejas................................................................................................ 261 6.3.8.4 Elimine los archivos temporales........................................................................................... 261 6.3.8.5 Elimine archivos de log viejos ............................................................................................. 262

6.3.9 Desactivando los banners .............................................................................................. 262


6.3.9.1 Configuracin de los banners ............................................................................................... 262 6.3.9.2 Evitando los banners por lnea de comando ......................................................................... 262 6.3.9.3 Evitando los banners con el archivo interfase ...................................................................... 262

6.3.10 Resolviendo problemas de scripts interfase en System V ........................................... 263 6.3.11 Revise los tiempos de espera en el archivo Systems para las colas remotas ............... 264 6.3.12 Est bien ingresado el nombre del servidor en el archivo /etc/lp/Systems? .............. 264 6.3.13 Ejemplos: solucionando problemas de impresin remota ........................................... 265
6.3.13.1 Ejemplo: desaparecen trabajos de impresin de red salientes ............................................ 265 6.3.13.2 Ejemplo: se pierde un trabajo de impresin remoto entrante ............................................. 266

6.3.14 Resolviendo problemas de impresin de HP JetDirect................................................ 267


6.3.14.1 Permisos de archivo errneos en el script interfase............................................................ 267 6.3.14.2 Revise los archivos de log /tmp/hpnpf.* ............................................................................ 268 6.3.14.3 Salida escalonada en impresoras PCL................................................................................ 268

6.4 Resolucin de problemas en el subsistema de impresin PowerPC......................... 269


6.4.1 Problemas de permisos de archivos............................................................................... 269 6.4.2 El servicio de impresin est activo?........................................................................... 269
6.4.2.1 Iniciando los servicios de impresin .................................................................................... 269 6.4.2.2 El qdaemon no permanece activo......................................................................................... 269

6.4.3 La impresora tiene los atributos correctos? ................................................................. 270


6.4.3.1 Impresora ............................................................................................................................. 270 6.4.3.2 Impresoras virtuales ............................................................................................................. 270

6.4.4 Logs y archivos de estado.............................................................................................. 270


6.4.4.1 Mensajes de error por lnea de comando.............................................................................. 271 6.4.4.2 Mensajes por correo ............................................................................................................. 271 6.4.4.3 Mensajes en la consola......................................................................................................... 271 6.4.4.4 Archivos de mensajes de error de las impresoras virtuales .................................................. 271 6.4.4.5 Logs de impresiones remotas ............................................................................................... 271 6.4.4.6 Archivos de descripcin del trabajo ..................................................................................... 272 6.4.4.7 Archivos de estado ............................................................................................................... 273

6.4.5 Imprimiendo en un archivo con el subsistema PowerPC .............................................. 273 6.4.6 Limpiando y comenzando de nuevo.............................................................................. 274
6.4.6.1 Primero se debe encontrar la causa ...................................................................................... 274 6.4.6.2 ltimo recurso: limpiar el sistema de impresin.................................................................. 275

6.4.7 Revisando los flags para enq ......................................................................................... 275


Pgina 9 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.4.8 Desactivando los banners .............................................................................................. 276


6.4.8.1 Configuracin de los banners ............................................................................................... 276 6.4.8.2 Evitando los banners por lnea de comando ......................................................................... 276 6.4.8.3 Evitando los banners con la impresora virtual ..................................................................... 277

6.5 Errores comunes y soluciones .................................................................................. 277


6.5.1 Problemas agregando una segunda impresora local en el mismo dispositivo ............... 277 6.5.2 No se pueden cambiar los atributos porque el dispositivo est ocupado....................... 278 6.5.3 Los trabajos remotos desaparecen despus de activar la cola de impresin.................. 278 6.5.4 Bad mandatory environment variable............................................................................ 278 6.5.5 LOG: is read only .......................................................................................................... 279 6.5.6 No hay suministro de papel luego de la pgina de encabezamiento.............................. 279

Lista de abreviaturas........................................................................................................... 281 Bibliografa......................................................................................................................... 283

Pgina 10 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

1. Introduccin a la resolucin de problemas


La intencin de este curso es ayudar a los administradores de sistemas y personal de soporte a tener un mejor entendimiento sobre la resolucin de problemas en sistemas RS/6000 utilizando AIX. La intencin no es proveer una lista exhaustiva de todas las soluciones para todos los posibles problemas que pueden encontrarse. La intencin es guiar a travs del proceso de determinacin de problemas y reducir e identificar los componentes o subsistemas que estn sufriendo algn problema. El alcance de este curso ayudar a determinar la causa de un problema en un componente o subsistema que previamente funcionaba correctamente. La intencin no es ayudar a diagnosticar problemas cuando se est instalando o configurando hardware o software nuevos. Con este fin se debe consultar la documentacin apropiada provista con los nuevos componentes.

1.1 Proceso de determinacin de problemas


Siguiendo la intencin de este curso, podemos definir a un problema como una situacin donde algo que previamente funcionaba bien, ahora no lo hace como se espera.

1.1.1 Definiendo el problema


El primer paso en la resolucin de un problema es definir el problema. Es importante que la persona que intenta solucionar el problema entienda exactamente lo que el usuario del sistema percibe como problema. Una definicin clara del problema es til en dos aspectos. Primero, puede entregar indicios sobre la causa del problema. Segundo, es mucho ms fcil demostrarle a los usuarios que el problema fue solucionado si se entiende como se ve el problema desde su punto de vista. Tomemos, por ejemplo, la situacin donde un usuario no puede imprimir un documento. El problema puede deberse a que el file system /var no tenga espacio. La persona que soluciona el problema puede corregirlo y demostrar que el problema fue corregido utilizando el comando df para probar que el file system /var ahora cuenta con espacio. Este ejemplo tambin puede ser utilizado para ilustrar otra dificultad en la determinacin de un problema. Los problemas pueden estar ocultos por otros problemas. Cuando se corrige el problema ms visible, otro puede aparecer. Los problemas que son descubiertos durante el proceso de determinacin de problemas deben ser relacionados con el que fue reportado inicialmente, en otras palabras, mltiples problemas con los mismos sntomas. En algunos casos, se pueden descubrir problemas que estn completamente inconexos con el problema inicial reportado. En el ejemplo descrito anteriormente, incrementar la cantidad de espacio libre en el file system /var quizs no solucione el problema que experimenta el usuario. El problema de impresin puede ser debido a un cable defectuoso, a un problema con la impresora, o quizs a una falla del daemon lpd. Por eso es tan importante entender el problema desde la perspectiva del usuario. En este ejemplo, la mejor forma de verificar que el problema fue resuelto es lograr que el usuario imprima su documento.

1.1.2 Recolectando informacin del usuario


La mejor manera de entender el problema desde la perspectiva del usuario es realizndole preguntas. Desde su percepcin de la situacin, se puede deducir si en efecto tiene un problema, y Pgina 11 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

en cuanto tiempo espera que sea resuelto. Sus expectativas pueden estar ms all del alcance de la mquina o de la aplicacin que est ejecutando. Las siguientes preguntas deben ser formuladas cuando se recolecta informacin del usuario: Cul es el problema? Se debe obtener una explicacin del usuario sobre cul es el problema y como lo afecta. Dependiendo de la situacin y la naturaleza del problema, esta pregunta debe ser suplementada por una de las siguientes preguntas: Qu es lo que hace el sistema? Que es lo que no hace el sistema? Una vez que se determinan cules son los sntomas del problema, se debe intentar establecer la historia del problema Cmo detect por primera vez el problema? Hizo algo diferente que caus que advirtiera el problema? Cuando ocurri? Esto ocurre siempre en el mismo momento, por ejemplo, cuando se ejecuta el mismo trabajo o la misma aplicacin? Ocurre el mismo problema en otro sitio? Slo una mquina experimenta el problema, o varias mquinas experimentan el mismo problema? Fueron realizados algunos cambios recientemente? Esto se refiere a cualquier tipo de cambio realizado en el sistema, desde agregar hardware o software nuevo, hasta cambios en la configuracin del software existente. Si fue realizado un cambio recientemente, Se reunieron todos los prerrequisitos antes de que el cambio fuera realizado? Los problemas de software ocurren generalmente cuando se realizaron cambios en el sistema y, o no se reunieron todos los prerrequisitos, por ejemplo, el firmware del sistema no estaba en el nivel mnimo requerido, o las instrucciones no fueron seguidas en el orden exacto, por ejemplo, la persona que realiz el cambio desestim las instrucciones alegando que conoca un camino ms rpido para hacer lo mismo. El desestimar las instrucciones significa que, como la persona percibi una ruta mejor, los prerrequisitos para los siguientes pasos no fueron reunidos, y por lo tanto, el problema deriv en la situacin a la que estamos confrontados. Otros cambios, como agregar hardware, traen sus propios problemas, como cables mal conectados, contactos doblados, o direccionamiento desconfigurado. La pregunta Cmo detect por primera vez el problema? puede que no ayude en forma directa, pero es muy til para que la persona hable sobre el problema. Una vez que comienza a hablar, invariablemente dir cosas que ayudarn a construir un cuadro que ayude a decidir el punto de comienzo en la resolucin del problema. Si el problema ocurre en ms de una mquina, se deben buscar las similitudes y diferencias entre las situaciones.

1.1.3 Recolectando informacin del sistema


El segundo paso en la determinacin del problema es recolectar informacin del sistema. Parte de la informacin puede haber sido obtenida del usuario, en el proceso de definir el problema. No es slo el usuario de la mquina quien puede proveer informacin. Utilizando varios comandos, es posible determinar como est configurada la mquina, los errores producidos, y el estado del sistema operativo. Pgina 12 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El uso de comandos, como el lsdev, lspv, lsvg, lslpp, lsattr y otros, permite recolectar informacin sobre cmo est configurado el sistema. Otros comandos, como el errpt, entregan indicios sobre todos los errores registrados por el sistema. Si el administrador del sistema para realizar tareas administrativas utiliza SMIT o un Sistema de Administracin Basado en Web, se deben examinar los archivos log de esas aplicaciones para observar las modificaciones recientes. Los archivos log son guardados normalmente en el directorio raz del usuario y tienen el nombre /smit.log para SMIT y /websm.log para el Sistema de Administracin Basado en Web. Si se busca algo especfico basado en el problema descrito por el usuario, a menudo otros archivos son analizados o extrados para que el centro de soporte lo analice, como dumps del sistema o archivos checkstop.

1.1.4 Resolviendo el problema


Una vez que se define el problema, se deben utilizar todos los medios al alcance para encontrar la solucin de la forma ms rpida y efectiva. Es recomendable consultar los redbooks de IBM, que muchas veces contienen soluciones para problemas conocidos, la documentacin de AIX e Internet, donde hay muchos sitios de informacin sumamente tiles. Durante el proceso de investigacin, se debe mantener un historial de las acciones realizadas para determinar el problema y de las acciones realizadas para solucionar el problema. En algunos casos, se encontrarn problemas que no pueden ser resueltos utilizando las tcnicas bsicas para la resolucin de problemas o las tcnicas detalladas descriptas en redbooks o la documentacin del AIX o el hardware. En estos casos, se debe reportar el problema al centro de soporte. La informacin recolectada como parte del proceso de determinacin del problema tambin debe ser suministrada al centro de soporte. En algunos casos, no es posible reproducir el problema, por ejemplo, si el problema aparece en forma aleatoria y aparentemente no hay una secuencia de acciones que provoca el problema.

1.1.5 Obteniendo parches de software


Los parches de AIX y muchos LPPs estn disponibles en Internet en la siguiente URL:
http://service.software.ibm.com/support/rs6000/

Para facilitar la descarga de los parches de AIX, en lugar de un navegador Web se puede utilizar una aplicacin AIX llamada FixDist. Como una aplicacin alternativa a la Web, FixDist provee descargas diferentes y entrega todas las imgenes necesarias con slo un click. Adems, lleva un registro de los parches descargados, de manera que se pueden descargar paquetes de parches ms pequeos las veces que sea necesario. FixDist puede ser descargado del sitio Web mencionado anteriormente. Una vez que es determinada la naturaleza del problema, se debe intentar buscar en este sitio o utilizando FixDist, para comprobar si el problema experimentado es conocido y tiene un parche ya disponible.

1.1.6 Otra documentacin relevante


Cada mquina RS/6000 tiene un conjunto de documentaciones especficas que debe ser utilizado en el proceso de determinacin de problemas cuando se sospecha un problema de hardware. Adems, cada mquina RS/6000 tiene su propio manual de instalacin del sistema (System Installation) y Gua de servicio, (Service Guide), los que son complementados con algunos documentos adicionales, dependiendo si la mquina es un sistema Micro Channel Bus o PCI, tambin conocido como sistema Multiple Bus. Cada tipo de bus (Micro Channel y Multiple Bus) Pgina 13 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

tiene un conjunto de dos manuales, uno con procedimientos comunes de diagnstico, y el otro que describe los adaptadores, dispositivos, y cables que pueden ser usados es los sistemas de ese tipo. Los sistemas Multiple Bus tambin tienen una gua que detalla las reglas para ubicar los adaptadores PCI. La mayora de las documentaciones de hardware puede consultarse online en el sitio de Internet de la Biblioteca IBM RS/6000. La direccin del sitio es:
http://www.rs6000.ibm.com/library/

Si se precisa, se puede solicitar una copia impresa de los manuales al representante de marketing de IBM.

1.2 Evitar los problemas


La confiabilidad, la disponibilidad, y la operabilidad (Reliability, Availability, Serviceability o RAS) son caractersticas del AIX que fueron diseadas para cumplir varias funciones. Adems de ayudar a determinar la causa de un problema una vez que ocurre, como el subsistema de diagnstico, muchas de las caractersticas RAS estn diseadas para proveer informacin sobre problemas potenciales antes de que sucedan. Por defecto, los sistemas RS/6000 son configurados para ejecutar diagnsticos automticos peridicos. Cualquier error o advertencia que reporte el sistema, aparecer en el log de errores del sistema. Una buena administracin del sistema no consiste nicamente en solucionar los problemas cuando ocurren, implica adems administrar el sistema de manera tal que se minimicen las probabilidades de que un problema afecte a los usuarios. El mantenimiento peridico del sistema puede ayudar a reducir la cantidad de problemas experimentados en la mquina. Examinar el log de errores del sistema en forma regular puede ayudar a detectar un problema potencial cuando los mensajes en el log de errores son an advertencias y no errores concretos.

1.2.1 Verificaciones preventivas


Esta es una lista de comandos simples que deben ejecutarse en forma peridica para monitorear un sistema. Ayudarn a mostrar cmo est funcionando el sistema. Utilice el comando errpt para observar un sumario de los errores en el log. Se debe prestar atencin a los ltimos errores registrados. Utilice errpt -a para examinar cualquier error sospechoso. Verifique la disponibilidad de espacio de disco con el comando df -k. Un file system lleno puede provocar varios problemas, por lo que es preferible evitarlo en la medida de lo posible. Las dos soluciones para un file system sin espacio son: o eliminar algunos archivos para ganar espacio libre, o utilizar el LVM para aumentar el tamao del file system. La opcin escogida depende de la naturaleza de los datos en el file system, y de la disponibilidad de espacio en el grupo de volmenes. Busque particiones stale en los grupos de volmenes con el comando lsvg. Si existen particiones stale, se debe intentar repararlas con el comando syncvg. Verifique el espacio de paginado con el comando lsps -s. Un sistema no se comporta bien si tiene poco espacio de paginado disponible. En circunstancias extremas, el sistema puede finalizar procesos para solucionar la situacin. Obviamente, es mejor que el administrador del sistema se asegure que hay espacio de paginado suficiente. Se puede incrementar el tamao de los volmenes de espacio de paginado existentes, o aadir un Pgina 14 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

nuevo volumen de espacio de paginado. Nuevamente, la opcin a tomar depender del espacio disponible en los grupos de volmenes del sistema. Verifique que todos los subsistemas estn funcionando correctamente con el comando lssrc a. Verifique el funcionamiento de la red haciendo un ping direcciones conocidas.

Pgina 15 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2. LVM, file systems, y determinacin de problemas de disco


Los siguientes temas sern tratados en este captulo: Problemas del Logical Volume Manager (LVM). Reemplazo de volmenes fsicos. Problemas de los JFS y sus soluciones. Crear y eliminar el espacio de paginado, y recomendaciones sobre estos. Para entender los problemas que ocurren en el sistema AIX con los grupos de volmenes, volmenes lgicos, y file systems, es importante tener un conocimiento detallado sobre como es controlado el almacenamiento por el LVM. No veremos fundamentos del LVM; se considera que son un prerrequisito para entender la temtica a tratar.

2.1 Estructuras de datos en el LVM


La informacin que requiere el LVM para operar es almacenada en un nmero de estructuras. El esquema lgico de estas estructuras esta descrito en las siguientes secciones.

2.1.1 Volmenes fsicos


A cada disco le es asignado un Physical Volume Identifier (PVID) cuando es agregado a un grupo de volmenes. El PVID es una combinacin del nmero de serie de la mquina y la fecha y hora de la operacin. El PVID es guardado en el mismo disco y en la Object Data Manager (ODM) de la mquina cuando un grupo de volmenes es creado o importado. No se debe usar el comando dd para copiar los contenidos de un volumen fsico a otro, porque el PVID tambin sera copiado; esto resultara en dos discos con el mismo PVID lo que puede confundir al sistema.

2.1.2 Grupos de volmenes


Cada grupo de volmenes tiene una Volume Group Descriptor Area (VGDA). Hay (normalmente) mltiples copias de la VGDA en un grupo de volmenes. Una copia de la VGDA es almacenada en cada disco del grupo de volmenes. La VGDA almacena informacin sobre el grupo de volmenes, como los volmenes lgicos y los discos en el grupo de volmenes. La VGDA es analizada por el comando importvg cuando importa un grupo de volmenes al sistema. Tambin la utiliza el comando varyonvg en el proceso de qurum para decidir si un grupo de volmenes debe ser activado (vary on). Para un grupo de volmenes de un solo disco, hay dos VGDAs en el disco. Cuando un segundo disco es aadido para hacer un grupo de volmenes de dos discos, el disco original retiene dos VGDAs y el nuevo disco toma una VGDA. Agregando un tercer disco resulta que la VGDA extra del primer disco es movida a este tercer disco para un qurum de tres con cada disco teniendo un voto. Agregando este disco adicional aade una nueva VGDA por disco. Un grupo de volmenes con chequeo de qurum activado (por defecto) debe tener al menos un 51 por ciento de las VGDAs en el grupo de volmenes disponible antes de que ste pueda ser activado. Una vez activado, si el grupo de VGDAs cae por debajo del 51 por ciento, el grupo de Pgina 16 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

volmenes es desactivado automticamente. Por el contrario, un grupo de volmenes con el chequeo de qurum desactivado debe tener un 100 por ciento de las VGDAs disponibles antes de que pueda ser activado. Una vez activado, slo es necesaria una VGDA disponible para mantener el grupo de volmenes activado. Un grupo de volmenes tambin tiene un Volume Group Identifier (VGID), un nmero de serie soft para el grupo de volmenes, similar al PVID para discos. Cada disco en un grupo de volmenes tambin tiene una Volume Group Status Area (VGSA), una estructura de 127 bytes usada para rastrear la informacin de espejado de hasta 1016 particiones fsicas en el disco.

2.1.3 Volmenes lgicos


Cada volumen lgico tiene un Logical Volume Control Block (LVCB) que es almacenado en los primeros 512 bytes del volumen lgico. EL LVCB mantiene detalles importantes del volumen lgico, entre otros su fecha y hora de creacin, informacin de espejado y el punto de montaje (si contiene un Journaled File System [JFS]). Cada volumen lgico tiene un Logical Volume Identifier (LVID) que es usado para representar el volumen lgico en las libreras de LVM y los comandos de bajo nivel. El LVID se genera de VGID.<num>, donde <num> es el orden en que fue creado dentro del grupo de volmenes.

2.1.4 Object Data Manager (ODM)


La Object Data Manager (ODM) es usada por el LVM para almacenar informacin relativa a grupos de volmenes, volmenes fsicos, y volmenes lgicos del sistema. La informacin contenida en la ODM es grabada cuando el grupo de volmenes es importado o cuando cada objeto el grupo de volmenes es creado. Existe un objeto de la ODM conocido como el vg-lock. Siempre que un comando que modifica la LVM es ejecutado, cerrar el vg-lock del grupo de volmenes que se est modificando. Si por alguna razn, el vg-lock no se abre cuando el comando termina, se puede correr el comando varyonvg b, que slo puede ejecutarse en un grupo de volmenes previamente activado.

2.2 Determinacin de problemas del LVM


Los problemas del LVM ms comunes estn relacionados con fallas de discos. Dependiendo de la gravedad de la falla, es posible salvar la situacin con muy poca prdida de datos o ninguna. Sin embargo, un intento de recuperacin fallido puede empeorar el estado del sistema. En este caso, restaurar desde un backup es la nica alternativa. Por lo tanto, es sumamente recomendable tomar backups frecuentes del sistema.

2.2.1 Redistribucin de datos


Cuando ocurre un problema con un disco, puede haber redistribucin de datos. La redistribucin de datos puede ser de tres tipos diferentes: Interna del disco Redistribucin por hardware, ordenada por el LVM Redistribucin por software

Pgina 17 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Tpicamente, la redistribucin ocurre cuando al intentar realizar una lectura o escritura el sistema falla, debido a problemas con el disco. En algunos casos, el requerimiento de I/O es completado pero con advertencias (warnings). Dependiendo del tipo de error obtenido, el LVM puede estar advertido para el siguiente requerimiento en la misma ubicacin fsica y ordenar una redistribucin para estar seguro. La capa lgica mas baja de la redistribucin es aquella que es interna del disco. Este tipo de redistribuciones son tpicamente privadas del disco y no hay notificaciones al usuario sobre las redistribuciones realizadas. El siguiente nivel en trminos de complejidad de la redistribucin es una redistribucin por hardware ordenada por el controlador de dispositivos del LVM (device driver). Este tipo de redistribucin le indicar al disco que reacomode la informacin de una particin fsica a otra porcin (reservada) del disco. El disco toma los datos en la ubicacin fsica A y los copia a una porcin reservada del disco (ubicacin B). Sin embargo, una vez que complet la operacin, el controlador de dispositivos del LVM continuar direccionando a la ubicacin fsica A, asumiendo que el disco por s solo va a dirigir la verdadera operacin de I/O a la ubicacin real B. La capa mas alta de la redistribucin de datos es la redistribucin por soft manejada por el controlador de dispositivos del LVM. En este caso, mantiene un directorio de bloques defectuosos, y siempre que recibe un requerimiento para acceder a la ubicacin lgica A, el controlador de dispositivos del LVM buscar la tabla de bloques defectuosos y traducir sta para enviar el requerimiento a la ubicacin fsica B.

2.2.2 Backup de la informacin


El primer paso que se debe realizar si se sospecha un problema con el LVM es tomar un backup del grupo de volmenes afectado y salvar tanta informacin como sea posible. Esto ser requerido para la recuperacin de datos. La integridad del backup debe ser comparada a la del ltimo backup regular tomado antes de detectar el problema.

2.2.3 Re-sincronizacin de la ODM


Los problemas con el LVM tienden a ocurrir cuando un problema con un disco fsico provoca que los datos de la ODM no estn sincronizados con la informacin de VGDA, VGSA, y LVCB almacenada en el disco. La corrupcin de la ODM tambin puede ocurrir si una operacin de LVM termina anormalmente y deja la ODM en estado inconsistente. Esto puede ocurrir, por ejemplo, si el file system en el que se encuentra la ODM (normalmente root, /) se llena durante el proceso de importar un grupo de volmenes. Si sospecha que las entradas en la ODM para un grupo de volmenes estn corruptas, una forma simple de re-sincronizar las entradas es desactivar y exportar el grupo de volmenes del sistema, luego importarlo y activarlo para refrescar la ODM. Este proceso puede ser realizado en todos los grupos de volmenes excepto el rootvg. Para el rootvg, se puede usar el comando redefinevg que examina cada disco en el sistema para determinar a que grupo de volmenes corresponden, y luego actualiza la ODM. Por ejemplo:
# redefinevg rootvg

Si sospecha que la informacin del LVM almacenada en el disco est corrupta, utilice el comando synclvodm para sincronizar y reconstruir el LVCB, la base de datos que contiene la configuracin del dispositivo, y las VGDAs en los volmenes fsicos. Por ejemplo:
# synclvodm -v myvg

Si tiene un grupo de volmenes en el que uno o ms volmenes lgicos est espejado, use el Pgina 18 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

comando syncvg si sospecha que una o mas copias del espejado estn daadas (stale). El comando puede ser usado para re-sincronizar un volumen lgico individual, un disco fsico, o un grupo de volmenes entero. Por ejemplo:
# syncvg -l lv02

Sincroniza copias de espejado del volumen lgico lv02.


# syncvg -v vg00

Sincroniza todos los volmenes lgicos en el grupo de volmenes vg00.

2.2.4 Entendiendo los problemas del importvg


Si importar un grupo de volmenes en un sistema no es posible utilizando el comando importvg las siguientes reas son tpicamente problemticas: Nivel de versin de AIX PVID invlido El disco cambi mientras el grupo de volmenes estaba exportado Entorno de discos compartidos En general, si el comando importvg no concluye satisfactoriamente, busque en el log de errores informacin que apunte a ste problema.

2.2.4.1 Nivel de versin de AIX Verifique que el grupo de volmenes que est importando est soportado por el nivel de AIX que corre en el sistema. Nuevas caractersticas fueron aadidas al sistema LVM en versiones diferentes de AIX, como por ejemplo, el soporte para grupos de volmenes grandes. Muchas de estas caractersticas requieren un cambio en el formato de las VGDA almacenadas en el disco, y esto provoca no ser entendidas en versiones anteriores de AIX.

2.2.4.2 PVID invlido Verifique que todos los discos en el grupo de volmenes que est intentando importar estn marcados como disponibles para AIX y tengan PVIDs vlidos almacenados en la ODM. Esto puede ser verificado utilizando el comando lspv. Si alguno de estos discos no muestran un PVID, use el comando chdev para resolver el problema. Por ejemplo:
# lspv hdisk0 000bc6fdc3dc07a7 hdisk1 000bc6fdbff75ee2 hdisk2 000bc6fdbff92812 hdisk3 000bc6fdbff972f4 hdisk4 None # chdev -l hdisk4 -a pv=yes hdisk4 changed # lspv hdisk0 000bc6fdc3dc07a7 hdisk1 000bc6fdbff75ee2 hdisk2 000bc6fdbff92812 hdisk3 000bc6fdbff972f4 hdisk4 000bc6fd672864b9 rootvg testvg testvg None None

rootvg testvg testvg None None

Pgina 19 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

En este ejemplo, el PVID para el hdisk4 no es mostrado utilizando el comando lspv. Esto se resuelve corriendo el comando chdev. El PVID es ledo del disco y puesto en la ODM, si el disco es accesible. Esto slo escribir un nuevo PVID si verdaderamente no hay PVID en el disco. Alternativamente, el disco puede ser borrado utilizando el comando rmdev y, ejecutando el comando cfgmgr, el dispositivo es re-creado con el PVID correcto. Despus de realizar estos pasos, debera ser posible importar el grupo de volmenes con el comando importvg.

2.2.4.3 Modificacin de algn disco mientras el grupo de volmenes estaba exportado Si el comando importvg falla con un mensaje de error similar al siguiente mensaje, el volumen fsico es marcado perdido (missing) y es posible que alguna modificacin en los discos definidos para el grupo de volmenes haya sido realizada mientras el grupo de volmenes estaba exportado:
0516-056 varyon testvg: The volume group is not varied on because a physical volume is marked missing. Run diagnostics.

Revise el log de errores con el comando errpt para ver que ocurri con dicho disco. Para forzar la activacin del grupo de volmenes use el flag -f del comando importvg. Esto hace posible operar con el grupo de volmenes y, dependiendo de la situacin, reconfigurar el grupo de volmenes excluyendo el disco que es marcado como perdido utilizando el comando reducevg.

2.2.4.4 Entorno de discos compartidos En un entorno de discos compartidos, como un sistema de discos SSA, usado por dos o ms sistemas, es posible que los volmenes fsicos definidos no sean accesibles porque estn importados y activados por otra mquina. Revise el grupo de volmenes en ambas mquinas y compare los PVIDs utilizando el comando lspv.

2.2.5 Extendiendo la cantidad mxima de particiones fsicas


Cuando se agrega un nuevo disco a un grupo de volmenes, puede presentarse un error debido a que hay muy pocos PP descriptors para el nmero requerido de volmenes fsicos. Esto puede ocurrir cuando el nuevo disco tiene ms capacidad que los discos existentes en el grupo de volmenes. Esta es una situacin muy comn en instalaciones antiguas, debido al rpido crecimiento de la tecnologa de almacenamiento. Para solucionar esto, un cambio en la meta-data del grupo de volmenes es requerido. El comando chvg es utilizado para esta operacin mediante el flag -t y aplicando un valor de factor, como se muestra en el siguiente ejemplo:
# lsvg testvg VOLUME GROUP: testvg VG IDENTIFIER: 000bc6fd5a177ed0 VG STATE: active PP SIZE: 16 megabyte(s) VG PERMISSION: read/write TOTAL PPs: 542 (8672 megabytes) MAX LVs: 256 FREE PPs: 42 (672 megabytes) LVs: 1 USED PPs: 500 (8000 megabytes) OPEN LVs: 0 QUORUM: 2 TOTAL PVs: 1 VG DESCRIPTORS: 2 STALE PVs: 0 STALE PPs: 0 ACTIVE PVs: 1 AUTO ON: yes MAX PPs per PV: 1016 MAX PVs: 32 # chvg -t 2 testvg 0516-1193 chvg: WARNING, once this operation is completed, volume group testvg cannot be imported into AIX 430 or lower versions. Continue (y/n) ? y

Pgina 20 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

0516-1164 chvg: Volume group testvg changed. With given characteristics testvg can include up to 16 physical volumes with 2032 physical partitions each.

Este ejemplo muestra que el grupo de volmenes testvg con un disco de 9.1 GB tiene un nmero mximo de 1016 PPs (particiones fsicas) por volumen fsico. Agregar un disco de 18.2 GB no es posible; el tamao mximo del disco es limitado a 17 GB a menos que el nmero mximo de PPs sea incrementado. Utilizando el comando chvg para incrementar el nmero mximo de PPs por un factor de 2 a 2032 PPs, permite al grupo de volmenes ser extendido hasta 34 GB aproximadamente. Hay que tener en cuenta que el grupo de volmenes modificado no podr ser importado por un sistema corriendo AIX versin 4.3.0 o menor.

2.3 Reemplazo de discos


AIX, como todos los sistemas operativos, puede ser problemtico cuando hay que cambiar un disco. AIX provee la capacidad de preparar al sistema para el cambio utilizando el LVM. Puede entonces realizar el reemplazo del disco y luego utilizar el LVM para restaurar el sistema nuevamente como estaba antes de cambiar el disco. Este proceso manipula no slo la informacin de disco, sino que tambin es un mtodo para mantener la ODM intacta. La ODM del AIX es una base de datos que mantiene los detalles de configuracin de dispositivos y de la configuracin de AIX. La funcin de la ODM es almacenar la informacin entre los reinicios del sistema, y tambin provee un rpido acceso a la informacin del sistema, eliminando la necesidad de comandos AIX para consultar a los componentes sobre la informacin de configuracin. Como esta base de datos contiene mucha informacin vital referida a la configuracin de la mquina, cualquier cambio hecho en la mquina, como el reemplazo de un disco defectuoso, es necesario que sea hecho en una forma que preserve la integridad de la base de datos.

2.3.1 Reemplazando un disco


El siguiente escenario muestra un sistema que tiene un error de hardware en un volumen fsico. Sin embargo, como el sistema utiliza un ambiente espejado, que tiene mltiples copias del volumen lgico, es posible reemplazar el disco mientras el sistema est activo. Los discos utilizados en este escenario son hot-swap (intercambio en caliente) SCSI, que permiten el reemplazo del disco en un ambiente productivo. Un factor importante es detectar el error del disco. Normalmente, un mail es enviado al administrador del sistema (usuario root) desde el Automatic Error Log Analysis (diagela). El siguiente cuadro muestra la informacin de dicho mail:

Pgina 21 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Automatic Error Log Analysis (diagela) provee la capacidad de realizar anlisis del log de errores cuando un error permanente de hardware es detectado. Siempre que un error permanente de hardware es detectado, el programa diagela es invocado. Automatic Error Log Analysis es activado por defecto en todas las plataformas. El mensaje del diagela muestra que el hdisk4 tiene un problema. Otra forma de localizar el problema es chequear el estado del volumen lgico utilizando el comando lsvg, como en el siguiente ejemplo:
# lsvg -l mirrorvg mirrorvg: LV NAME lvdb01 lvdb02 loglv00

TYPE jfs jfs jfslog

LPs 500 500 1

PPs 1000 1000 1

PVs 2 2 1

LV STATE open/syncd open/stale open/syncd

MOUNT POINT /u/db01 /u/db02 N/A

El volumen lgico lvdb02 en el grupo de volmenes mirrorvg es marcado con estado stale, indicando que las copias en este volumen lgico no estn sincronizadas. Busque en el log de errores utilizando el comando errpt, como en el siguiente ejemplo:
# errpt EAA3D429 F7DDA124 41BF2110 35BFC499 0713121400 0713121400 0713121400 0713121400 U U U P S H H H LVDD LVDD LVDD hdisk4 PHYSICAL PARTITION MARKED STALE PHYSICAL VOLUME DECLARED MISSING MIRROR WRITE CACHE WRITE FAILED DISK OPERATION ERROR

Esta informacin de errores muestra la razn por la que el volumen lgico lvdb02 es marcado stale. El hdisk4 tiene un error DISK OPERATION ERROR y el LVDD no puede escribir el cache de espejado. Segn la informacin en el ejemplo, el hdisk4 necesita ser reemplazado. Antes de realizar cualquier accin en el disco fsico del volumen lgico espejado, es recomendable realizar un backup del file system en caso de que algo funcione mal. Como el otro disco del volumen lgico espejado es an funcional, toda la informacin debera estar presente. Si el volumen lgico contiene una base de datos, entonces se deben utilizar las respectivas herramientas de backup de la base de datos.

Pgina 22 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2.3.1.1 Eliminando un disco defectuoso Si el sistema es de alta disponibilidad (7x24), usted debe decidir si mantiene el sistema funcionando mientras realiza el reemplazo del disco, siempre y cuando el hardware soporte un intercambio de discos con el sistema activo (discos hot-swap). No obstante, el procedimiento debe ser aprobado por el administrador del sistema o cliente antes de continuar. Se deben seguir los siguientes pasos para remover un disco: 1. Para remover la copia de la particin fsica del volumen lgico del disco defectuoso, use el comando rmlvcopy como sigue:
# rmlvcopy lvdb02 1 hdisk4

El volumen lgico lvdb02 queda ahora con slo una copia:


# lslv -l lvdb02 lvdb02:/u/db02 PV hdisk3

COPIES 500:000:000

IN BAND 21%

DISTRIBUTION 109:108:108:108:067

2. Elimine del grupo de volmenes el disco que quiere reemplazar:


# reducevg -f mirrorvg hdisk4 # lsvg -l mirrorvg mirrorvg: LV NAME TYPE lvdb01 jfs lvdb02 jfs loglv00 jfslog

LPs 500 500 1

PPs 1000 500 1

PVs 2 1 1

LV STATE open/syncd open/syncd open/syncd

MOUNT POINT /u/db01 /u/db02 N/A

3. Elimine el disco como dispositivo del sistema y de la base de datos ODM con el comando rmdev:
# rmdev -d -l hdisk4 hdisk4 deleted

Este comando es vlido para cualquier disco SCSI. Si su sistema utiliza SSA, entonces un paso adicional es requerido. Como los discos SSA tambin definen el dispositivo pdisk, el correspondiente dispositivo pdisk debe ser eliminado tambin. Utilice los mens de SSA en el SMIT para mostrar la correspondencia entre disk y pdisk. A travs de los mismos mens se puede eliminar el dispositivo pdisk. 4. El disco ya est listo para ser removido fsicamente del sistema.

2.3.1.2 Agregando un disco nuevo Continuando el escenario de la seccin anterior, esta seccin describe como agregar un disco nuevo en un ambiente productivo. Despus de que el hdisk4 fue removido, el sistema ha quedado ahora con los siguientes discos:
# lsdev -Cc disk hdisk0 Available hdisk1 Available hdisk2 Available hdisk3 Available 30-58-00-8,0 30-58-00-9,0 10-60-00-8,0 10-60-00-9,0 16 16 16 16 Bit Bit Bit Bit SCSI SCSI SCSI SCSI Disk Disk Disk Disk Drive Drive Drive Drive

Siga los siguientes pasos para agregar el disco nuevo: 1. Inserte el disco nuevo y ejecute el comando cfgmgr. El comando cfgmgr configura dispositivos controlados por la Configuration Rules object class, Pgina 23 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

que es una parte de la base de datos de Configuracin de Dispositivos. El comando cfgmgr va a reconocer el disco SCSI nuevo y va a crear el correspondiente dispositivo lgico. El comando no requiere opciones, como muestra lo siguiente:
# cfgmgr

El resultado es un nuevo hdisk4 agregado al sistema.


# lsdev -Cc disk hdisk0 Available hdisk1 Available hdisk2 Available hdisk3 Available hdisk4 Available 30-58-00-8,0 16 Bit SCSI Disk Drive 30-58-00-9,0 16 Bit SCSI Disk Drive 10-60-00-8,0 16 Bit SCSI Disk Drive 10-60-00-9,0 16 Bit SCSI Disk Drive 10-60-00-12,0 16 Bit SCSI Disk Drive

2. El nuevo hdisk debe ser asignado al grupo de volmenes mirrorvg utilizando el comando de LVM extendvg:
# extendvg mirrorvg hdisk4

3. Para reestablecer la copia del espejado de este volumen lgico utilice el comando mklvcopy.
# mklvcopy lvdb02 2 hdisk4

El nmero de copias del volumen lgico es ahora dos, pero todava continua marcado como stale, debido a que las copias del volumen lgico no estn sincronizadas entre s:
# lsvg -l mirrorvg mirrorvg: LV NAME TYPE lvdb01 jfs lvdb02 jfs loglv00 jfslog

LPs 500 500 1

PPs 1000 1000 1

PVs 2 2 1

LV STATE open/syncd open/stale open/syncd

MOUNT POINT /u/db01 /u/db02 N/A

4. Para sincronizar completamente las copias del volumen lgico lvdb02, utilice el comando syncvg:
# syncvg -p hdisk4

El comando syncvg puede ser usado con volmenes lgicos, volmenes fsicos, o grupo de volmenes. El proceso de sincronizacin puede consumir bastante tiempo, dependiendo de las caractersticas del hardware y del tamao de los datos. Cuando la sincronizacin acaba, verificar el estado del volumen lgico por medio de los comandos lsvg o lslv:
# lsvg -l mirrorvg mirrorvg: LV NAME TYPE lvdb01 jfs lvdb02 jfs loglv00 jfslog

LPs 500 500 1

PPs 1000 1000 1

PVs 2 2 1

LV STATE open/syncd open/syncd open/syncd

MOUNT POINT /u/db01 /u/db02 N/A

El sistema volvi nuevamente a la normalidad.

Pgina 24 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2.3.2 Recuperando un disco removido incorrectamente


Si un disco fue removido incorrectamente del sistema, y el sistema fue reiniciado, ser necesario correr el comando synclvodm para reconstruir el LVCB. En los ejemplos, un disco fue removido incorrectamente del sistema y el LVCB necesita ser reconstruido. Estos eran los discos en el sistema antes de que el volumen fsico fuese removido:
# lsdev -Cc disk hdisk0 Available hdisk1 Available hdisk2 Available hdisk3 Available 30-58-00-8,0 30-58-00-9,0 10-60-00-8,0 10-60-00-9,0 16 16 16 16 Bit Bit Bit Bit SCSI SCSI SCSI SCSI Disk Disk Disk Disk Drive Drive Drive Drive

Esta era la asignacin de volmenes fsicos antes de que el disco fuese removido:
# lspv hdisk0 hdisk1 hdisk2 hdisk3 000bc6fdc3dc07a7 000bc6fdbff75ee2 000bc6fdbff92812 000bc6fdbff972f4 rootvg volg01 volg01 volg01

Los volmenes lgicos en el grupo de volmenes:


# lsvg -l volg01 volg01: LV NAME TYPE logvol01 jfs loglv00 jfslog

LPs 1000 1

PPs 1000 1

PVs 2 1

LV STATE open/syncd open/syncd

MOUNT POINT /userfs01 N/A

La distribucin de volmenes lgicos en los volmenes fsicos era la siguiente:


# lslv -l logvol01 logvol01:/userfs01 PV hdisk1 hdisk3

COPIES 542:000:000 458:000:000

IN BAND 19% 23%

DISTRIBUTION 109:108:108:108:109 109:108:108:108:025

El sistema despus de ser reiniciado tiene los siguientes volmenes fsicos:


# lspv hdisk0 hdisk1 hdisk3 000bc6fdc3dc07a7 000bc6fdbff75ee2 000bc6fdbff972f4 rootvg volg01 volg01

Cuando se intenta montar el file system en el volumen lgico, el error puede ser similar al del siguiente ejemplo:
# mount /userfs01 mount: 0506-324 Cannot mount /dev/logvol01 on /userfs01: There is an input or output error.

Para sincronizar el volumen lgico, debe ejecutarse el siguiente comando:


# synclvodm -v volg01 synclvodm: Physical volume data updated. synclvodm: Logical volume logvol01 updated. synclvodm: Warning, lv control block of loglv00 has been over written. 0516-622 synclvodm: Warning, cannot write lv control block data. synclvodm: Logical volume loglv00 updated.

El sistema puede ser reparado ahora; si los datos del file system hubieran estado dispersos a travs de todos los discos, incluyendo el disco daado, debera ser restaurado desde el ltimo backup. Pgina 25 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2.4 EL JFS en AIX


Al igual que para el LVM, la mayora de los problemas de JFS pueden ser atribuidos a problemas con los discos fsicos subyacentes. Como con los grupos de volmenes, varias caractersticas fueron aadidas en diferentes niveles de AIX, lo que imposibilita que esos file systems sean montados si el grupo de volmenes fue importado en una versin anterior de AIX. Estas caractersticas incluyen entre otras, file systems con soporte de archivos largos (mayores a 2 GB), file systems con un tamao de grupo de asignacin que no es por defecto, y JFS2.

2.4.1 Creando un JFS


En un Journaled File System (JFS), los archivos son almacenados en bloques de bytes contiguos. El tamao de bloque (block size) por defecto, tambin denominado en AIX como tamao de fragmentacin, es de 4096 bytes (4 KB). El i-nodo del JFS contiene una estructura de informacin del archivo, con un arreglo de 8 punteros a los bloques de datos. Un archivo que es menor a 32 KB es direccionado directamente desde el i-nodo. Un archivo ms grande utiliza un bloque de 4 KB, referido a un bloque indirecto, para el direccionamiento de hasta 1024 bloques de datos. Utilizando un bloque indirecto, es posible un tamao de archivo de 1024x4 KB = 4 MB. Para archivos mayores a 4 MB, es utilizado un segundo bloque, el bloque indirecto doble. Este bloque indirecto doble apunta a 512 bloques indirectos, posibilitando el direccionamiento de archivos de 512 x 1024 x 4 KB = 2 GB. La siguiente figura ilustra el direccionamiento utilizando doble bloque indirecto.

AIX Versin 4.2 y posteriores soportan archivos an ms largos definiendo un nuevo tipo de JFS llamado file system con soporte para archivos largos (bigfile file system). En estos file systems, el bloque indirecto doble direcciona bloques de 128 KB en lugar de bloques de 4 KB. Sin embargo, el primer bloque indirecto todava apunta a un bloque de 4 MB, entonces los bloques largos son utilizados recin cuando el tamao del archivo es superior a 4 MB. Esto provee un nuevo tamao mximo de archivo de (512 x 1024 x 128 KB) 124 KB = 64 GB 124 KB = 67.108.740 KB, algo as como 63,99 GB. Cuando se crea un JFS, la estructura es definida tanto en un volumen lgico nuevo, como en un volumen lgico previamente definido. Los parmetros de un JFS definido pueden ser mostrado tanto a travs de los mens de SMIT (smit jfs) como por el comando lsjfs: Pgina 26 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# lsjfs /u/testfs MountPoint:Device:Vfs:Nodename:Type:Size:Options:AutoMount:Acct:OtherOptio ns:LvSize:FsSize:FragSize:Nbpi:Compress:Bf:AgSize: /u/testfs:/dev/lv03:jfs:::425984:rw:yes:no::425984:425984:4096:4096:no:fal se:8:

El comando lsjfs muestra los atributos del JFS utilizando : (dos puntos) como separador.

2.4.2 Aumentando el tamao del file system


Muchas veces, es necesario ampliar el tamao de un file system debido a que la demanda de almacenamiento ha aumentado. En AIX, este es un procedimiento muy comn, y es posible realizar esto utilizando el comando chfs como en el siguiente ejemplo:
# chfs -a size=+300000 /u/testfs Filesystem size changed to 458752

Este ejemplo muestra como el file system testfs es extendido con 30000 bloques de 512 bytes. Cuando el file system es extendido, el volumen lgico que contiene el JFS es tambin extendido, con el nmero de particiones lgicas necesarias para alcanzar el espacio necesitado. Si el sistema no cuenta con espacio libre suficiente, el grupo de volmenes puede ser ampliado con un volumen fsico adicional, o se puede reducir el tamao especificado en el comando chfs de manera que corresponda con la cantidad de particiones lgicas libres.

2.4.3 Verificacin y recuperacin de file systems


El comando fsck chequea y repara interactivamente file systems inconsistentes. Se debe ejecutar este comando antes de montar cualquier file system. Se debe poder leer el archivo del dispositivo en el que reside el file system (por ejemplo, el dispositivo /dev/hd0). Normalmente, el file system est consistente, y el comando fsck simplemente reporta el nmero de archivos, bloques usados, y bloques libres en el file system. Si el file system es inconsistente, el comando fsck muestra informacin sobre las inconsistencias encontradas y solicita permiso para repararlas. Si el file system no puede ser reparado, se debe restaurar desde un backup. Montar un file system inconsistente puede provocar una cada del sistema. Si no se especifica un file system, con el parmetro FileSystem, el comando fsck verificar todos los file systems con el atributo check=TRUE en /etc/filesystems.
Nota

Por defecto, los file systems /, /usr, /var, y /tmp tienen el atributo check=FALSE en el archivo /etc/filesystems. El atributo est en FALSE por las siguientes razones: 1. El proceso de boot explcitamente corre el comando fsck en los file systems /, /usr, /var, y /tmp. 2. Los file systems /, /usr, /var, y /tmp son montados cuando se corre el archivo /etc/rc. El comando fsck no modificar un file system montado y por otro lado, los resultados del fsck en un file system montado son imprevisibles.

Pgina 27 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2.4.3.1 Reparando un superbloque daado Si se recibe uno de los siguientes errores cuando se corre el comando fsck o el comando mount, el problema puede deberse a que el superbloque est daado, como se muestra en el siguiente ejemplo:
fsck: Not an AIX3 file system fsck: Not an AIXV3 file system fsck: Not an AIX4 file system fsck: Not an AIXV4 file system fsck: Not a recognized file system type mount: invalid argument

El problema puede ser resuelto restaurando un backup del superbloque sobre el superbloque primario utilizando el siguiente comando (se debe tomar la precaucin de verificar la ltima documentacin del producto antes de correr este comando):
# dd count=1 bs=4k skip=31 seek=1 if=/dev/lv00 of=/dev/lv00

El siguiente es un ejemplo donde el superbloque est corrupto y copiando el backup se soluciona el problema:
# mount /u/testfs mount: 0506-324 Cannot mount /dev/lv02 on /u/testfs: A system call received a parameter that is not valid. # fsck /dev/lv02 Not a recognized filesystem type. (TERMINATED) # dd count=1 bs=4k skip=31 seek=1 if=/dev/lv02 of=/dev/lv02 1+0 records in. 1+0 records out. # fsck /dev/lv02 ** Checking /dev/lv02 (/u/tes) ** Phase 0 - Check Log log redo processing for /dev/lv02 ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Inode Map ** Phase 6 - Check Block Map 8 files 2136 blocks 63400 free

Una vez que el proceso de restauracin es completado, se verifica la integridad del file system de la siguiente manera:
# fsck /dev/lv00

En muchos casos, restaurar el backup del superbloque sobre el superbloque primario repara el file system. En el caso de que no se solucione, se debe re-crear el file system y restaurar los datos desde un backup

2.4.4 Asignacin de archivos sparse (esparcidos)


Algunas aplicaciones, particularmente bases de datos, mantienen los datos en archivos sparse (esparcidos). Son llamados as aquellos archivos que no tienen bloques de disco asignados para cada bloque lgico. Si el offset del archivo es mayor a 4 MB, entonces es asignado un bloque de disco de 128 KB. Las aplicaciones que usan archivos sparse mayores a 4 MB requieren ms bloques de disco en un file system con soporte para archivos largos que en un file system comn. Pgina 28 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

En el caso de los archivos sparse, la salida del comando ls no muestra el verdadero tamao del archivo, muestra la cantidad de bytes entre el primer y ltimo bloque asignado al archivo, como se ve en el siguiente ejemplo:
# ls -l /tmp/sparsefile -rw-r--r-- 1 root system 100000000 Jul 16 20:57 /tmp/sparsefile

El comando du puede ser utilizado para ver el verdadero tamao, ya que reporta los bloques asignados y en uso por el archivo. Utilice du -rs para reportar el nmero de bloques asignados en el disco.
# du -rs /tmp/sparsefile 256 /tmp/sparsefile Nota

El comando tar no conserva la naturaleza sparse de los archivos. Cualquier archivo que originalmente era de tipo sparse, despus de la restauracin tendr como tamao todo el espacio asignado en el file system. Nuevas opciones del comando restore en AIX 5L son muy tiles para los archivos sparse. Es recomendable utilizar el comando dd en combinacin con los sripts de backups existentes para solucionar el problema de los archivos sparse.

2.4.5 Problemas desmontando file systems


Un file system no puede ser desmontado si existen referencias activas apuntando a dicho file system. El siguiente mensaje de error puede ser mostrado:
Device busy

or
A device is already mounted or cannot be unmounted

Las siguientes situaciones pueden dejar referencias abiertas apuntando a un file system: Archivos abiertos en el file system. Estos archivos deben cerrarse antes de que el file system pueda ser desmontado. El comando fuser a menudo la mejor forma de determinar que es lo que se encuentra an activo en el file system. El comando fuser retornar el ID de todos los procesos que tiene referencias abiertas apuntando a un file system determinado, como se muestra en el siguiente ejemplo:
# umount /home umount: 0506-349 Cannot unmount /dev/hd1: The requested resource is busy. # fuser -x -c /home /home: 11630 # ps -fp 11630 UID PID PPID C STIME TTY TIME CMD guest 11630 14992 0 16:44:51 pts/1 0:00 -sh # kill -1 11630 # umount /home

El proceso que tiene una referencia abierta puede ser matado utilizando el comando kill (enva una SIGHUP), y el unmount puede ser llevado a cabo. Una seal ms fuerte puede ser necesaria, como un SIGKILL. Si el file system est todava busy (ocupado) y no puede ser desmontado, es posible que se deba a una extensin del kernel que ya est cargada pero existe dentro del file system original. El Pgina 29 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

comando fuser no muestra ese tipo de referencias, dado que un proceso de usuario no se encuentra involucrado. No obstante, el comando genkex reportar todas las extensiones del kernel cargadas. Otros file systems estn montados sobre el file system a desmontar. Es necesario desmontar esos otros file systems antes de que el file system pueda ser desmontado. Si algn file system est montado sobre otro file system, esto deja referencias abiertas en el file system original, en el punto de montaje del otro file system. Utilice el comando mount para obtener una lista de todos los file systems montados. Desmonte todos los file system que estn montados sobre el file system a desmontar.

2.4.6 Eliminando file systems


Cuando se debe borrar un JFS, este debe ser desmontado antes de que pueda ser eliminado. El comando para borrar file systems es rmfs. En el caso de un JFS, el comando rmfs borra el volumen lgico en el que reside el file system y la entrada asociada en el archivo /etc/filesystems. Si el file system no es un JFS, el comando borra nicamente la entrada asociada en el archivo /etc/filesystems, como se ve en el siguiente ejemplo:
# lsvg -l testvg testvg: LV NAME TYPE LPs PPs PVs MOUNT POINT loglv00 jfslog 1 1 1 N/A lv02 jfs 2 2 1 /u/testfs # rmfs /u/testfs rmfs: 0506-921 /u/testfs is currently mounted. # umount /u/testfs # rmfs /u/testfs rmlv: Logical volume lv02 is removed. # lsvg -l testvg testvg: LV NAME TYPE LPs PPs PVs MOUNT POINT loglv00 jfslog 1 1 1

LV STATE open/syncd open/syncd

LV STATE closed/syncd N/A

Este ejemplo muestra como el file system testfs es eliminado. El primer intento falla debido a que el file system estaba an montado. El volumen lgico asociado lv02 es tambin eliminado. El jfslog permanece definido en el grupo de volmenes.

2.5 Espacio de paginado


Para los sistemas AIX, la siguiente lista indica los posibles problemas asociados con el espacio de paginado: Todos los espacios de paginado estn definidos en un volumen fsico. Espacio de paginado casi lleno Desequilibrio en la asignacin espacio de paginado en volmenes fsicos Fragmentacin de un espacio de paginado en un grupo de volmenes

Pgina 30 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2.5.1 Recomendaciones para crear o extender los espacios de paginado


No poner ms de un espacio de paginado en un volumen fsico. Todos los procesos que corren durante el proceso de inicio (boot) utilizan el espacio de paginado por defecto (hd6). Despus de que los espacios de paginado adicionales son activados, el espacio de paginado es asignado de forma round robin en unidades de 4 KB. Si hay espacio de paginado en mltiples volmenes fsicos, y se coloca ms de un espacio de paginado en un volumen fsico, no se utilizar en forma ptima y pareja sobre los distintos volmenes fsicos. Se recomienda evitar la creacin de espacios de paginado en volmenes fsicos con gran actividad, como aquellos que son usados por una base de datos. No es necesario colocar un espacio de paginado en cada volumen fsico. Es recomendable crear los espacios de paginado ms o menos del mismo tamao. Si existen espacios de paginado de tamaos diferentes y los ms pequeos se quedan sin espacio, no habr ms distribucin del paginado a lo largo de todos los espacios de paginado. No se recomienda extender un espacio de paginado en mltiples volmenes fsicos. Si un espacio de paginado esta disperso en mltiples volmenes fsicos no se distribuir la actividad de paginado sobre todos los volmenes fsicos. Para mejorar el rendimiento del sistema, es ideal crear los espacios de paginado en volmenes fsicos que se encuentren conectados a diferentes controladoras de disco.

2.5.2 Cmo determinar si hace falta ms espacio de paginado


Asignar ms espacio de paginado que el necesario provoca simplemente un mal aprovechamiento del espacio de disco. Si se asigna menos espacio que el necesario, una serie de sntomas negativos pueden presentarse en el sistema. Para determinar cuanto paginado es necesario, es recomendable seguir los siguientes pasos: Extienda el espacio de paginado si uno de los siguientes mensajes aparecen en la consola o en respuesta a un comando en cualquier terminal:
INIT: Paging space is low ksh: cannot fork no swap space Not enough memory Fork function failed fork () system call failed Unable to fork, too many processes Fork failure - not enough memory available Fork function not allowed. Not enough memory available. Cannot fork: Not enough space

Extienda el espacio de paginado si la columna de %Used en la salida del comando lsps -s es mayor a 80. Utilice los siguientes comandos para determinar si es necesario realizar cambios relativos al espacio de paginado:
# iostat # vmstat # lsps

Si desea eliminar o reducir el tamao de un espacio de paginado del sistema, esto debe ser realizado en dos pasos. El primer paso en cualquiera de los casos es cambiar el espacio de paginado de manera que no se active automticamente cuando el sistema reinicia. Esto se lleva a cabo con el comando chps. Por ejemplo:
# chps -a n paging00

Pgina 31 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Para borrar el espacio de paginado, es necesario reiniciar el sistema, dado que no hay ninguna forma de desactivar un file system en forma dinmica. Una vez que el sistema reinicia, el espacio de paginado no estar activo. En este estado s es posible eliminarlo. Para disminuir el tamao del espacio de paginado, es necesario eliminar el volumen lgico que lo contiene, y recrear el nuevo espacio de paginado con el tamao deseado. El nuevo espacio de paginado puede ser activado sin necesidad de reiniciar la mquina, utilizando el comando
swapon.

2.5.3 Cmo disminuir el espacio de paginado por defecto (hd6)


1- Determine cuantos volmenes lgicos de espacio de paginado existen en su sistema. Ingrese:
lsps -a

Si hay mas de un espacio de paginado en rootvg, anote sus nombres (listados en la columna Page Space) y siga el paso 3. Si slo hay un espacio de paginado en rootvg (ste se llamar hd6), contine por el paso 2. 2- Verifique cuantas particiones fsicas (PPs) libres hay disponibles. Ingrese:
lsvg -p rootvg

Cree un espacio de paginado para usar temporalmente con el siguiente comando. X es un nmero entre 1 y el total de PPs libres del sistema.
mkps -s X -a rootvg

Ejecute lsps -a nuevamente y anote el nombre del nuevo espacio de paginado (posiblemente paging00). 3- Cambie las caractersticas del nuevo espacio de paginado (hd6) de manera que no se active en el siguiente reinicio. Ingrese:
chps -a n hd6

4- Modifique el siguiente archivo. vi /sbin/rc.boot Cambie la lnea swapon /dev/hd6 por swapon /dev/pagingXX, donde XX es el numero de uno de los espacios de paginado encontrados en el paso 1, o el nmero de el nuevo espacio de paginado creado en el paso 2. 5- Determine cual disco es el disco de inicio con el comando lslv. El disco de inicio es mostrado en la columna PV1 de la salida. Ingrese:
lslv -m hd5

ATENCION: No proceda de aqu en ms si el sistema es un cliente /usr, cliente sin discos, o cliente sin datos. 6- Ahora, ejecute el comando bosboot, utilizando el hdisk# determinado en el paso 5. Ingrese:

Pgina 32 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

bosboot -a -d /dev/hdisk#

7- El sistema necesita ser reiniciado para desactivar el espacio de paginado hd6. Ingrese:
shutdown -Fr

8- El dispositivo de dump por defecto es asignado al hd6. hd6 no puede ser eliminado mientras sea el dispositivo de dump. Verifique el dispositivo de dump. Ingrese:
sysdumpdev -l

Si el dispositivo de dump primario o secundario es el hd6 modifquelo de la siguiente manera:


sysdumpdev -P -p /dev/sysdumpnull

9- Como algunos scripts estn diseados para activar el /dev/hd6, es recomendable crear un nuevo espacio de paginado con el mismo nombre. Elimine el hd6 y cree un nuevo hd6 de tamao ms pequeo, con los siguientes comandos (<tamao en particiones lgicas> es el nmero de PP a asignar al hd6):
rmps hd6 mklv -y hd6 -t paging rootvg <tamao en particiones lgicas >

10- Modifique el siguiente archivo: vi "/sbin/rc.boot" Cambie la lnea de swapon nuevamente por swapon /dev/hd6. 11- Ejecute:
lsps -a

para ver si el hd6 est configurado para ser activado al reiniciar el sistema. Esto es determinado por una y en la columna auto. Si una n est en la columna auto, ejecute:
chps -a y hd6

para cambiar las caractersticas del espacio de paginado por defecto. 12- Corra el comando bosboot, utilice el hdisk# determinado en el paso 5.
bosboot -a -d /dev/hdisk#

13- Si un espacio de paginado temporal no fue creado, aqu termina el procedimiento. De lo contrario, contine con los pasos siguientes. 14- Cambie las caractersticas del espacio de paginado temporal (que asumimos es paging00 en estos pasos), de manera que no est activo en el siguiente reinicio del sistema. Ingrese:
chps -a n paging00

15- El sistema necesita ser reiniciado para desactivar el espacio de paginado temporal. Ingrese:
shutdown -Fr

Pgina 33 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

16- Elimine el espacio de paginado temporal. Ingrese:


rmps paging00

17- Si el dispositivo de dump fue modificado en el paso 8, entonces restablezca la anterior configuracin. Ingrese:
sysdumpdev -P -p /dev/hd6

Pgina 34 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

3. Dumps del sistema


3.1 Configuracin de los dispositivos de dump
Es necesario configurar inicialmente el sistema para capturar un dump de forma satisfactoria. Esto se realiza siguiendo los siguientes pasos:

3.1.1 Estimar el tamao de un posible dump


Ante todo, es necesario determinar el tamao del dispositivo de dump necesario para la mquina. Esto se hace a travs del siguiente men de SMIT:
# smit dump_estimate

O corriendo el siguiente comando:


# sysdumpdev -e 0453-041 Estimated dump size in bytes: 57671680

Este valor puede cambiar de acuerdo a la actividad del sistema. Es preferible correr el comando cuando la mquina se encuentra con la mayor carga de trabajo. Es recomendable crear el dispositivo de dump apenas masa grande que el valor reportado por el comando sysdumpdev de manera que pueda manejar un dump del sistema durante un pico de actividad. Es muy recomendable hacer un seguimiento a travs del tiempo, e ir actualizando el tamao si es necesario.

3.1.2 Seleccionando el dispositivo de dump


Cuando se instala el sistema operativo, el dispositivo de dump es configurado automticamente. Por defecto, el dispositivo de dump primario es el /dev/hd6, que es al mismo tiempo el volumen lgico de paginado por defecto. El dispositivo de dump secundario es configurado por defecto como /dev/sysdumpnull. Ambos pueden ser modificados para que sean disco, cinta o remoto. Para ver la actual configuracin de los dispositivos de dump corra el siguiente comando:
# sysdumpdev -l primary secondary copy directory forced copy flag always allow dump /dev/hd6 /dev/sysdumpnull /var/adm/ras TRUE FALSE

En este ejemplo, el dispositivo de dump primario es el volumen lgico hd6, y el secundario /dev/sysdumpnull, lo que implica que no hay secundario. Originariamente, el dispositivo de dump secundario estaba limitado a ser utilizado cuando el usuario especificara por alguna razn que quera que se almacenara all. En la prctica, el dispositivo de dump secundario no se usaba nunca. Sin embargo, el uso del dispositivo de dump secundario cambi en la versin 4.2.1 de AIX con la proteccin de fallas para dumps (dump failover).
Nota

Dump failover El dispositivo de dump secundario es ahora utilizado como respaldo del primer dispositivo de Pgina 35 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

dump. Si ocurre un error durante un dump de sistema en el dispositivo primario, el sistema intenta copiar el volcar el dump en el dispositivo secundario (si est definido). Si tambin falla el segundo dispositivo, AIX se referir a cualquier dispositivo que acepte suficientes datos como para contener el verdadero dump. Esto es muy til cuando el sistema no puede volcar satisfactoriamente un dump del sistema en el dispositivo de dump primario. Hay que tener en cuenta las siguientes reglas cuando se eligen dispositivos de dump: No utilizar volmenes lgicos espejados como dispositivo de dump activo. No se mostrar ningn mensaje de error, pero cualquier dump que se intente grabar en un volumen lgico espejado fallar indefectiblemente. Esta limitacin fue eliminada en AIX Versin 4.3.3 y versiones posteriores. No usar una unidad de disquete como dispositivo de dump. El dispositivo de paginado primario hd6 es el nico dispositivo de paginado que puede ser utilizado como dispositivo de dump. Cualquier otro espacio de paginado que se configure como dispositivo de dump ser indefectiblemente desactivado como dispositivo de paginado, no siendo ms utilizado por el AIX virtual memory manager. AIX Versin 4.2.1 o superiores soportan utilizar cualquier dispositivo de paginado en el grupo de volmenes root (rootvg) como el dispositivo de dump secundario.
Nota

Dump en un volumen lgico espejado Las versiones de AIX anteriores a la 4.3.3 no soportan los volmenes lgicos espejados como dispositivos de dump. Esto es porque el dump ignora los mecanismos del LVM y escribe directamente a una de las copias del volumen lgico. En otras palabras, slo una de las copias contiene el dump; las otras copias slo contienen lo que sea que el volumen lgico tuviera antes de que el dump comenzara. Cuando el comando crash intenta leer el dump, utiliza el mecanismo normal de lectura del LVM, por lo que busca los datos de cualquier de las copias, y slo una contiene el dump. En otras palabras, el crash ve datos del dump mezclados con datos basura y falla la lectura. Esta limitacin es eliminada con el AIX Versin 4.3.3, que soporta la utilizacin de un volumen lgico espejado como el dispositivo primario de dump. Para especificar el dispositivo de dump primario utilice el siguiente comando:
# sysdumpdev -P -p /dev/hd7 primary /dev/hd7 secondary /dev/sysdumpnull copy directory /var/adm/ras forced copy flag TRUE always allow dump FALSE

Para especificar el dispositivo de dump secundario utilice el siguiente comando:


# sysdumpdev -P -s /dev/hd7 primary /dev/hd6 secondary /dev/hd7 copy directory /var/adm/ras forced copy flag TRUE always allow dump FALSE

3.1.3 Creando un dispositivo de dump

Pgina 36 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Si quiere crear un volumen lgico de dump comn, siga los siguientes pasos: 1. Calcular el tamao de un dump del sistema.
# sysdumpdev -e 0453-041 Estimated dump size in bytes: 54525952

Recuerde que el dispositivo de dumps debe ser apenas ms grande que lo que reporta el sysdumpdev para manejar adecuadamente los dumps durante picos de carga de trabajo. 2. Calcule el nmero necesario de PPs para el dispositivo de dump. Obtenga el tamao de PP del grupo de volmenes con el comando lsvg:
# lsvg rootvg VOLUME GROUP: rootvg VG STATE: active VG PERMISSION: read/write MAX LVs: 256 LVs: 10 OPEN LVs: 8 TOTAL PVs: 1 STALE PVs: 0 ACTIVE PVs: 1 MAX PPs per PV: 1016 VG IDENTIFIER: 00017d37a4155bbc PP SIZE: 8 megabyte(s) TOTAL PPs: 537 (4296 megabytes) FREE PPs: 218 (1744 megabytes) USED PPs: 319 (2552 megabytes) QUORUM: 2 VG DESCRIPTORS: 2 STALE PPs: 0 AUTO ON: yes MAX PVs: 32

Determine el nmero necesario de PPs dividiendo el tamao del dump por el tamao de PP. Por ejemplo:
54525952 / 8 megabytes = 6.5 (la cantidad necesaria es 7)

3.

Genere un volumen lgico del tamao necesario, por ejemplo:


# mklv -y hd7 -t sysdump rootvg 7 hd7

3.1.4 Cambiando el tamao del dispositivo de dump


Si el sistema tiene un dispositivo de dump, asegrese que el tamao de dump estimado sea menor que el del dispositivo. El comando lslv muestra el tamao del volumen lgico. Por ejemplo:
# lslv hd6 LOGICAL VOLUME: hd6 LV IDENTIFIER: 00017d37a4155bbc.2 VG STATE: active/complete TYPE: paging MAX LPs: 512 COPIES: 1 LPs: 256 STALE PPs: 0 INTER-POLICY: minimum INTRA-POLICY: middle MOUNT POINT: N/A MIRROR WRITE CONSISTENCY: off EACH LP COPY ON A SEPARATE PV ?: yes VOLUME GROUP: PERMISSION: LV STATE: WRITE VERIFY: PP SIZE: SCHED POLICY: PPs: BB POLICY: RELOCATABLE: UPPER BOUND: LABEL: rootvg read/write opened/syncd off 8 megabyte(s) parallel 256 non-relocatable yes 32 None

Se deben tomar los valores de LPs y PP SIZE. Multiplicando dichos valores se obtiene el tamao del dispositivo de dump en megabytes. Si el dispositivo de dump es un volumen lgico de dumps comn, como hd7, entonces el comando que se debe utilizar para incrementar su tamao es extendlv. Por ejemplo:
# extendlv hd7 1 hdisk

Pgina 37 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Si es el espacio de paginado hd6, entonces use el comando chps. Por ejemplo:


# chps -s'1' hd6

Si el dispositivo de dump es el espacio de paginado, asegrese que el valor del forced copy flag sea true, por medio del comando sysdumpdev y el tamao del copy directory sea suficiente. El directorio por defecto es /var/adm/ras. Para revisar el tamao del copy directory y modificarlo se deben correr los siguientes comandos:
# df -k /var Filesystem 1024-blocks Free %Used Iused %Iused Mounted on /dev/hd9var 8192 4776 42% 102 5% /var # chfs -asize=+200000 /var File System size changed to 229376

3.1.5 Configuracin adicional


Esta seccin detalla otras caractersticas del AIX y la mquina que puedan afectar la capacidad de acceso a un dump de sistema. Autorestart Un atributo del sistema muy til es autorestart. Si autorestart es true, el sistema automticamente reinicia despus de una cada. Esto es sumamente til si la mquina se encuentra fsicamente distante o sin atencin frecuente. Para revisar este valor, utilice: lsattr -Dl sys0 Para configurar autorestart como true, use SMIT de la siguiente manera:
smit chgsys

O use el comando:
# chdev -l sys0 -a autorestart=true sys0 changed

Always allow system dump Si este tem es configurado como true, el botn de Reset o una secuencia de teclas pueden iniciar un dump de sistema, an cuando la llave se encuentre en la posicin Normal o cuando el sistema no cuente con llave. Se puede cambiar con smit dump_allow, o con el comando
sysdumpdev.

Surveillance timeout interval La mayora de los servidores nuevos, como los 7017-S80 y los 7025-F50, tienen un procesador de servicio (service processor), que cumple una funcin de supervisin del hardware y el software. Algunas veces, un dump del AIX falla debido a que el timeout de supervisin (surveillance timeout) interfiere con el proceso del dump. Esto ocurre porque es insuficiente el tiempo configurado para el timeout de supervisin. Si el sistema tiene un procesador de servicio, asegrese que el valor del timeout de supervisin sea suficiente. Generalmente, ms de 5 minutos es suficiente. Para ver esta informacin, utilice el comando diag, y seleccione el men Task Selection, luego el men Configure Surveillance Policy. Se podr ver informacin similar a la siguiente:
------------------------------------------------------------------------------------------------------------------------------------------------CONFIGURE SURVEILLANCE POLICY 802583 The following system configuration parameters are available for

Pgina 38 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Surveillance Policy. Any data in brackets [] may be changed or added at this time. When finished, use 'Commit' to accept the data. Surveillance Surveillance Time Interval, in minutes Surveillance Delay, in minutes Changes are to take effect immediately F1=Help F5=Reset F2=Refresh F7=Commit F3=Cancel F10=Exit F4=List [off] + [5] # [10] # [yes] +

-------------------------------------------------------------------------------------------------------------------------------------------------

No hay necesidad de cambiar el valor del timeout de supervisin en sistemas corriendo AIX Versin 4.3.3, ya que el valor es automticamente modificado a 60 minutos en el momento que comienza un proceso de dump.

3.2 Revisando el estado del dump


Es muy til revisar que el dump del sistema sea vlido y legible, antes de enviarlo al centro de soporte para su posterior anlisis. Esto ahorra mucho tiempo en caso de que no sea vlido.

3.2.1 Informacin del ltimo dump


Si se corre el comando sysdumpdev -L, este muestra informacin estadstica sobre el dump mas reciente. Esto incluye fecha y hora, tamao en bytes, el estado de finalizacin. Por ejemplo:
# sysdumpdev -L 0453-039 Device name: /dev/hd6 Major device number: 10 Minor device number: 2 Size: 68197888 bytes Date/Time: Fri Mar 12 14:43:52 CST 1999 Dump status: 0 dump completed successfully 0481-195 Failed to copy the dump from /dev/hd6 to /var/adm/ras. 0481-198 Allowed the customer to copy the dump to external media.

En este caso, el dump finaliz satisfactoriamente y pudo ser copiado a un medio de almacenamiento externo, como por ejemplo, cinta.

3.2.2 Cdigos de estado de un dump


Cuando se ve el cdigo 888 en el LED, es porque el sistema sufri una cada. Se puede ver en poco tiempo un 0c9, indicando que un dump del sistema est en progreso. Cuando el dump concluye, el LED muestra el cdigo 0c0 si concluye de manera satisfactoria. La siguiente tabla muestra los posibles cdigos de estado de un dump. Dependiendo del nivel de AIX, alguno de estos cdigos puede no estar disponible en el sistema. Cdigo Cdigo de estado Descripcin

Pgina 39 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

del LED 0c0 0c1

del sysdumpdev 0 -4

El dump concluy satisfactoriamente. Error de I/O. Este mensaje fue agregado para las versiones de AIX 4.1.5 y 4.2.1. El dispositivo de dump es muy pequeo. El dump se tom parcialmente. Este cdigo fue modificado en AIX 4.1.5 y AIX 4.2.1. Ahora es ms especfico. Es usado para incluir otro tipo de errores internos. Error interno. Este cdigo fue modificado en AIX 4.1.5 y AIX 4.2.1. Ahora es mostrado nicamente cuando el sistema de dumps falla en s mismo. No incluye las fallas de las rutinas de los componentes. No hay un dispositivo de dump definido. Dump en progreso iniciado por el usuario. Este cdigo fue modificado en AIX 4.1.5 y AIX 4.2.1. En AIX 4.2.1 y superiores, este cdigo aparece independientemente de que el dump vaya al dispositivo primario o secundario. Dump en progreso iniciado por el usuario al dispositivo secundario. Obsrvese que AIX 4.2.1 y superiores soportan dump failover, por lo que este cdigo qued obsoleto. Dump esperando autorizacin de un servidor NFS. Dump iniciado por el sistema en progreso. Cambio de dispositivo por failover. Indica que el dump fallo en el dispositivo primario e intenta utilizar el secundario. Soportado en AIX 4.2.1 y superiores.

0c4

-2

0c5

-3

0c8 0c2

-1 -

0c6

0c7 0c9 0cc

3.2.3 Log de errores


Si se pierde el dump o no es copiado durante el reinicio del sistema, el log de errores (error log) puede ayudar a determinar la naturaleza del problema que provoc el dump. Implementado con AIX 4.1.3, el log de errores puede incluir un error con la etiqueta (label) SYSDUMP_SYMP si el dump era legible por AIX durante el reinicio siguiente a la cada. La entrada en el log de errores tambin incluye un stack tracebak. Para revisar el log de errores utilice el comando errpt. La siguiente figura muestra un ejemplo de un error del tipo SYSDUMP_SYMP.
LABEL: IDENTIFIER: Date/Time: Sequence Number: Machine Id: Node Id: Class: SYSDUMP_SYMP 3573A829 Tue May 4 19:17:15 205 000126774C00 sp5i S

Pgina 40 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Type: Resource Name: Description SYSTEM DUMP

UNKN CMDCRASH

Probable Causes UNEXPECTED SYSTEM HALT User Causes SYSTEM DUMP REQUESTED BY USER Recommended Actions PERFORM PROBLEM DETERMINATION PROCEDURES Failure Causes UNEXPECTED SYSTEM HALT Recommended Actions PERFORM PROBLEM DETERMINATION PROCEDURES Detail Data DUMP STATUS LED:300 csa:2ff3b400 soo_select 2c8 soo_select 198 selpoll 120 select 4f0 sys_call_ret 0 Symptom Data REPORTABLE 1 INTERNAL ERROR 1 SYMPTOM CODE PIDS/5765C3403 LVLS/430 PCSS/SPI1 MS/300 FLDS/soo_selec VALU/90150008 FLDS/selpoll VALU/120

En este ejemplo, se puede ver el estado del dump (dump status) e informacin sobre el stack traceback en la seccin Detail Data. La seccin User Causes siempre dice que el dump fue iniciado por el usuario, an cuando haya sido iniciado por el sistema.

Pgina 41 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

3.3 Core dump


Un archivo core es creado en el directorio que est en uso cuando ocurren los errores. Estos errores pueden ser violaciones a direcciones de memoria, instrucciones ilegales, errores de bus, o seales de salida generadas por usuario, y son comnmente los causantes de un dump. El archivo core que es generado contiene una imagen de la memoria de los procesos finalizados. Un proceso con un ID de usuario diferente al verdadero ID de usuario no produce una imagen de memoria.

3.3.1 Revisando un core dump


Cuando un core dump es generado, un error ser reportado y puede verse en el log de errores de la siguiente manera:
# errpt IDENTIFIER TIMESTAMP ... C60BB505 0705101400 ... T C RESOURCE_NAME P S SYSPROC DESCRIPTION SOFTWARE PROGRAM ABNORMALLY TERMINATED

En el reporte anterior se puede ver que el error tiene un identificador C60BB505. Un reporte detallado del error se puede ver de la siguiente manera:
# errpt -a -j C60BB505 -------------------------------------------------------------------------LABEL: CORE_DUMP IDENTIFIER: C60BB505 Date/Time: Wed Jul 5 10:14:59 Sequence Number: 8 Machine Id: 000BC6DD4C00 Node Id: client1 Class: S Type: PERM Resource Name: SYSPROC Description SOFTWARE PROGRAM ABNORMALLY TERMINATED Probable Causes SOFTWARE PROGRAM User Causes USER GENERATED SIGNAL Recommended Actions CORRECT THEN RETRY Failure Causes SOFTWARE PROGRAM Recommended Actions RERUN THE APPLICATION PROGRAM IF PROBLEM PERSISTS THEN DO THE FOLLOWING CONTACT APPROPRIATE SERVICE REPRESENTATIVE Detail Data SIGNAL NUMBER 4 USER'S PROCESS ID: 15394 FILE SYSTEM SERIAL NUMBER 5 INODE NUMBER 2 PROGRAM NAME netscape_aix4 ADDITIONAL INFORMATION Unable to generate symptom string. Too many stack elements.

Pgina 42 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

En esta salida, puede verse que el programa que gener el core dump fue netscape_aix4.

3.3.2 Localizando el core dump


Cuando un sistema genera un core dump, lo graba con el nombre core. Este archivo puede estar grabado en cualquier directorio del sistema, inclusive en file systems remotos, y es necesario utilizar el comando find para encontrarlo:
# find / -name core -ls 737 10188 -rw-r--r-- 1 root system 10430807 Jul 5 10:14 /core

En este ejemplo, el archivo se encuentra en el directorio raz (root).

3.3.3 Determinando qu programa provoc el core dump


Existen dos formas de determinar que programa caus el core dump: uno es utilizar el comando strings, el otro es utilizar el comando lquerypv. Aunque esta informacin debera estar en el log de errores, puede haber ocasiones en que el reporte de error no est disponible o halla sido eliminado. El comando strings mostrar el path completo del programa. Por ejemplo:
# strings core | grep _= _=/usr/netscape/communicator/us/netscape_aix4

El comando lquerypv se utiliza de la siguiente manera:


# lquerypv -h core 6b0 64 000006B0 7FFFFFFF FFFFFFFF 000006C0 00000000 000007D0 000006D0 00120000 137084E0 000006E0 6E657473 63617065 000006F0 00000000 00000000 00000700 00000000 00000000 00000710 00000000 00000F5A 7FFFFFFF 7FFFFFFF 00000000 5F616978 00000000 00000000 00000000 FFFFFFFF FFFFFFFF 00000016 34000000 00000000 0000085E 00000776 |................| |................| |.....p..........| |netscape_aix4...| |................| |...............^| |.......Z.......v|

Utilizando la informacin provista, el archivo fue generado por el programa netscape_aix4, como se vea en el log de errores.

3.3.4 Verificando el dump


Para verificar que el dump sea legible, ejecute el comando crash con los archivos del dump, utilizando la siguiente sintaxis: crash <dump> <unix>. El comando crash necesita un archivo del kernel (unix) para corresponder con el archivo del dump. Si no se especifica un archivo del kernel, el crash utiliza por defecto el archivo /unix:
# crash dump unix >

Si no se ve ningn mensaje sobre rutinas de dump que fallaron, probablemente el dump sea vlido. Entonces ejecute el subcomando stat en el prompt >. Por ejemplo:
# crash dump unix > stat sysname: AIX nodename: sp5i release: 3 version: 4

Pgina 43 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

machine: 000126774C00 time of crash: Tue May 4 04:56:10 CDT 1999 age of system: 4 min. xmalloc debug: disabled abend code: 300 csa: 0x2ff3b400 exception struct: dar: 0x00000003 dsisr: 0x00000000: srv: 0x04000000 dar2: 0x3c160040 dsirr: 0x06001000: "(unknown reason code)"

Se deben observar la fecha y hora y el abend code. Si son razonables para el dump, entonces se puede comenzar con los anlisis iniciales. Un mensaje como el siguiente: dumpfile does not appear to match namelist implica que el dump no es vlido. Por ejemplo:
# crash dump unix Cannot locate offset 0x02052b8 in segment 0x000000. endcomm 0x00000000/0x011c5e70 WARNING: dumpfile does not appear to match namelist Cannot locate offset 0x00ccf10 in segment 0x000000. 0452-179: Cannot read v structure from address 0x ccf10. Symbol proc has null value. Symbol thread has null value. Cannot locate offset 0x00ccf10 in segment 0x000000. 0452-179: Cannot read v structure from address 0x ccf10. Cannot locate offset 0x00034c4 in segment 0x000000. 0452-1002: Cannot read extension segment value from address 0x 34c4

Cualquier otro mensaje mostrado cuando se ejecuta el comando crash podra indicar que ciertos componentes del dump son invlidos, pero generalmente son manejados por el crash. Si algn componente de la imagen del dump no es encontrado, mensajes adicionales lo indicarn, y el dump deber ser considerado invlido.

3.4 Introduccin al anlisis del dump


El objeto de esta seccin es permitir reconocer algunos problemas comunes utilizando el comando crash, y realizar una determinacin bsica de las causas del problema.

3.4.1 Usos del comando crash


El comando crash puede ser utilizado en un sistema en produccin. Invocando el comando crash sin parmetros, esencialmente permite ver la memoria y el estado del sistema examinando el /dev/mem. El subcomando alter en el crash permite modificar el kernel que est corriendo. Esto debe ser utilizado nicamente bajo la direccin del soporte de IBM, dado que el uso incorrecto puede causar una cada del sistema. El usuario debe estar en el grupo system para poder utilizar el comando crash. El comando crash tambin puede ser utilizado en un dump de sistema. Esta es la principal herramienta utilizada para analizar un dump provocado por una falla en un sistema. Invocando el crash con un parmetro especificando un archivo de dump permite examinar dicho archivo para realizar un anlisis del problema. Utilizando el crash, se puede examinar: Direcciones y smbolos Pgina 44 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Stack traceback del Kernel Extensiones del Kernel La tabla de procesos La tabla de threads La tabla de archivos La tabla de inodos Adems de los puntos mencionados, se puede utilizar el crash para observar cualquier otra cosa contenida en la memoria del kernel.

3.4.2 Qu es el kernel?
El kernel es el programa que controla y protege los recursos del sistema. Corre en modo privilegiado. Opera en forma directa con el hardware. Las principales funciones del kernel son: Creacin y eliminacin de procesos/threads Administracin de la CPU (scheduling) Administracin de la memoria Administracin de los dispositivos Provee herramientas de sincronizacin y comunicacin para procesos. Si el kernel tiene un error, la maquina sufrir una cada. Un programa de usuario nicamente crear un core dump y finalizar. El comando crash es utilizado para depurar dichos errores del kernel.

3.4.3 Examinando un dump del sistema


El comando crash necesita un archivo /unix para corresponder con el archivo de dump a analizar. Por ejemplo:
itsosrv1:/dumptest> crash dumpfile unix >

Si no se especifica un archivo de kernel, el archivo por defecto es /unix.


itsosrv1:/dumptest> crash dumpfile Using /unix as the default namelist file. >

El comando crash utiliza el archivo del kernel para interpretar smbolos y permite la traduccin de esos smbolos y su presentacin. Si el archivo del kernel no corresponde con el dump, se obtiene un mensaje de error cuando se corre el crash.

3.4.4 Subcomandos bsicos del crash


Una vez que se corre el comando crash, el prompt es un signo mayor (>). Para obtener una lista de los subcomandos disponibles escriba el signo ?. Para salir, tipee q. Se puede ejecutar cualquier comando shell precedindolo con el signo de exclamacin (!). Es recomendable consultar la documentacin de AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts para ms informacin sobre el comando crash y todos sus subcomandos. stat Pgina 45 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Muestra estadsticas del dump. proc [-] [-r] [TablaDeProcesos] Muestra la tabla de procesos (proc.h). Alias p y ps. user [TablaDeProcesos] Muestra la estructura de usuario de los procesos nombrados (user.h). Alias u. thread [-] [-r] [-p] [TablaDeThread] Muestra la tabla de thread (thread.h). mst [direccin] Muestra la parte mstsave de la estructura uthread (uthread.h, mstsave.h). ds [direccin] Encuentra los smbolos de datos ms cercanos a direccin dada. knlist [smbolo] Muestra las direcciones de los smbolos dados. Opuesto a ds. trace [-k][-m][-r][TablaDeThread] Muestra la stack trace del kernel. Alias t. le Muestra entradas del loader. nm [smbolo] Muestra valor y tipo de los smbolos como se encuentran en el archivo /unix. od [nombre de smbolo o direccin] [nmero] [formato] Muestra un nmero determinado de palabras de datos del dump, en un nombre de smbolo o direccin, en el formato especificado. ? o help[] Lista todos los subcomandos. Provee informacin sobre los subcomandos del crash. cm [thread slot][seg_nmero] Cambia el mapa de los punteros internos del comando crash para cualquier segmento de thread de un proceso no paginado. Inicializa el mapa de punteros internos si no se utiliza ningn parmetro. fs [thread NmeroDeSlot] Vuelca los stack frames del kernel para un thread especfico. dlock [tid] | -p [processor_num] Muestra informacin de deadlock sobre todos los tipos de locks: simple, complex, y lockl. errpt [nmero] Muestra mensajes del log de errores. El subcomando errpt siempre muestra todos los mensajes que an no fueron ledos por el errdemon. Nmero especifica la cantidad de mensajes a mostrar. du Pgina 46 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Vuelca el rea de usuario de un proceso. ppd Muestra el rea de datos por procesador, muy til en sistemas de multiprocesador. Muestra toda la informacin que cambia segn cada procesador, como la Current Save Area (CSA).

3.4.4.1 El subcomando stat El subcomando stat entrega mucha informacin til sobre un dump, como el cdigo de dump (dump code), el mensaje de pnico (panic), la fecha y hora de la cada, versin y release del sistema operativo, nombre de la mquina que sufri la cada, y cunto tiempo estuvo funcionando la mquina desde el anterior crash o reinicio del sistema (age of system). Por ejemplo:
> stat sysname: AIX nodename: kmdvs release: 3 version: 4 machine: 000939434C00 time of crash: Mon May 3 17:49:46 KORST 1999 age of system: 2 day, 4 hr., 28 min. xmalloc debug: disabled dump code: 700 csa: 0x384eb0 exception struct: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 panic: HACMP for AIX dms timeout - ha

El subcomando stat siempre debe ser el primer subcomando que se ejecuta cuando se examina un dump de sistema.

3.4.4.2 El subcomando trace m El subcomando trace -m entrega un stack traceback del kernel. Este es tpicamente el segundo subcomando que se utiliza cuando se examina un dump. Este subcomando muestra informacin sobre qu estaba pasando en el kernel cuando ocurri la cada. El subcomando trace -m entrega una historial de function calls y muestra qu proceso de interrupcin estaba en funcionamiento en el sistema. Si la cada ocurri cuando el proceso de interrupcin se estaba realizando, este es el subcomando a utilizar. Este comando rastrea la lista enlazada de reas mstsave. Las reas mstsave contienen bsicamente un historial de los procesos de interrupcin que se estaban ejecutando en el sistema.

Pgina 47 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

La machine state save area, o MST, contiene una imagen del contexto de procesos de la mquina. El contexto de procesos incluye los registros de punto flotante y de propsito general, los registros de propsito especial, y otra informacin necesaria para re-arrancar un thread cuando es despachado. Por ejemplo:
> trace -m Skipping first MST MST STACK TRACE: 0x002baeb0 (excpt=00000000:00000000:00000000:00000000:00000000) (intpri=3) IAR: .[atmle_dd:atmle_ready_ind]+d8 (01b05cb0): tweqi r5,0x0 LR: .[atmle_dd:atmle_ready_ind]+34 (01b05c0c) 002ba940: .[atmle_dd:atmle_receive_ether_data]+1ec (01b0c35c) 002ba9a0: .[atm_demux:atm_dmx_receive]+204 (01adc0e8) 002baa00: .[atmdd:atm_deqhandler]+1254 (01ac7e6c) 002babc0: .[atmdd:atm_HandleCardRsp]+1a4 (01aba084) 002baca0: .[atmdd:atm_handler]+48 (01aba350) 002bad40: .[atmdd:atm_intr]+ac (01ac4a04) 002bad90: .i_poll_soft+9c (0001ef84) 002badf0: .i_softmod+c8 (0001e964) 002bae70: flih_603_patch+c0 (0000bb9c) 0x2ff3b400 (excpt=00000000:00000000:00000000:00000000:00000000)(intpri=11) IAR: .waitproc+c0 (0000edb0): lwz r3,0x6c(r28) LR: .waitproc+d4 (0000edc4) 2ff3b388: .procentry+14 (00045414) 2ff3b3c8: .low+0 (00000000)

En este ejemplo, hay dos niveles de stack traceback. El primer nivel muestra la Instruction Address Register (IAR), apuntando a una instruccin trap, tweqi r5, 0x0. IAR - Instruction Address Register. Contiene una direccin que provoc la cada. LR - Link Register que llam a la funcin fatal o donde retorn el ltimo llamado.

Pgina 48 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Esta instruccin trap es lo que se ve cuando se tiene una cada del tipo Program Interrupt, o Dump Status = 700. Probablemente es el resultado de un assert o panic. Tambin podemos ver que la prioridad de interrupcin es 3 (intpri=3). En este caso, podemos ver que ocurra un procesamiento de interrupcin cuando ocurri la cada, ya que la prioridad de la interrupcin era menor a 11 o 0xB. La prioridad de interrupcin bsica es indicada por 0xB u 11. Este es el nivel en el que corre un proceso normal. Cuando se observa un stack traceback, se debe tener en cuenta que la primera lnea de la stack es la funcin en ejecucin mas reciente, la cual fue llamada por la funcin inmediatamente inferior, la cual fue llamada por la funcin siguiente, y as en adelante. Entonces, en el caso de la stack traceback en nuestro ejemplo, vemos que i_softmod llam a i_poll_soft, la que llam a algunas funciones en los mdulos atmdd y atm_demux, las que llamaron a atmle_receive_ether_data, que a su vez llamaron a atmle_ready_ind, y un assert fue provocado en atmle_ready_ind. Se deber revisar el cdigo para tratar de encontrar las causas de este assert. De cualquier forma, se puede asegurar que el mdulo atmle_dd hizo algo mal. Es conveniente asegurarse que el mdulo que fall est al ltimo nivel. Los problemas son frecuentemente resueltos en versiones posteriores. Se puede utilizar el subcomando le en el crash y el comando lslpp -w para encontrar el fileset que contiene el mdulo especificado. Se puede obtener la ltima informacin de filesets en Internet en la siguiente direccin:
http://service.software.ibm.com/support/rs6000

Utilice el subcomando le con la direccin listada en el IAR de el rea MST. La direccin es mostrada entre corchetes despus del nombre del mdulo. Por ejemplo:
> le 01b05cb0 LoadList entry at 0x04db7780 Module start:0x00000000_01b016e0 Module filesize:0x00000000_00030fbc Module *end:0x00000000_01b3269c *data:0x00000000_0125ef40 data length:0x00000000_0000375c Use-count:0x000c load_count:0x0001 *file:0x00000000 flags:0x00000272 TEXT KERNELEX DATAINTEXT DATA DATAEXISTS *exp:0x04e0e000 *lex:0x00000000 *deferred:0x00000000 *expsize:0x69626f64 Name: /usr/lib/drivers/atmle_dd ndepend:0x0001 maxdepend:0x0001 *depend[00]:0x04db7580 le_next: 04db7380

Uno de los campos listados por el subcomando le es Name (nombre) del mdulo. Luego se puede usar el comando lslpp -w para determinar el fileset que contiene el mdulo. Por ejemplo:
itsosrv1:/> lslpp -w /usr/lib/drivers/atmle_dd File Fileset Type ------------------------------------------------------------------------------/usr/lib/drivers/atmle_dd bos.atm.atmle File

Este comando est disponible en AIX Versin 4.2 o superior. Revisando la lnea:
002ba940: .[atmle_dd:atmle_receive_ether_data]+1ec (01b0c35c)

Se puede ver en la primer columna la direccin de la entrada en la stack (no es importante en realidad). La ltima columna contiene la direccin retornada del cdigo (01b0c35c). Esta direccin corresponde a la funcin mostrada, atmle_receive_ether_data, la cual est contenida en el mdulo atmle_dd. Los corchetes que rodean al par [mdulo:funcin] indican que esta es una extensin del kernel. Adems, la instruccin en esta direccin retornada esta en la posicin 1ec desde el comienzo del mdulo atmle_dd.

Pgina 49 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El ultimo de los stack tracebacks indica el nivel del proceso de usuario (intpri=b) y el proceso corriendo es wait. Si se corre el subcomando user, se podr observar que el proceso corriendo es wait. Sin embargo, wait no caus el problema aqu, el problema fue causado por un programa corriendo a nivel interrupcin, y observar el stack traceback del MST es la nica manera de ver realmente el problema. Cuando ocurre una Data Storage Interrupt (DSI) con cdigo de dump 300, la estructura de excepcin es rellenada de la siguiente manera:
0x2ff3b400 (excpt=DAR:DSISR:SRV:DAR2:DSIRR) (intpri=?)

La estructura de excepcin muestra varios registros de la mquina y el nivel de interrupcin. Los registros mostrados en una estructura de excepcin son definidos como sigue: DAR Data Address Register DSISR Data Storage Interrupt Status Register SRV Segment Register Value DAR2 Secondary Data Address Register DSIRR Data Storage Interrupt Reason Register La prioridad de interrupcin del contexto en ejecucin se puede ver en el campo (intpri=?) al final de la lnea. El valor intpri est comprendido entre 0xb (INTBASE) y 0x0 (INTMAX). La estructura de excepcin no es usada para dumps con cdigo 700.

3.4.4.3 El subcomando proc El subcomando proc muestra entradas en la tabla de procesos. La tabla de procesos esta constituida por entradas del tipo struct proc, una por proceso activo. Las entradas en la tabla de procesos son puestas de manera tal que estn siempre residentes en la memoria fsica. La tabla de procesos contiene informacin necesaria para que, cuando el proceso se intercambia, ms tarde se pueda correr a partir de determinado punto. Por ejemplo:
> proc - 0 SLT ST 0 a PID PPID PGRP UID EUID TCNT NAME 0 0 0 0 0 1 swapper FLAGS: swapped_in no_swap fixed_pri kproc

Links: *child:0xe3000170 *siblings:0x00000000 *uidl:0xe3001fa0 *ganchor:0x00000000 *pgrpl:0x00000000 *ttyl:0x00000000 Dispatch Fields: pevent:0x00000000 *synch:0xffffffff lock:0x00000000 lock_d:0x01390000 Thread Fields: *threadlist:0xe6000000 threadcount:1 active:1 suspended:0 local:0 terminating:0 Scheduler Fields: fixed pri: 16 repage:0x00000000 scount:0 sched_pri:0 *sched_next:0x00000000 *sched_back:0x00000000 cpticks:0 msgcnt:0 majfltsec:0 Misc: adspace:0x0001e00f kstackseg:0x00000000 xstat:0x0000 *p_ipc:0x00000000 *p_dblist:0x00000000 *p_dbnext:0x00000000 Signal Information: pending:hi 0x00000000,lo 0x00000000 sigcatch:hi 0x00000000,lo 0x00000000 sigignore:hi 0xffffffff,lo 0xfff7ffff Statistics: size:0x00000000(pages) audit:0x00000000 accounting page frames:0 page space blocks:0 pctcpu:0 minflt:1802 majflt:7

Los campos en las primeras lneas de la salida son los siguientes: Pgina 50 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

SLT

Este es el nmero de slot del proceso, y simplemente indica la posicin en la tabla de procesos. Este nmero se utiliza para decirle al comando crash especficamente que proceso block o u-block debe mostrar. Los nmeros de slot estn en notacin decimal. Este campo es de slo un carcter, indica el estado del proceso, y puede ser a=activo, i=idle, t=detenido, o z=zombie. Este es el ID del proceso actual con el que el proceso es conocido por el sistema. El numero de slot del proceso es usado para generar el ID del proceso. ID del proceso padre.

ST

PID

PPID

PGRP ID del grupo del proceso UID EUID ID del usuario. ID efectivo del usuario.

TCNT Numeracin de thread. NAME Nombre del programa. FLAGS Flags de estado.

3.4.4.4 El subcomando thread La tabla de thread contiene informacin para threads que puede ser usada por otros threads en proceso. Hay una estructura asignada por thread activo. Las entradas que estn en uso son puestas de manera que se eviten fallas de pgina en secciones crticas del kernel. Por ejemplo:
> thread - 0 SLT ST TID PID CPUID POLICY 0 s 3 0 unbound FIFO t_flags: wakeonsig kthread Links: PRI 10 CPU 78 EVENT PROCNAME swapper

*procp:0xe3000000 *uthreadp:0x2ff3b400 *userp:0x2ff3b6e0 *prevthread:0xe6000000 *nextthread:0xe6000000, *stackp:0x00000000 *wchan1(real):0x00000000 *wchan2(VMM):0x00000000 *swchan:0x00000000 wchan1sid:0x00000000 wchan1offset:0x00000000 pevent:0x00000000 wevent:0x00000001 *slist:0x00000000 Dispatch Fields: *prior:0xe6000000 *next:0xe6000000 polevel:0x0000000a ticks:0x0139 *synch:0xffffffff result:0x00000000 *eventlst:0x00000000 *wchan(hashed):0x00000000 suspend:0x0001 thread waiting for: event(s) Scheduler Fields: cpuid:0xffffffff scpuid:0xffffffff pri: 16 policy:FIFO affinity:0x0003 cpu:0x0078 lpri: 0 wpri:127 time:0x00 sav_pri:0x10 Misc: lockcount:0x00000000 ulock:0x00000000 *graphics:0x00000000 dispct:0x000000e4 fpuct:0x00000001 boosted:0x0000 userdata:0x00000000 Signal Information: cursig:0x00 *scp:0x00000000 pending:hi 0x00000000,lo 0x00000000 sigmask:hi 0x00000000,lo 0x00000000

Los campos en la salida del subcomando thread son los siguientes:

Pgina 51 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

SLT ST

Nmero de slot. Estado. Puede ser i=idle, r=corriendo, s=durmiendo, w=cambiado, t=detenido, o z=zombie. ID del trhead. ID de los procesos asociados. Debe haber mltiples threads por proceso, pero slo un proceso por thread. ID de la CPU que esta corriendo el thread. En un sistema de uniprocesamiento siempre deber ser 0. Esta es la poltica de scheduling utilizada por el thread y puede tener los valores FIFO, RR, u otros. Prioridad de dispatch. Este no es el valor del nice. Utilizacin de CPU. Este valor es utilizado en el scheduling. El nombre del proceso para este thread. Este es el canal de espera si no es cero. Flags de estado.

TID PID

CPUID

POLICY

PRI CPU PROCNAME EVENTS FLAGS

3.4.4.5 El subcomando od Se pueden ver y examinar reas de memoria del dump utilizando el subcomando od. La sintaxis del subcomando es la siguiente:
od [nombre del smbolo] [nmero] [formato]

Los formatos son ascii, octal, decimal, hex, byte, character, instruction, long octal, y long decimal. Por ejemplo:
> od vmker 15 000bde48: 00002001 000bde58: 00200000 000bde68: 00080000 000bde78: 00000ab2 > od 0xbde48 15 a 000bde48: 00002001 000bde58: 00200000 000bde68: 00080000 000bde78: 00000ab2 00006003 00000012 00000017 00020000 00006003 00000012 00000017 00020000 00000000 00008004 0000000d 00000200 00078c93 00066320 00002870 00000000 00008004 |.. ...`.........| 0000000d 00000200 |. ..............| 00078c93 00066320 |..............c | 00002870 |..........(p|

3.4.4.6 Revisando el log de errores Se pueden examinar las ltimas entradas del log de errores en el dump utilizando el subcomando errpt. Por ejemplo:
> errpt ERRORS NOT READ BY ERRDEMON (MOST RECENT LAST): Sun Apr 6 01:01:11 1997 : DSI_PROC data storage interrupt : processor

Pgina 52 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Resource Name: SYSVMM 42000000 007fffff 80000000 fffffffa >

3.4.4.7 El subcomando le El subcomando le puede indicar a cual extensin del kernel pertenece una direccin. Tomando, por ejemplo, la direccin 0x0123cc5c. Esta es una direccin del kernel, dado que comienza en 0x01, lo que indica que est en el segmento 0, el segmento del kernel. Para encontrar el mdulo del kernel que contiene el cdigo en esta direccin, utilice el subcomando le. Por ejemplo:
> le 0123cc5c LoadList entry at 0x04db7780 Module start:0x00000000_012316e0 Module filesize:0x00000000_00030fbc Module *end:0x00000000_0126269c *data:0x00000000_0125ef40 data length:0x00000000_0000375c Use-count:0x000c load_count:0x0001 *file:0x00000000 flags:0x00000272 TEXT KERNELEX DATAINTEXT DATA DATAEXISTS *exp:0x04e0e000 *lex:0x00000000 *deferred:0x00000000 *expsize:0x69626f64 Name: /usr/lib/drivers/pse/pse ndepend:0x0001 maxdepend:0x0001 *depend[00]:0x04db7580 le_next: 04db7380

En este caso, podemos ver que el cdigo en la direccin 0x0123cc5c est en el mdulo /usr/lib/drivers/pse/pse. El subcomando le es til nicamente para mdulos que ya se encuentran cargados en el kernel.

3.4.4.8 El log de errores del VMM Cuando el cdigo de estado del dump indica un DSI o un ISI, es necesario ver el log de errores del VMM. Esto se puede hacer con el subcomando od mirando la estructura vmmerrlog. Por ejemplo:
> od vmmerrlog 9 a 000c95b0: 9d035e4d 53595356 4d4d2000 00000000 |..^MSYSVMM .....| 000c95c0: 00000000 0a000000 00000000 0000000b |................| 000c95d0: 00000086 |....|

Pgina 53 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Offset 0x14 0x1C 0x20

Significa Data Storage Interrupt Status Register (DSISR) Direccin que falla Cdigo de retorno del VMM

En este ejemplo, el cdigo de retorno 0x86 del VMM significa PROTECTION EXCEPTION. Estos son los distintos cdigos de retorno del VMM, nombres simblicos, y significados: 0000000E Este cdigo de retorno indica un EFAULT. Esto viene de errno.h (14) y es retornado si se intenta acceder a una direccin invlida Este cdigo de retorno indica que se intent acceder a una pgina invlida que no est en memoria. Comnmente esto es el resultado de un page fault. Esto ser retornado si se intenta acceder a algo que est paginado mientras las interrupciones estn desactivadas. Este cdigo indica un problema de hardware. Un error de I/O ocurre cuando se intenta paginar o se intenta acceder a un archivo mapeado en memoria y la accin no se puede realizar. Se debe revisar el log de errores y buscar problemas de disco o errores SCSI. Este cdigo de error indica una protection exception. Esto significa que se intento almacenar en una ubicacin que est protegida. Esto es causado normalmente por memoria del low kernel. Este cdigo de retorno indica que no hay espacio de paginado. Esto significa que el espacio de paginado est exhausto.

FFFFFFFA

00000005

00000086

0000001C

3.4.5 Manejando la salida del crash


Algunos subcomandos del crash generan algunas lneas ms de las que pueden caber en la pantalla. Adems, el crash no detiene la salida cada vez que se llena la pantalla. Por lo tanto, es necesario contar con un mtodo para manejar el flujo de salida. En el pasado, los comandos script o tee se utilizaban para ello. Por ejemplo:
tee -a outf | crash /tmp/dump /unix | tee -a outf

Ahora existe un nuevo mtodo para obtener un archivo de log, utilizando el subcomando set
logfile. Por ejemplo: >set logfile crash.log

Una vez que es ingresado, el crash comienza a guardar todas las entradas y salidas en el archivo especificado. El subcomando set logfile es disponible en AIX 4.1.5, 4.2.1, 4.3, y superiores. Adems de la utilidad logfile, es posible la concatenacin de comandos dentro del crash, esto es muy til cuando se desea enviar la salida a comandos como more, pg, y grep. Por ejemplo:
> le 0123cc5c | grep Name Name: /usr/lib/drivers/pse/pse

Pgina 54 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

3.4.6 Tipo de cadas


Estos son problemas muy comunes que provocan una cada del sistema y que requieren un posterior anlisis de dump:

3.4.6.1 Kernel panic o trap Esta es normalmente la causa de una cada del sistema con la secuencia de LED 888-102-7000cx. En AIX, los kernel panics se muestran a s mismos como traps. La rutina panic() en el kernel coloca su mensaje en un buffer, lo escribe en la tty de depuracin utilizando el programa de depuracin del kernel, y llama a brkpoint(). Si el depurador del kernel est cargado, y una terminal ASCII se encuentra conectada en el puerto serie, esto arranca el depurador; si no es as, esto provoca un dump. Si ocurre un panic o assert, se debe examinar el cdigo fuente para entender la condicin que caus ese panic o assert.

3.4.6.2 Addressing exception o data storage interrupt Este tipo de cada es acompaada por la secuencia de LED 888-102-300-0cx. El 300 en la secuencia de LED indica una addressing exception (una Data Storage Interrupt o DSI). Normalmente, esto es provocado por el acceso a una direccin equivocada, o una falla al paginar cuando las interrupciones estn desactivadas. Cuando se tiene este tipo de cadas, se debe revisar el cdigo de retorno del VMM.

3.4.6.3 Bloqueo del sistema (System hang) Cuando el sistema se bloquea, se puede forzar un dump para determinar la causa. Un bloqueo del sistema es un congelamiento total del sistema. Para ver que es lo que mantiene al sistema bloqueado se puede forzar un dump, poniendo la llave en la posicin de servicio y presionando el botn de reset.

3.4.7 Informacin requerida por el centro de soporte


En cualquier tipo de cada (Trap o DSI), la siguiente informacin es solicitada por el centro de soporte para realizar la determinacin del problema. Lo ideal, la salida del comando snap recolectado de la siguiente manera:
/usr/bin/snap -a -o /dev/rmt#

Esto recolecta el dump del sistema, el /unix, y otra informacin necesaria y la graba en una cinta. Si ocurre que el dump no puede ser enviado, la siguiente informacin es la mnima necesaria para que el centro de soporte analice el problema: Un stack trace del kernel obtenido utilizando el subcomando del crash trace m. Por ejemplo:
# crash <dump> <unix> > trace -m

Esto generalmente es suficiente, a menos que el crash ocurra en una extensin del kernel o en un controlador de dispositivos (driver). Pgina 55 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El log de errores del dump obtenido utilizando el subcomando del crash errpt. Por ejemplo:
> errpt

Un stack dump completo obtenido por medio del subcomando del crash fs. Por ejemplo:
> fs

Si este subcomando devuelve Frame pointer not valid, esta salida no ser til.

3.5 Observacin y anlisis de algunos ejemplos


En esta seccin se observan algunos ejemplos de dumps y el anlisis por medio de algunos subcomandos del crash.

3.5.1 Ejemplo 1
El siguiente es un anlisis realizado a un servidor RS/6000 F50, con AIX 4.3.2. Este servidor cumple la funcin de firewall. Intermitentemente, el servidor sufra un crash y se reiniciaba. Siempre es conveniente comenzar el anlisis conociendo un poco sobre el servidor. La siguiente es la salida del comando stat:
> stat sysname: AIX nodename: deadbeef release: 3 version: 4 machine: 000315684C00 time of crash: Mon Apr 24 00:01:19 CUT 2000 age of system: 84 day, 19 hr., 36 min. xmalloc debug: disabled abend code: 300 csa: 0x2ff3b400 exception struct: dar: 0x00000000 dsisr: 0x00000000: srv: 0x00000000 dar2: 0x00000000 dsirr: 0x00000000: (errno) "Error 0"

Es un AIX 4.3, como se esperaba. Tenemos tambin la fecha y hora del crash, que puede ser verificada con otros mecanismos, como el log de errores. Ejecutando el subcomando sysconfig podremos conocer un poco ms sobre el servidor:
> sysconfig SYSTEM CONFIGURATION architecture: POWER_PC width: cache_attrib: icache_size: icache_asc: implementation: 604 ncpus: cach_cong: dcache_size: dcache_asc: version: 604

0x00000020 0x00000001 0x00008000 0x00000004

0x00000002 0x00000000 0x00008000 0x00000004

Pgina 56 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

icache_block: icache_line: L2_cache_size: itlb_size: itlb_asc: tlb_attrib: priv_lck_cnt: rtc_type: model_arch: Xint:

0x00000020 0x00000020 0x00040000 0x00000080 0x00000002 0x00000001 0x00000000 0x00000002 0x00000003 0x00077359

dcache_block: dcache_line: L2_cache_asc: dtlb_size: dtlb_asc: resv_size: prob_lck_cnt: virt_alias: model_impl: Xfrac:

0x00000020 0x00000020 0x00000001 0x00000080 0x00000002 0x00000020 0x00000000 0x00000000 0x00000006 0x00004F28

Ahora tenemos la plataforma de hardware. El anlisis comienza ahora, cuando se estudia el snack trace. Este muestra los ltimos llamados ejecutados por el kernel justo antes del panic. Se utilizar la opcin -k para este paso.
> trace -k STACK TRACE: 0x2ff3b400 (excpt=00000000:0a000000:00000000:00000000:00000106) (intpri=11) IAR: .simple_lock+18 (00009518): stwcx. r6,r0,r3 LR: .fselpoll_cleanup+cc (0008c104) 2ff3b260: .select+988 (00198a4c) 2ff3b3c0: .sys_call_ret+0 (00003a10) IAR not in kernel segment.

El kernel estaba en un llamado select cuando las cosas comenzaron a funcionar mal. Esto indica que el proceso (todava se debe determinar) estaba buscando en un descriptor del socket. Esto parece relacionarse con temas de red. Ahora debemos determinar qu procesos se estaban ejecutando en el momento del crash. Para esto se puede utilizar el comando status:
> status CPU TID 0 104d 1 1945 TSLOT 16 25 PID d46 1740 PSLOT 13 23 STOPPED yes yes PROC_NAME errdemon inetd

De esta forma comprobamos que el problema est relacionado con la red, ya que uno de los procesos que se estaba ejecutando era el inetd. Esto concuerda con el llamado a un select() que inform el subcomando trace. Ahora debemos asegurarnos que vamos a rastrear el CPU 1. Para determinar (y fijar si es necesario) cul CPU se est investigando, se debe utilizar el subcomando cpu:
> cpu Selected cpu number : 1

Ahora, debemos revisar las estructuras proc y u_ del proceso inetd. Comenzando con la estructura proc, debemos referenciar los procs en el kernel utilizando el SLOT del proceso, que se obtuvo con el subcomando status (PSLOT):
> p -e 23 SLT ST PID PPID PGRP UID EUID TCNT 23 a 1740 c4e 1740 0 0 1 FLAGS: swapped_in orphanpgrp execed NAME inetd

Links: *child:0x00000000 *siblings:0xe3002100 *uidl:0xe3002100 *ganchor:0xe3002280 *pgrpl:0x00000000 *ttyl:0x00000000 Dispatch Fields: pevent:0x00000000 *synch:0xffffffff lock:0x00000000 lock_d:0x00000000 Thread Fields: *threadlist:0xe6001900 threadcount:1

Pgina 57 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

active:1 suspended:0 local:0 terminating:0 Scheduler Fields: nice: 20 repage:0x00000000 scount:0 sched_pri:0 *sched_next:0x00000000 *sched_back:0x00000000 cpticks:0 msgcnt:0 majfltsec:15 Misc: adspace:0x000071e7 kstackseg:0x00000000 xstat:0x0000 *p_ipc:0x00000000 *p_dblist:0x00000000 *p_dbnext:0x00000000 Signal Information: pending:hi 0x00000000,lo 0x00000000 sigcatch:hi 0x00000000,lo 0x00082001 sigignore:hi 0x7fffffff,lo 0xfff29efe Statistics: size:0x00000000(pages) audit:0x00000038 accounting page frames:37 page space blocks:0 pctcpu:10 minflt:1509 majflt:15

La estructura normal parece normal. Ahora revisaremos el rea u_ por medio del subcomando u. Se debe tener en cuenta que en el kernel, todo se maneja por SLOT de proceso, y no por ID de proceso. La salida es tan abundante como informativa:
> u 23 UTHREAD AREA FOR SLOT 23 (fw)

SAVED MACHINE STATE curid:0x00001428 m/q:0x00000000 iar:0x000357c8 cr:0x20442822 msr:0x00001030 lr:0x000357c8 xer:0x00000000 kjmpbuf:0x00000000 backtrack:0x00 tid:0x00000000 fpeu:0x01 excp_type:0x00000000 ctr:0x00000000 *prevmst:0x00000000 *stackfix:0x2ff3b1b0 intpri:0x00 o_iar:0x00000000 o_toc:0x00000000 o_arg1:0x00000000 excbranch:0x00000000 o_vaddr:0x00000000 msr flags: ME IR DR cr flags: | = | | > | > | = |< | = | = | Exception Struct 0x103c8cf8 0x4000d030 0x6000d12d 0x103c8cf8 0x00000107 MST Segment Regs 0:0x00000000 1:0x0000d00d 2:0x0000c16c 3:0x007fffff 4:0x007fffff 5:0x0000e00e 6:0x007fffff 7:0x0000b00b 8:0x00017017 9:0x00018018 10:0x00019019 11:0x007fffff 12:0x007fffff 13:0x60015015 14:0x00004004 15:0x007fffff alloc flags: 0xe5ef0000 (Seg Regs: 0, 1, 2, 5, 7, 8, 9, 10, 12, 13, 14, 15) General Purpose Regs 0:0x00000000 1:0x2ff3b1b0 4:0x00000002 5:0x2ff3b400 8:0x00000000 9:0x00000000 12:0x00001030 13:0x00000001 16:0x00000000 17:0x00000000 20:0x00000001 21:0x11000001 24:0x00000000 25:0x00000004 28:0x2a222824 29:0xe3001e00

2:0x00209df0 6:0x00000000 10:0x2ff3b220 14:0x00000008 18:0x42228820 22:0x00000003 26:0x00000000 30:0xe6001700

3:0x00000000 7:0x00000000 11:0x00000000 15:0x00000003 19:0x20000000 23:0x00000001 27:0xe600179c 31:0x00000010

Kernel stack address: 0x2ff3b400 SYSTEM CALL STATE error code:0x00

*kjmpbuf:0x00000000

PER-THREAD TIMER MANAGEMENT Real/Alarm Timer (ut_timer[TIMERID_ALRM]) = 0x0 Virtual Timer (ut_timer[TIMERID_VIRTUAL]) = 0x0 Prof Timer (ut_timer[TIMERID_PROF]) = 0x0 Posix Timer (ut_timer[POSIX0]) = 0x0

Pgina 58 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Posix Posix Posix Posix

Timer Timer Timer Timer

(ut_timer[POSIX1]) (ut_timer[POSIX2]) (ut_timer[POSIX3]) (ut_timer[POSIX4])

= = = =

0x0 0x0 0x0 0x0

SIGNAL MANAGEMENT *sigsp:0x0 oldmask:hi 0x0,lo 0x80000

code:0x0

MISCELLANOUS FIELDS: fstid:0x00000000 ioctlrv:0x00000000 selchn:0x00000000 link:0x00000000 loginfo:0x00000000 fselchn:0x500042a0 selbuc:0x00000000 sigssz:0x00000000 User msr:0x0000d030 *context:0x00000000 **errnopp:0x20232a1c *stkb:0x00000000 *audsvc:0x00000000 scsave[0]:0x2ff22c24 scsave[1]:0x2ff22a18 scsave[2]:0x2022a7c4 scsave[3]:0xf012fb88 scsave[4]:0x2ff229f8 scsave[5]:0x00000002 scsave[6]:0x20041270 scsave[7]:0x200419c8

USER AREA OF ASSOCIATED PROCESS fw (SLOT 20, PROCTAB 0xe3001e00) handy_lock:0x00000000 timer_lock:0x00000000 map:0x00000000 *semundo:0x00000000 *pinu_block:0x00000000 compatibility:0x00000000 lock:0x00000000 ulocks:0xffffffff *message:0x00000000 irss:0x0000000019b65bb8 lock_word:0xffffffff *vmm_lock_wait:0x00000000 vmmflags:0x00000000 SIGNAL MANAGEMENT Signals to be blocked (sig#:hi/lo mask,flags,&func) 1:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 2:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 3:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 4:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 5:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 6:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 7:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 8:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 9:hi 0x00000000,lo 0x00000000,0x00000048,0x00000000 10:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 11:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 12:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 13:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 14:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 15:hi 0x00000000,lo 0x00000000,0x00000008,0x20051fe0 16:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 17:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 18:hi 0x00000000,lo 0x00000000,0x00000000,0x00000001 19:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 20:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 21:hi 0x00000000,lo 0x00000000,0x00000000,0x00000001 22:hi 0x00000000,lo 0x00000000,0x00000000,0x00000001 23:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 24:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 25:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 26:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 27:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 28:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 29:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 30:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 31:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 32:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 33:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000 34:hi 0x00000000,lo 0x00000000,0x00000000,0x00000000

Pgina 59 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

35:hi 36:hi 37:hi 38:hi 39:hi 40:hi 41:hi 42:hi 43:hi 44:hi 45:hi 46:hi 47:hi 48:hi 49:hi 50:hi 51:hi 52:hi 53:hi 54:hi 55:hi 56:hi 57:hi 58:hi 59:hi 60:hi 61:hi 62:hi 63:hi

0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo 0x00000000,lo

0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000 0x00000000,0x00000000,0x00000000

USER INFORMATION euid:0x0000 egid:0x0000 ruid:0x0000 rgid:0x0000 luid:0x00000000 suid:0x00000000 ngrps:0x0000 *groups:0x2ff20ab8 compat:0x00000000 ref:0x00000002 pag:0x00000000 cr_lock:0x00000000 acctid:0x00000000 sgid:0x00000000 epriv:0xffffffff ipriv:0xffffffff bpriv:0xffffffff mpriv:0xffffffff u_info: ACCOUNTING DATA start:0x3893bd8e ticks:0x00001d38 acflag:0x0001 pr_base:0x00000000_00000000 pr_size:0x00000000 pr_off:0x00000000_00000000 pr_scale:0x00000000 process times: user:0x000003d5s 0x0c845880us sys:0x00000500s 0x1a39de00us children's times: user:0x00000000s 0x00000000us sys:0x00000000s 0x00000000us CONTROLLING TTY *ttysid:0x00000000 *ttyp(pgrp):0x00000000 ttyd(evice):0x00000000 ttympx:0x00000000 *ttys(tate):0x00000000 tty id: 0x00000000 *query function: 0x00000000 RESOURCE LIMITS AND COUNTERS ior:0x00000000_00000000 iow:0x00000000_00000000 ioch:0x00000000_00000005 text:0x00000000_00472cc0 data:0x00000000_00343000 stk:0x01000000 max data:0x08000000 max stk:0x01000000 max file(blks):0xffffffff *tstart:0x00000000_100001c8 sdsize:0x00000000 *datastart:0x00000000_20000000 *stkstart0x00000000_2ff23000

Pgina 60 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

soft core dump:0x7fffffff hard core dump:0x7fffffff soft rss:0x7fffffff hard rss:0x7fffffff cpu soft:0x7fffffff cpu hard:0x7fffffff hard ulimit:0x7fffffff minflt:0x00000000_00000000 majflt:0x00000000_00000000 AUDITING INFORMATION auditstatus:0x00000000 SEGMENT REGISTER INFORMATION ADSPACE Reg Value Alloc 0 0x60000000 yes 1 0x6000d12d yes 2 0x6000c16c yes 3 0x007fffff 4 0x007fffff 5 0x007fffff 6 0x007fffff 7 0x007fffff 8 0x007fffff 9 0x007fffff 10 0x007fffff 11 0x007fffff 12 0x007fffff 13 0x60015015 yes 14 0x007fffff 15 0x6000e16e yes SEGSTATE # Segs Fno/Shmptr 0x0000 0x00000000 0x0001 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0000 0x00000000 0x0001 0x00000000 0x0000 0x00000000 0x0001 0x00000000

Flags AVAILABLE TEXT AVAILABLE AVAILABLE AVAILABLE AVAILABLE AVAILABLE AVAILABLE AVAILABLE AVAILABLE AVAILABLE AVAILABLE AVAILABLE TEXT AVAILABLE WORKING

FILE SYSTEM STATE *curdir:0x13ef49a0 *rootdir:0x00000000 cmask:0x0002 maxindex:0x0004 fd_lock:0x00000000 fso_lock:0x00000000 lockflag:0x00000000 fdevent:0xffffffff FILE DESCRIPTOR TABLE *ufd: 0x2ff3c1a0 fd 0: fp = 0x10000210 flags = 0x0080 count = 0x0000 fd 1: fp = 0x10000e70 flags = 0x0080 count = 0x0000 fd 2: fp = 0x100005d0 flags = 0x0080 count = 0x0000 fd 3: fp = 0x10001200 flags = 0x0080 count = 0x0001 Rest of user area paged out.

El rea u_ tambin parece estar normal. Sin embargo, a esta altura tenemos dos puntos para continuar la investigacin: 1) El sistema fall durante un llamado a un select(), y 2) el llamado select() fue realizado por el inetd. Por otro lado, sabemos que el inetd es un daemon de red y por lo tanto necesitamos revisar los sockets que estaban conectados al inetd en el momento del crash. Esto se puede realizar con el subcomando crash. Una vez ms, se debe recordar que todo en el kernel es relacionado con SLOT de proceso y no ID de proceso. La salida es bastante voluminosa, pero esclarecedora:
> socket -p23 fd 0: 702d2e00: type:0x0002 (DGRAM) opts:0x0000 () state:0x0080 (PRIV) linger:0x0000 pcb:0x700dc480 proto:0x000dfb30 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:0 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/0 23/13 fd 4: 702fec00: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x702fee44 proto:0x04f33f90 q0:0x00000000 q0len:0

Pgina 61 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/4 fd 5: 702fe800: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x702fea44 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/5 fd 6: 702fe400: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x702fe644 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/6 fd 7: 702fe000: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x702fe244 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/7 fd 8: 702d6c00: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x702d6e44 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/8 fd 10: 7005d800: type:0x0002 (DGRAM) opts:0x0000 () state:0x0082 (ISCONNECTED|PRIV) linger:0x0000 pcb:0x7007e880 proto:0x000dfb30 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:0 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/10 fd 11: 702c6000: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x702c6244 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/11 fd 12: 70328c00: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x70328e44 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/12 fd 13: 702d2e00: type:0x0002 (DGRAM) opts:0x0000 () state:0x0080 (PRIV) linger:0x0000 pcb:0x700dc480 proto:0x000dfb30 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:0 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/0 23/13 fd 14: 70328800: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x70328a44 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/14 fd 15: 70328400: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x70328644 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x7000a000 qlen:1 qlimit:1000 head:0x00000000

Pgina 62 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

timeo:0

error:0

oobmark:0

pgid:0

proc/fd: 23/15

fd 16: 70328000: type:0x0001 (STREAM) opts:0x0006 (ACCEPTCONN|REUSEADDR) state:0x0080 (PRIV) linger:0x0000 pcb:0x70328244 proto:0x04f33f90 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:1000 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/16 fd 17: 702d2c00: type:0x0000 () opts:0x0000 () state:0x0000 () linger:0x0000 pcb:0x00000000 proto:0x00000000 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:0 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 proc/fd: 23/17

El ultimo descriptor de archivos (17) es ciertamente un poco extrao. Mientras todos los dems parecen razonables, el 17 sufre una llamativa escasez de informacin y datos. Ahora debemos observar con detenimiento el socket sospechoso con el subcomando socket:
> socket -b 702d2c00 702d2c00: type:0x0000 () opts:0x0000 () state:0x0000 () linger:0x0000 pcb:0x00000000 proto:0x00000000 q0:0x00000000 q0len:0 q:0x00000000 qlen:0 qlimit:0 head:0x00000000 timeo:0 error:0 oobmark:0 pgid:0 rcv: cc:0 hiwat:0 mbcnt:0 mbmax:0 lowat:0 mb:0x00000000 events:0x0000 iodone:0x00000000 ioargs:0x00000000 flags:0x0000 () timeo:0 lastpkt:0x00000000 snd: cc:0 hiwat:0 mbcnt:0 mbmax:0 lowat:0 mb:0x00000000 events:0x0000 iodone:0x00000000 ioargs:0x00000000 flags:0x0000 () timeo:0 lastpkt:0x00000000

No hay datos. Esto puede no ser bueno. Cada socket, una vez fuera de la cola q, contiene datos como el estado, el program control block (pcb), y otros. Este socket carece de todo eso. Utilizando un subcomando de depuracin de red del crash, el ndb, obtendremos una visin an ms cercana del socket problemtico.
ndb> sockets 702d2c00 ----------------- SOCKET INFO ------------------type:0x0000 (BOGUS) opts:0x0000 () state:0x0000 () linger:0x0000 pcb:0x00000000 proto:0x00000000 q0:0x00000000 q0len: 0 q:0x00000000 qlen: 0 qlimit: 0 head:0x00000000 timeo: 0 error: 0 oobmark: 0 pgid:

snd: cc: 0 hiwat: 0 mbcnt: 0 mbmax: 0 lowat: 0 mb:0x00000000 events:0x 0 iodone:0x00000000 ioargs:0x00000000 flags:0x0000 rcv: cc: 0 hiwat: 0 mbcnt: 0 mbmax: 0 lowat: 0 mb:0x00000000 events:0x 0 iodone:0x00000000 ioargs:0x00000000 flags:0x0000

()

()

El tipo de cdigo (BOGUS) dice todo. El kernel cre un socket bogus y se lo deriv al inetd. Una vez dentro de la llamada select(), el kernel se encontr con el socket problemtico y fall. Una investigacin mas profunda en los logs del sistema mostr que este sistema tena una gran carga de trabajo. Pgina 63 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Pgina 64 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

3.5.2 Ejemplo 2
Comenzando el anlisis:
> stat sysname: AIX nodename: uxtech2 release: 3 version: 4 machine: 0041A83A4C00 time of crash: Thu Jun 13 09:15:59 MSZ 2002 age of system: 19 day, 22 hr., 1 min. xmalloc debug: disabled abend code: 0 csa: 0x0 > status CPU TID TSLOT PID 0 811 8 60c 1 254d 37 2246 > cpu Selected cpu number : 0 > t -mk Skipping first MST

PSLOT 6 34

STOPPED yes yes

PROC_NAME gil squid

MST STACK TRACE: 0xf0000000 (excpt=d1ae3000:40000000:00011011:d1ae3000:00000106) (intpri=3) IAR: .disable_lock+68 (0000906c): lwarx r7,r0,r4 LR: .[netinet:in_pcbnotify]+e8 (051aff38) 2ef62d88: .[netinet:ip_pmtu_stop]+164 (05193cac) 2ef62dd8: .[netinet:ip_pmtu_timeout]+324 (051939e4) 2ef62e28: .rn_walktree+ec (000af4c8) 2ef62e78: .[netinet:arptimer]+148 (0519200c) 2ef62ed8: .Netintr+12c (000c31fc) 2ef62f48: .netisr_thread+18 (000c3094) 2ef62f88: .threadentry+18 (000987d4) 2ef62fc8: .low+0 (00000000) > cpu 1 > t -mk Skipping first MST MST STACK TRACE: 0x2ff3b400 (excpt=40000000:42000000:0001a91f:40000000:00000106) (intpri=3) IAR: .disable_lock+68 (0000906c): lwarx r7,r0,r4 LR: .rtalloc_gr+2c (000c2e24 2ff3b170: .[netinet:in_pcbconnect_nolock]+26c (051b1128) 2ff3b1e0: .[netinet:in_pcbconnect]+44 (051b16c8) 2ff3b230: .[netinet:tcp_usrreq]+4c4 (051cf82c) 2ff3b2a0: .soconnect+228 (000d57dc) 2ff3b300: ._connect+2d0 (000d52c4) 2ff3b370: .connext+80 (000de808) 2ff3b3c0: .sys_call_ret+0 (00003a90) IAR not in kernel segment. > u - 8 --> GPR7: 0000254d > u - 37 --> GPR7: 00000811

Pgina 65 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El trace muestra un deadlock en netinet. Buscando en http:/service.software.ibm.com/rs6k/fixdb.htm se encuentra el APAR IY22668, que resuelve este problema, y se le indica al cliente que instale el siguiente fileset: bos.net.tcp.client.4.3.3.80 El snap muestra que el cliente tena el nivel 4.3.3.75 de este fileset.

3.5.3 Ejemplo 3
Comenzando el anlisis:
> stat sysname: AIX nodename: copper release: 3 version: 4 machine: 00054262A100 time of crash: Wed Jun 27 15:58:48 CDT 2001 age of system: 57 min. xmalloc debug: enabled abend code: 0 csa: 0x0 Debug kernel error message: No debug cause was specified. > status CPU TID TSLOT PID PSLOT STOPPED PROC_NAME 0 205 2 204 2 yes wait 1 307 3 306 3 yes wait 2 409 4 408 4 yes wait 3 50b 5 50a 5 yes wait 4 60d 6 60c 6 yes wait 5 70f 7 70e 7 yes wait 6 811 8 810 8 yes wait 7 5de9 93 26d6 38 yes sysdumpstart > t -m Skipping first MST MST STACK TRACE: > symptom Symptom criteria were not met. > cpu Selected cpu number : 7 > cpu 1 > t -m Skipping first MST MST STACK TRACE: 0x2ff3b400 (excpt=00000000:00000000:00000000:00000000:00000000) (intpri=11) IAR: .waitproc_find_run_queue+b0 (00025488): lha r0,0xc(r4) LR: .waitproc+a0 (00025918) 2ff3b328: .waitproc+a0 (00025918) 2ff3b388: .procentry+14 (00097618) 2ff3b3c8: .low+0 (00000000) all cpu's are the same as this... numpsblks psfreeblks > od thewall = 00080000 = 0007fe32

Pgina 66 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

0026b3f8: 00040000

Observando la salida del comando status, y la stack trace, se puede deducir que este es un dump forzado por medio del comando sysdumpstart. Es til para analizar el estado general del sistema con un fin determinado. No hay necesariamente una falla en este caso.

Pgina 67 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

4. Optimizacin del rendimiento


4.1 Introduccin al monitoreo y optimizacin del rendimiento en AIX
El rendimiento en un sistema computarizado est basado en las expectativas humanas y la capacidad del sistema para cumplir con dichas expectativas. El objetivo en la optimizacin del rendimiento es que concuerden las expectativas y los resultados logrados. Para lograr este objetivo se debe hacer un balance entre razonables expectativas y la optimizacin de los recursos disponibles del sistema. El proceso de optimizacin del rendimiento requiere un alto nivel de conocimientos y experiencia, y no puede ser realizado nicamente analizando estadsticas, grficos y figuras. Las percepciones humanas sobre el rendimiento no se deben dejar de lado si ayudan en la obtencin de resultados. En la optimizacin del rendimiento entrarn en consideracin tanto aspectos de la determinacin de problemas como asuntos puramente de rendimiento. Las expectativas pueden ser clasificadas de la siguiente manera: Expectativas de rendimiento: el rendimiento es una medida que intenta expresar la cantidad de trabajo realizado en un perodo determinado de tiempo. Expectativas sobre el tiempo de respuesta: el tiempo de respuesta es el tiempo transcurrido desde que es realizado un requerimiento hasta que se obtiene la respuesta. El proceso de optimizacin del rendimiento puede ser iniciado por varias razones: Para lograr una optimizacin del rendimiento en un sistema instalado recientemente. Para resolver problemas de rendimiento causados durante la fase de diseo (dimensionamiento). Para resolver problemas de rendimiento que ocurran en la fase productiva. La optimizacin del rendimiento en un sistema instalado recientemente, por lo general implica ajustar algunos parmetros bsicos del sistema operativo y aplicaciones. Las limitaciones originadas en la fase de dimensionamiento limitarn la posibilidad de realizar una optimizacin, o generarn un costo muy alto para poder realizarla. El sistema no cumplir con las expectativas de rendimiento originales tanto por expectativas poco realistas, problemas fsicos en el entorno del ordenador, o error humano al disear o implementar el sistema. En el peor de los casos ser necesario agregar o reemplazar hardware. Por lo tanto, es muy recomendable tener cuidado particularmente cuando se realiza el dimensionamiento de un sistema, permitiendo que tenga suficiente capacidad como para soportar cargas de trabajo inesperadas. En otras palabras, no se debe disear un sistema para que est un cien por cien activo desde el comienzo del proyecto. Cuando un sistema en un entorno productivo cumple con las expectativas de rendimiento para las cuales fue diseado, pero las demandas y necesidades de la organizacin han superado la capacidad bsica del sistema, la optimizacin del rendimiento es realizada con el fin de evitar o retrasar el costo de agregar o reemplazar hardware. Se debe tener en cuenta adems, que muchos asuntos de rendimiento pueden finalmente deberse a determinadas operaciones realizadas por personal con conocimientos y experiencia limitada, que intencionalmente restringen algn recurso lgico o fsico, vital del sistema.

Pgina 68 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

4.1.1 Rendimiento de CPU


Esta seccin es una revisin general sobre las operaciones del kernel y la CPU. Para realizar un monitoreo y optimizacin satisfactorios, se debe entender la forma en que operan los procesos y los threads en un entorno AIX. Los sistemas que presentan problemas de rendimiento, a veces estn saturados no por limitaciones de hardware, sino por la forma en que estn escritas las aplicaciones o la forma en que est configurado el sistema operativo.

4.1.1.1 Procesos y threads En esta seccin veremos las diferencias entre procesos y threads. PROCESOS Un proceso es una actividad en el sistema que fue iniciada con un comando, un shell script u otro proceso. Un thread es un flujo de control independiente que opera dentro del mismo espacio de direcciones que otros flujos de control independientes dentro de un proceso. Un thread del kernel es un flujo de control secuencial.

THREAD

Un thread del kernel pertenece a un proceso. Un proceso puede tener uno o ms threads del kernel. La ventaja de los threads es que se pueden tener mltiples threads corriendo en paralelo en diferentes CPUs en un sistema de multiprocesamiento simtrico (SMP). Mltiples threads de control permiten que una aplicacin atienda los requerimientos de mltiples usuarios al mismo tiempo. Los threads de las aplicaciones pueden ser mapeados a threads del kernel en una relacin 1:1 o n:1.

4.1.1.2 Time slice Las CPUs de un sistema son compartidas por todos los threads otorgndole a cada thread una determinada porcin de tiempo (time slice) para correr. La porcin de tiempo por defecto (1 tick del reloj, es decir 10 ms.) puede ser modificada utilizando el comando schedtune -t. A veces, incrementar el time slice aumenta el rendimiento del sistema al reducir los context switch (cambio de tarea). Los comandos vmstat y sar muestran la cantidad de context switch. Si se observa un valor alto, entonces incrementar el time slice puede mejorar el rendimiento. No obstante, este parmetro debe ser modificado despus de un profundo anlisis.

4.1.1.3 Modo kernel y modo usuario Hay dos modos en los que opera una CPU. Ellos son, modo kernel y modo usuario. En el modo usuario, los programas tienen acceso de lectura y escritura a los datos de usuario en la regin privada del proceso. Tambin pueden leer el texto de usuario y las regiones de texto compartidas, y tienen acceso a las regiones de datos compartidos utilizando funciones de memoria compartida. Los programas tambin tienen acceso a los servicios del kernel a travs de los llamados de sistema (system calls). Entre los programas que operan en modo kernel se incluyen controladores de interrupciones, procesos del kernel y extensiones del kernel. El cdigo que opera en este modo tiene acceso de lectura y escritura al espacio de direcciones globales del kernel y a los datos del kernel en la regin de procesos cuando se ejecuta dentro del contexto de un proceso. Los datos de usuario dentro del espacio de direcciones del proceso deben accederse utilizando servicios del kernel. Cuando un programa de usuarios utiliza llamadas del sistema, lo hace en modo kernel. Es importante conocer Pgina 69 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

el concepto de modo usuario y modo kernel, cuando se interpreta la salida de comandos como vmstat y sar.

4.1.1.4 Rendimiento en SMP En un sistema SMP, todos los procesadores son idnticos y realizan funciones idnticas. Estas funciones son: Cualquier procesador puede correr cualquier thread en el sistema. Esto significa que un proceso o thread listo para ejecutarse puede ser despachado a cualquier procesador, excepto procesos o thread asignados a un procesador especfico utilizando el comando bindprocessor. Cualquier procesador puede controlar una interrupcin externa excepto en niveles de interrupcin asignados a un procesador especfico utilizando el comando bindintcpu. Algunos sistemas SMP utilizan un manejo de interrupciones del tipo first fit (primero que sea apto) con el cual una interrupcin siempre es direccionada a la CPU0. Si hay mltiples interrupciones al mismo tiempo, la segunda interrupcin es dirigida al CPU1, la tercera al CPU2, y as sucesivamente. En este caso, un proceso asignado a la CPU0 por medio del comando bindprocessor puede ser que no obtenga la CPU necesaria para correr con el mejor rendimiento. Todos los procesadores pueden iniciar operaciones de I/O a cualquier dispositivo de I/O.

a. Coherencia de cache (Cache coherency) Todos los procesadores trabajan con los mismos espacios de direcciones virtuales y reales, y comparten la misma memoria real. Sin embargo, cada procesador puede tener su propio cache, en el que guardan una pequea porcin de la memoria del sistema. Para garantizar la coherencia del cache los procesadores utilizan una lgica snooping (espa). Cada vez que es cambiada una palabra en el cache del procesador, este enva un mensaje de alerta a todo el bus. Los procesadores permanentemente estn espiando el bus, y si reciben un mensaje sobre la modificacin de alguna palabra en el cache de otro procesador, verifican si tienen en su propio cache la direccin modificada. Si es as, invalidan ese dato en su cache. Los mensajes de alerta incrementan la carga en el bus, y los datos del cache invalidados aumentan el nmero de prdidas del cache. Ambos tericamente reducen el rendimiento general del sistema, pero el hardware est diseado para minimizar el impacto que provoca el mecanismo de coherencia de cache.

b. Afinidad de procesador (Processor affinity) Si un thread se est ejecutando en una CPU y es interrumpido y nuevamente ejecutado, es asignado nuevamente a la misma CPU (si es posible) porque el cache del procesador puede tener an lneas que pertenecen al thread. Si es asignado a otra CPU, el thread debe tomar nuevamente su informacin de la memoria principal. Alternativamente, puede esperar hasta que la CPU donde se ejecut anteriormente se encuentre nuevamente disponible, lo que provocara un gran retraso. AIX automticamente intenta promover la afinidad de procesador al tener una cola de ejecucin por CPU. La afinidad de procesador puede ser forzada asignando un thread a un procesador con el comando bindprocessor. Un thread que es asignado a un procesador puede ejecutarse nicamente en ese procesador, independientemente del estado de los otros procesadores del sistema. La asignacin de un proceso a una CPU determinada se debe hacer con cuidado, ya que se puede Pgina 70 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

perjudicar el rendimiento de ese proceso si la CPU en la que est asignado es ocupada y hay otras CPU libres en el sistema.

c. Locking El acceso a dispositivos de I/O y a la memoria real es serializado por el hardware. Detrs de los recursos fsicos del sistema, como los dispositivos de I/O y la memoria real, hay recursos lgicos del sistema, como los datos compartidos del kernel, que son utilizados por todos los procesos y threads. Como estos procesos y threads pueden correr en cualquier procesador, es necesario un mtodo para serializar los accesos a estos recursos lgicos del sistema. El mismo se aplica para el cdigo de usuario paralelizado. El mtodo primario para implementar la serializacin del acceso a recursos es el uso de locks (cerraduras). Un proceso o thread tiene que obtener un lock antes de acceder al recurso compartido. Los procesos o threads deben liberar el lock luego de completar el acceso (unlock). Las funciones lock y unlock son utilizadas para obtener y liberar esos locks. Las operaciones lock y unlock son operaciones atmicas, y son implementadas de manera que ninguna interrupcin o thread que se ejecute en otro procesador pueda afectar el resultado de la operacin. Si un lock requerido est en poder de otro thread, el thread que lo requiere debe esperar hasta que el lock se encuentre disponible. El thread puede esperar el lock de dos formas diferentes: Locks girando (Spin locks) Un lock spin es adecuado para mantener un lock durante un perodo muy corto. El thread que espera el lock ingresa en un estrecho lazo (loop) donde repetidamente chequea la disponibilidad del lock. En este perodo, el thread no realiza ningn trabajo til, y el tiempo de procesador utilizado es contabilizado dentro del modo del sistema (kernel). Para prevenir que el thread siga girando indeterminadamente, debe ser convertido en un lock dormido. Un lmite para la cantidad de veces que gira se puede configurar utilizando: El comando schedtune s n, donde n es la cantidad de veces que el lock del kernel debe girar dentro del lazo antes de dormir. El valor por defecto del parmetro n para sistemas multiprocesador es 16384, y 1 (uno) para sistemas uniprocesador. La variable de ambiente SPINLOOPTIME=n El valor n es la cantidad de veces que el lock del usuario debe girar dentro del lazo antes de dormir. Esta variable de ambiente se emplea para los locks provistos por libpthreads.a. La variable de ambiente YIELDLOOPTIME=n Controla la cantidad de veces que se puede entregar el procesador antes de bloquearlo con un lock de usuario. El procesador es entregado a otro thread del kernel, asumiendo que hay otro kernel ejecutable con la suficiente prioridad. Esta variable de ambiente se emplea para los locks provistos por libpthreads.a. Locks dormidos (Sleeping locks) Un lock dormido es adecuado para mantener un lock durante un perodo de tiempo ms largo. Un thread que requiere un lock es dormido si el lock no se encuentra disponible. Cuando el lock est disponible, el thread ser colocado nuevamente en la cola de ejecucin. Hay una carga adicional por context switch y ejecucin de locks dormidos. AIX provee dos tipos de locks, que son: Lock de lectura-escritura

Pgina 71 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Mltiples lecturas de datos estn permitidas, pero el acceso de escritura es exclusivo mutualmente. Los locks de lectura-escritura tienen tres estados: Escritura exclusiva Lectura compartida Desbloqueado Lock de exclusin mutua Slo un thread puede acceder a los datos. Otros thread deben esperar, an si quieren realizar nicamente una lectura de datos. El lock de exclusin mutua (mutex) tiene dos estados: Locked (Bloqueado) Unlocked (Desbloqueado) Ambos tipos de locks pueden ser spin locks o sleeping locks. Los programadores en un entorno de multiprocesamiento necesitan decidir la cantidad de locks para datos compartidos. Si hay un solo lock puede ocurrir contencin de locks (lock contention), que es ni ms ni menos que threads esperando un lock. En este caso, se requieren ms locks. Sin embargo, esto puede ser ms costoso, porque el tiempo de CPU debe ser desperdiciado bloqueando y desbloqueando, y hay un alto riesgo de que ocurra un deadlock (punto muerto). Como los locks son necesarios para serializar el acceso a ciertos datos, el uso excesivo de los mismos datos por muchos threads puede causar graves problemas de rendimiento.

4.1.2 Rendimiento de memoria


En un entorno de multiprocesamiento (multiusuario), el control cuidadoso de los recursos del sistema es indispensable. El manejo descuidado de la memoria del sistema, tanto espacio de paginado como memoria real, puede provocar un mal rendimiento y hasta fallas en los programas y aplicaciones. El sistema operativo AIX utiliza el Virtual Memory Manager (VMM) para controlar la memoria real y el espacio de paginado del sistema.

4.1.2.1 Advertencia inicial Es recomendable no realizar ningn cambio en el VMM hasta tanto no conocer con claridad la carga actual del sistema.

4.1.2.2 Segmentos de memoria Un segmento consiste en 256 MB de espacio de direcciones de memoria virtual contiguas en el cual un objeto puede ser mapeado. Los segmentos de memoria virtual son particionados en tamaos fijos conocidos como pginas. Cada pgina tiene 4096 bytes (4 KB) de tamao. Una pgina en un segmento puede estar en la memoria real o en disco donde es almacenado hasta que se debe utilizar. La memoria real est dividida en marcos de pgina (page frames) de 4096 bytes (4 KB). Simplemente, la funcin del VMM es controlar la asignacin de los frames de la memoria real y resolver las referencias de un programa a las pginas de memoria virtual. Tpicamente, esto ocurre cuando las pginas no estn actualmente en memoria o no existen cuando un proceso realiza la primera referencia a una pgina de su segmento de datos. Pgina 72 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

La cantidad de memoria virtual utilizada puede exceder el tamao de la memoria real de un sistema. La funcin del VMM desde un punto de vista del rendimiento, es: Minimizar el uso del procesador y el disco como resultado del paginado Minimizar la degradacin del tiempo de respuesta de un proceso como resultado del paginado Los segmentos de memoria virtual pueden ser de tres tipos: Segmentos persistentes: Son utilizados para mantener datos de archivos, de file systems locales. Dado que las pginas de un segmento persistente tienen una ubicacin de almacenamiento permanente en disco, el VMM escribe en esa ubicacin cada vez que la pgina es modificada, si es que no puede mantenerse en memoria. Cuando una pgina persistente es abierta para una actualizacin retrasada, los cambios del archivo no son reflejados en el almacenamiento permanente hasta que se realice una operacin con la subrutina fsync. Si no se realiza ninguna operacin con la subrutina fsync, los cambios son descartados cuando el archivo se cierra. No ocurren operaciones de I/O cuando una pgina de un segmento persistente es seleccionada para ser colocada en la lista libre (free list), si la pgina no fue modificada. Si la pgina es referida nuevamente ms tarde, es nuevamente leda. Segmentos de trabajo: Estos segmentos son transitorios y slo existen mientras son usados por un proceso. Los segmentos de trabajo no tienen un ubicacin de almacenamiento permanente y por lo tanto son almacenado en el espacio de paginado cuando las pginas de la memoria real necesitan ser liberadas. Segmentos cliente: Estos segmento son grabados y restaurados a travs de la red a sus ubicaciones permanentes en un file system remoto en lugar de ser paginados en el sistema local. Los paginados desde CD-Rom y las pginas comprimidas son clasificados como segmentos cliente. Las paginas JFS2 tambin son mapeadas en segmentos cliente.

a. La lista libre (Free list) El VMM mantiene una lista de pginas de memoria libres disponible para satisfacer un page fault (demanda de pgina). Esta lista es conocida como la lista libre (free list). El VMM utiliza un algoritmo de reemplazo de pginas. Este algoritmo es utilizado para determinar qu pginas de la memoria virtual tendrn sus frames reasignados a la lista libre.

b. Reemplazo de pginas (Page replacement) Cuando la cantidad de pginas en la lista libre comienza a disminuir, el ladrn de pginas (page stealer) es invocado. El ladrn de pginas es un mecanismo que se mueve a travs de la Page Frame Table (PFT) buscando pginas para robar. La PFT contiene flags que indican qu pginas fueron referenciadas y cules fueron modificadas. Si el ladrn de pginas encuentra una pgina en la PFT que fue referenciada, no robar la pgina, pero blanquear el flag de referencia. La prxima vez que el ladrn de pginas revise esta pgina en la PFT, si esta no fue referenciada, la robar. Las pginas que no son referenciadas cuando el ladrn de pginas las revisa por primera vez, tambin sern robadas. Cuando el flag de modificacin es activado en una pgina que no fue referenciada, le indica al ladrn de pginas que dicha pgina fue modificada mientras estuvo en memoria. En este caso, se Pgina 73 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

llama a un page out antes de robar la pgina. Las pginas que son parte de un segmento de trabajo son escritas en el espacio de paginado, mientras que las pginas de segmentos persistentes son escritas en su ubicacin permanente del disco. Hay dos tipos de page fault, un page fault nuevo, cuando la pgina es referenciada por primera vez y un repage fault, cuando las pginas ya fueron referenciadas (page out) anteriormente. El ladrn investiga las pginas que fueron referenciadas, utilizando un buffer que contiene el ID de pgina de los page out recientes. El buffer histrico tambin se utiliza para mantener un balance entre las pginas de los segmentos persistentes y las pginas de los segmentos de trabajo que fueron paginados a disco. El tamao del buffer histrico depende de la cantidad de memoria del sistema; para un tamao de memoria de 512 MB, es necesario un buffer histrico de 128 KB. Cuando un proceso finaliza, su almacenamiento de trabajo es liberado y las pginas de memoria liberadas y colocadas en la lista libre. Sin embargo, los archivos que fueron abiertos por un proceso pueden permanecer en memoria. En un sistema SMP, el proceso del kernel lrud es responsable del reemplazo de pginas. Este proceso es despachado a una CPU cuando el lmite del parmetro minfree es alcanzado. Este lmite puede modificarse con el comando vmtune. En un entorno de uniprocesamiento, el reemplazo de pginas es controlado directamente dentro del campo de accin del thread en ejecucin. El algoritmo del reemplazo de pginas es ms efectivo cuando la cantidad de repages es baja. El algoritmo de reemplazo perfecto eliminar los repage fault completamente y robar las pginas que no sern referenciadas nuevamente.

c. Mecanismo de control de la carga de memoria Si la cantidad de pginas de memoria virtual activas excede la cantidad de pginas de memoria real, el espacio de paginado es utilizado para todas aquellas pginas que no caben en la memoria real. Si una aplicacin necesita una pgina que fue enviada al espacio de paginado, el VMM la carga en la memoria real. Si en ese momento la cantidad de pginas libres en la memoria real no es suficiente, el VMM debe liberar otra pgina de la memoria real antes de cargar la pgina requerida. Si encuentra nicamente pginas computacionales para liberar, el VMM se ve obligado a enviarlas al espacio de paginado. En el peor de los casos, el VMM siempre necesita realizar un page out antes de cargar (page in) una pgina en la memoria. Esta condicin es denominada trashing. En una condicin de trashing los procesos encuentran page faults apenas son ejecutados. Ninguno de los procesos avanza significativamente y el rendimiento del sistema se deteriora. El sistema operativo tiene mecanismos de control de carga que detectan cuando una condicin de trashing est por comenzar. Una vez que el trashing es detectado, el sistema comienza a suspender procesos activos y retrasa el comienzo de todos los procesos nuevos. El mecanismo de control de carga de memoria es desactivado por defecto en sistemas con ms de 128 MB de memoria. Puede manejarse por medio del comando schedtune -h.

4.1.2.3 Espacio de paginado El sistema operativo soporta tres polticas de asignacin de espacio de paginado: Asignacin tarda del espacio de paginado (Late Paging Space Allocation o LPSA) Asignacin temprana del espacio de paginado (Early Paging Space Allocation o EPSA) Asignacin diferida del espacio de paginado (Deferred Paging Space Allocation o DPSA)

Pgina 74 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Asignacin tarda del espacio de paginado (LPSA) Con la LPSA, un slot del paginado es asignado en una pgina de la memoria virtual nicamente cuando esa pgina es modificada. El riesgo que implica esta poltica es que cuando el proceso toque el archivo, no haya suficientes pginas disponibles en el espacio de paginado. Asignacin temprana del espacio de paginado (EPSA) Esta poltica asigna la cantidad apropiada de pginas del espacio de paginado en el momento que el rango de direcciones de memoria virtual es asignado a un proceso. Esta poltica asegura que los procesos no sean matados cuando el espacio de paginado sea escaso. Para activar EPSA, se debe configurar la variable de ambiente PSALLOC=early. Configurando esta poltica se asegura que cuando un proceso necesite realizar un page out, las pginas estn disponibles. El tamao del espacio de paginado recomendado cuando se adopta la poltica EPSA es de al menos cuatro veces el tamao de la memoria real. Asignacin diferida del espacio de paginado (DPSA) Esta es la poltica por defecto en AIX 5L Versin 5.1. La asignacin del espacio de paginado es retardada hasta que es necesario realizar un page out, de manera que el espacio de paginado no es desperdiciado. Slo se asignar el espacio de paginado cuando se deba hacer el page out de una pgina de memoria. Este espacio de paginado estar reservado para esta pgina hasta que el proceso la libere o este finalice. Este mtodo ahorra gran cantidad de espacio de paginado. Para desactivar esta poltica, el parmetro defps del comando vmtune debe ser configurado en 0 (cero) de la siguiente manera: vmtune d 0. Con este nuevo valor es utilizada la asignacin tarda del espacio de paginado (LPSA)

a. Ajustando el umbral del espacio de paginado Cuando el espacio de paginado se agota, el sistema operativo intenta librear recursos primero advirtiendo a los procesos que debe liberar espacio de paginado, y luego directamente matando procesos. El comando vmtune es utilizado para configurar el umbral que indica cuando se debe iniciar esta actividad. Los parmetros del vmtune que afectan el paginado son: npswarn El sistema operativo enva la seal SIGDANGER a todos los procesos activos cuando la cantidad de espacio de paginado disponible en el sistema est debajo de este valor. Un proceso puede ignorar la seal o liberar pginas de memoria utilizando la subrutina disclaim(). El sistema operativo comienza a matar procesos cuando la cantidad de espacio de paginado est debajo de este umbral. Cuando el umbral npskill es alcanzado, el sistema operativo enva una seal SIGKILL a los procesos ms jvenes. Los procesos que estn controlando una seal SIGDANGER y procesos que utilizan la poltica EPSA estn exentos de ser matados. Los usuarios con UID ms bajo que el nmero especificado en este parmetro no sern matados cuando el umbral npskil es alcanzado. Configurando este valor en 1 (uno), los procesos root estarn exentos de ser matados cuando el umbral npskill es alcanzado.

npskill

nokilluid

Cuando un proceso no puede iniciarse (fork) debido a la falta de espacio de paginado, el scheduler realizar cinco intentos para iniciar el proceso antes de poner el proceso a dormir. El scheduler deja pasar diez ticks del reloj entre cada intento. Por defecto, cada tick del reloj es de 10 ms. Es decir, 100 ms entre cada intento. El flag -f del comando schedtune puede ser usado para cambiar la cantidad de veces que el scheduler reintentar el fork.

Pgina 75 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Para monitorear la cantidad del espacio de paginado, utilice el comando lsps. Es recomendable utilizar el flag -s en lugar del flag a porque el formulario incluye las pginas en el espacio de paginado reservadas por la poltica EPSA.

4.1.2.4 Prdidas de memoria (Memory leaks) Los sistemas suelen quedarse sin espacio de paginado debido a los leaks (prdidas) de memoria de aplicaciones interactivas. Una leak de memoria es un error del programa por el cual el programa repetidamente asigna memoria, la utiliza y luego olvida liberarla. El comando svmon es til detectando leaks de memoria. Para buscar procesos o grupos de procesos cuyos segmentos de trabajo estn continuamente creciendo, se puede usar el comando svmon con el flag -i.

4.1.2.5 Memoria compartida Los segmentos de memoria pueden ser compartidos entre procesos. Utilizar memoria compartida evita el exceso de llamados del sistema y el uso de buffers. Las aplicaciones reducen la sobrecarga de leer y escribir las llamadas del sistema manipulando punteros en esos segmentos de memoria. Los archivos y datos en los segmentos compartidos pueden ser compartidos por mltiples procesos y threads, pero la sincronizacin entre procesos o threads debe ser realizada en el nivel de la aplicacin. Por defecto, cada regin o segmento de memoria compartida tiene un espacio de direcciones de 256 MB, y la cantidad mxima de segmentos de memoria compartida que el proceso puede acceder al mismo tiempo est limitada a 11. Utilizando memoria compartida extendida se incrementa este nmero a ms de 11 segmentos y permite que las regiones de memoria compartida sean de cualquier tamao desde 1 byte hasta 256 MB. La memoria compartida extendida est disponible para los procesos que tienen la variable EXTSHM configurada en ON (es decir EXTSHM=ON en el entorno del proceso). Las restricciones de la memoria compartida extendida son: El I/O es restringido de la misma manera que para las regiones de memoria. El I/O raw no es soportado. No puede ser usada como buffer de I/O donde el desprendimiento de los buffers ocurre en un controlador de interrupciones. No puede ser abrochada (pinned) utilizando la subrutina plock(). Una pgina abrochada (pinned) es una pgina que siempre est residente en RAM y no puede ser movida al espacio de paginado (page out).

4.1.3 Rendimiento de I/O de disco


Mucha atencin es requerida cuando el subsistema de disco es diseado e implementado. Por ejemplo, se debe considerar lo siguiente: Ancho de banda de los adaptadores de disco y del bus del sistema Ubicacin de los volmenes lgicos en los discos Configuracin de arreglos de discos

Pgina 76 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Configuraciones del sistema operativo, por ejemplo striping o espejado Implementacin de otras tecnologas, como SSA

4.1.3.1 Advertencia inicial Es recomendable no realizar ningn cambio en los parmetros por defecto del I/O de disco hasta tanto no conocer con claridad la carga actual del sistema. Hay que tener en cuenta, sin embargo, que siempre se debe monitorear la carga de I/O y es muy probable que surja la necesidad de equilibrar la configuracin de los volmenes fsicos y lgicos despus de la experiencia en el entorno productivo. Hay dos aspectos que limitan el rendimiento del subsistema de I/O de disco que necesitan ser considerados: Limitaciones fsicas Limitaciones lgicas Un subsistema de I/O de disco que tenga un rendimiento pobre, normalmente afecta severamente el rendimiento general del sistema. Las limitaciones fsicas incluyen el rendimiento del hardware interconectado. Las limitaciones lgicas incluyen el ancho de banda fsico y la serializacin de recursos y mecanismos de lock, desarrollados en el software de acceso a datos.

4.1.3.2 El diseo del subsistema de disco Para muchos sistemas, el rendimiento general de una aplicacin es limitado por la velocidad en que los datos son accedidos desde el disco y la forma en que la aplicacin lee y escribe los datos en los discos. El diseo y la configuracin ptima de un subsistema de almacenamiento en disco es una tarea compleja que debe ser cuidadosamente estudiada durante las etapas de diseo iniciales de la implementacin. Algunos factores que deben considerarse son: Rendimiento contra disponibilidad Una decisin debe tomarse a tiempo sobre que es ms importante; el rendimiento de I/O de la aplicacin o la integridad y disponibilidad de la aplicacin. Incrementar la disponibilidad de datos generalmente implica disminuir el rendimiento del sistema y viceversa. Alta disponibilidad tambin implica una mayor cantidad de espacio de disco requerida. Tipo de carga de la aplicacin Las caractersticas de la carga de I/O de la aplicacin deben ser muy bien entendidas antes de implementar el subsistema de disco. Diferentes tipos de carga generalmente requieren diferente configuracin de los subsistemas de disco para proveer un rendimiento de I/O aceptable. Rendimiento requerido del subsistema de disco Los requerimientos de rendimiento de I/O deben ser definidos de entrada, ya que estos juegan un papel fundamental durante la configuracin fsica y lgica del subsistema de disco. Espacio de disco requerido Antes de disear el subsistema de disco, deben ser entendidos claramente los requerimientos de espacio de la aplicacin. Pgina 77 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Costo Aunque no est relacionado con el rendimiento, el costo total del subsistema de discos generalmente juega un papel importante durante el diseo del sistema. Genricamente hablando, un sistema de gran rendimiento cuesta ms que uno de menor rendimiento.

4.1.3.3 Consideraciones de rendimiento relativas al ancho de banda El ancho de banda de un vnculo de comunicacin, como adaptadores de disco o bus, determina la velocidad mxima en el que los datos pueden ser transmitidos a travs de ese vnculo. Cuando se describen las capacidades de un componente de un subsistema de disco particular, los nmeros de rendimiento son expresados tpicamente en rendimiento mximo o pico de rendimiento, lo que no describe realmente el verdadero rendimiento que tendr en un escenario del mundo real. Adems, cada componente podr tener diferentes anchos de banda, lo que crear cuellos de botella en el diseo general del sistema. El ancho de banda de cada uno de los siguientes componentes debe ser considerado cuando se disea el subsistema de disco: Discos Los ltimos discos SCSI y SSA tienen tasas de transferencia de datos mxima sostenida de entre 14 y 20 MB por segundo. Nuevamente, las tasas previstas para el mundo real por lo general sern menores, dependiendo de la ubicacin de los datos y las caractersticas de carga de I/O de la aplicacin. Las aplicaciones que realizan una gran cantidad de lecturas o escrituras secuenciales podrn logran mayores tasas de transferencia que aquellas que realizan principalmente operaciones de I/O aleatorias. Adaptadores de disco Los adaptadores de disco pueden convertirse en cuello de botella dependiendo de la cantidad de discos conectados y su uso. Mientras las especificaciones de SCSI-2 permiten una transferencia de datos de 20 MB/seg como mximo, los adaptadores basados en la especificacin UltraSCSI son capaces de proveer un ancho de banda de hasta 40 MB/seg. El bus SCSI utilizado para transferencia de datos es un bus arbitrado. En otras palabras, slo un dispositivo puede enviar datos a la vez. Esto implica que la tasa de transferencia mxima terica difcilmente pueda ser sostenida. En comparacin, los adaptadores IBM SSA utilizan un protocolo no arbitrado, que adems soporta mltiples transferencias de datos punto a punto concurrentes. Los adaptadores SSA actuales son capaces de soportar tasas de transferencia de datos mximas tericas de 160 MB/seg. Bus del sistema La arquitectura del bus del sistema utilizado puede limitar el ancho de banda general de un subsistema de disco. As como el ancho de banda de los discos es limitado por el ancho de banda de los adaptadores de disco a los que estn conectados, la velocidad del adaptador de disco es limitada por el ancho de banda del bus del sistema. El bus PCI standard est limitado a un mximo terico de 132 MB/seg (32-bit @ 33MHz) o 528 MB/seg (64-bit @ 66MHz).

4.1.3.4 Diseo del disco Un disco consiste en un conjunto de bandejas circulares giratorias planas. Cada bandeja tiene una o dos caras en que los datos son almacenados. Las bandejas son ledas por un conjunto de cabezas de lectura/escritura posicionables, que se mueven juntas como una unidad. Los siguientes trminos son usados cuando se habla de operaciones en bloque de dispositivos de disco. Pgina 78 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Trmino Sector

Descripcin Es una subdivisin direccionable de una pista utilizada para grabar un bloque de un programa o dato. En un disco, este es un bloque contiguo de tamao fijo. Cada sector es de 512 bytes. Es una vuelta circular en la superficie de un disco en la que la informacin es grabada y desde la cual se lee la informacin grabada; un conjunto contiguo de sectores. Una pista corresponde al rea superficial de cada bandeja que es barrida por una cabeza mientras esta permanece fija. Una cabeza es una parte mvil que puede leer y escribir los datos de una pista ubicada en una de las caras de una bandeja. Normalmente un disco tiene un pequeo conjunto de cabezas que se mueven de pista en pista en forma unitaria. Son las pistas de un disco que pueden ser accedidas sin reposicionar las cabezas. Si un disco tiene n cabezas alineadas verticalmente, un cilindro tiene n pistas alineadas verticalmente.

Pista

Cabeza

Cilindro

a. Tiempo de acceso del disco Los tres componentes que definen el tiempo de acceso de un disco son definidos en la siguiente tabla: Latencia De bsqueda Descripcin Una bsqueda es el movimiento fsico de la cabeza ubicada en el final del brazo de un disco, de una pista a otra. El tiempo de una bsqueda es el tiempo que necesita el brazo del disco para acelerar, viajar sobre las pistas que se deben evitar, hasta desacelerar y finalmente asentarse y esperar que finalicen las vibraciones mientras ronda sobre la pista destino. El tiempo total de la bsqueda es variable. El promedio de bsqueda es utilizado para medir las capacidades del disco. Es el tiempo que el brazo del disco debe esperar mientras el disco rota debajo hasta que el sector destino se aproxima. La latencia rotacional es, para todos los propsitos prcticos excepto la lectura secuencial, una funcin aleatoria con valores uniformemente entre cero y el tiempo requerido para una revolucin completa del disco. El promedio de latencia rotacional es tomado como el tiempo de media revolucin. Para determinar la latencia promedio, se deben conocer las revoluciones por minuto del disco. Convirtiendo las revoluciones por minuto en revoluciones por segundo y dividindolas por 2, obtenemos el promedio de la latencia rotacional. El tiempo de transferencia de datos es determinado por el tiempo que tarda en moverse el bloque de datos requerido a travs del Pgina 79 de 283

Rotacional

De transferencia

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

brazo de lectura/escritura. Es lineal con respecto al tamao del bloque El promedio del tiempo de acceso del disco es la suma de los promedios de latencia de bsqueda y latencia rotacional ms el tiempo de transferencia de datos (normalmente para un bloque de 512 bytes). El promedio de acceso del disco generalmente sobrestima el tiempo necesario para acceder al disco; un tpico tiempo de acceso del disco es un 70 % del promedio.

b. Discos por bus o loop (lazo) del adaptador Las discusiones sobre rendimiento de disco, volmenes lgicos, y file systems a veces llegan a la conclusin de que a mayor cantidad de discos, mejor el rendimiento de I/O de disco. Esto no es siempre cierto, porque hay un lmite en cuanto a la cantidad de datos que pueden ser manejados por un adaptador de disco, que puede convertirse en un cuello de botella. Si todos los discos estn conectados a un adaptador, y los file systems ms activos estn en volmenes fsicos separados, ser beneficioso utilizar mltiples adaptadores de disco. La mejora del rendimiento depender del tipo de acceso. Utilizar la cantidad apropiada de discos por adaptador es esencial. Para adaptadores SCSI y SSA la cantidad mxima de discos por bus o loop no debe exceder de cuatro si es necesario el mximo rendimiento y pueden ser utilizados por las aplicaciones. Para los SCSI el factor limitante es el bus, y para los SSA es el adaptador. El punto ms importante en el rendimiento de los discos es normalmente relativo a la aplicacin; esto es, gran cantidad de accesos pequeos (aleatorio), o pequea cantidad de accesos grandes (secuencial). Para el acceso aleatorio, el rendimiento generalmente ser mejor utilizando una gran cantidad de discos pequeos. La situacin opuesta es para los accesos secuenciales (conviene utilizar discos rpidos o striping con una gran cantidad de discos)

c. Buffers fsicos de disco El Logical Volume Manager (LVM) utiliza un trmino denominado pbuf para controlar I/O a disco pendiente. Un pbuf es utilizado para cada requerimiento de I/O, independientemente de la cantidad de pginas involucradas. El AIX crea pbufs extra cuando un nuevo volumen fsico es agregado al sistema. Cuando se utiliza striping, son necesarios ms pbufs porque una operacin de I/O provoca operaciones de I/O para ms discos y, por lo tanto, ms pbufs. Cuando striping y espejado es utilizado, an ms pbufs son requeridos. Quedarse sin pbufs reduce el rendimiento considerablemente porque los procesos de I/O son suspendidos hasta que los pbufs estn disponibles nuevamente. Se puede incrementar la cantidad de pbufs con el comando vmtune; sin embargo, los pbufs son abrochados (pinned), de manera que asignar muchos pbufs incrementa el uso de la memoria. Se le debe dar una atencin especial al hecho de ajustar la cantidad de buffers fsicos en sistemas con muchos discos conectados o disponibles con el comando vmtune. La cantidad de buffers fsicos (pbufs) por disco activo debe ser el doble del tamao de la cola del disco o 32, cualquiera de ambos es mayor. La cantidad mxima de pbufs por defecto no debe superar un total de 65536. El siguiente script extrae la informacin de cada disco y calcula una recomendacin para configurar el flag b del vmtune (hd_pbuf_cnt). El script no tiene en cuenta los mltiples pdisks o hdisks de los SSA utilizando vpath. Utiliza el algoritmo que se ve a continuacin. Nota: El siguiente script no puede ser utilizado en discos con mltiples conexiones.
1 #!/bin/ksh 2 integer max_pbuf_count=65535 3 integer hd_pbuf_cnt=128 4 integer current_hd_pbuf_cnt=$(vmtune |awk 'BEGIN{count=0}count=="1"{print

Pgina 80 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

$6;exit} /hd_pbuf_cnt/{count=1}') 5 lsdev -Cc disk -Fname| 6 while read disk;do 7 integer queue_depth=$(lsattr -El $disk -aqueue_depth -Fvalue) 8 ((pbuf_to_add=queue_depth*2)) 9 if (( pbuf_to_add < 32));then 10 pbuf_to_add=32 11 fi 12 if (( (hd_pbuf_cnt+pbuf_to_add) > max_pbuf_count));then 13 ((pbuf_to_add=max_pbuf_count-hd_pbuf_cnt)) 14 fi 15 ((hd_pbuf_cnt+=pbuf_to_add)) 16 done 17 if (( current_hd_pbuf_cnt < hd_pbuf_cnt ));then 18 print "Run vmtune -B$hd_pbuf_cnt to change from $current_hd_pbuf_cnt to $hd_pbuf_cnt" 19 else 20 print "The current hd_pbuf_cnt ($current_hd_pbuf_cnt) is OK" 21 fi

El siguiente algoritmo es utilizado para configurar los pbufs:


max_pbuf_count = 65535 hd_pbuf_cnt 128 for each disk { pbuf_to_add = queue_depth * 2 if ( pbuf_to_add < 32) pbuf_to_add = 32 if ( (hd_pbuf_cnt + pbuf_to_add) > max_pbuf_count) pbuf_to_add = max_pbuf_count - hd_pbuf_cnt hd_pbuf_cnt += pbuf_to_add }

Ntese que hay ms buffers de los que puedan necesitarse incrementar en un gran sistema servidor. En un gran sistema servidor siempre se debe monitorear la utilizacin con el comando vmtune y ajustar los valores apropiadamente. Ntese que los buffers de file systems para LVM requieren que el cambio sea realizado antes de que el file system est montado. 4.1.3.5 Conceptos del Logical Volume Manager (LVM) Muchos sistemas operativos UNIX modernos implementan el concepto de un Logical Volume Manager (LVM) que puede ser usado para manejar lgicamente la distribucin de los datos en los dispositivos de disco fsicos. El LVM del AIX es un conjunto de comandos del sistema operativo, subrutinas de libreras y otras herramientas utilizadas para controlar los recursos de discos fsicos brindando una visin lgica simplificada del espacio de almacenamiento disponible. A diferencia de otros LVM, el LVM del AIX es una parte integrada en el sistema operativo bsico provisto sin costo adicional. Dentro del LVM, cada disco o volumen fsico (Physical Volume o PV) pertenece a un grupo de volmenes (Volume Group o VG). Un grupo de volmenes es una coleccin de 1 a 32 volmenes fsicos (1 a 128 en el caso de un grupo de volmenes grande o Big Volume Group), que pueden variar en capacidad y rendimiento. Un volumen fsico puede pertenecer a un solo grupo de volmenes. Un mximo de 255 grupos de volmenes puede definirse en un sistema. Cuando un grupo de volmenes es creado, los volmenes fsicos dentro del grupo de volmenes son particionados en unidades contiguas de igual tamao conocidas como particiones fsicas (Physical Partitions o PP). Las particiones fsicas son las unidades de espacio de almacenamiento asignable ms pequeas de un grupo de volmenes. La particin fsica es determinada durante la creacin del grupo de volmenes, y todos los volmenes fsicos que son asignados al grupo de Pgina 81 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

volmenes heredan ese tamao. El tamao de las particiones fsicas puede ser desde 1 MB hasta 1024 MB, pero debe ser potencia de 2. Si no es especificado, el tamao por defecto es 4 MB para discos de hasta 4 GB, pero debe ser mas grande para discos mayores a 4 GB, debido a que el LVM, por defecto, slo acepta hasta 1016 particiones fsicas por disco (a menos que se utilice la opcin t del comando mkvg, lo que reduce la cantidad mxima de volmenes fsicos en el grupo de volmenes). En AIX 5L Versin 5.1, el tamao de PP mnimo necesario es calculado por el sistema operativo si se especifica el valor por defecto de 4 MB.

4.1.4 Rendimiento de red


La optimizacin de la utilizacin de la red es una tarea compleja y a veces muy dificultosa. Es necesario conocer como se comunican las aplicaciones y como trabajan los protocolos de red en AIX y otros sistemas implicados en la comunicacin. La nica recomendacin general para la optimizacin de red es que deben usarse las opciones de red especficas de interfases (Interface Specific Network Options o ISNO) y la utilizacin de los buffers debe ser monitoreada. Es necesario conocer la topologa de red utilizada para entender y detectar posibles cuellos de botella en la red. Esto incluye informacin sobre los routers y gateways utilizados, la unidad de transferencia mxima (Maximum Transfer Unit o MTU) utilizada por los sistemas en la red, y la carga actual de las redes utilizadas. Esta informacin debe estar bien documentada, y el acceso a esta documentacin disponible en todo momento. AIX ofrece una amplia variedad de herramientas para monitorear redes, adaptadores de red, interfases de red, y recursos del sistema utilizados por el software de red. Se pueden utilizar estas herramientas para obtener informacin sobre el entorno de red cuando todo funciona correctamente. Esta informacin ser muy til en la caso de que aparezca un problema de rendimiento, porque la comparacin entre la informacin monitoreada antes y despus de la aparicin del problema ayuda a detectar el origen del problema. La informacin recolectada debe incluir: Informacin de configuracin del servidor y de los sistemas cliente Un cambio en la configuracin puede ser la causa de un problema de rendimiento. A veces ese cambio puede ser realizado por accidente y encontrar el parmetro modificado para corregirlo puede ser muy difcil. El comando snap a puede ser utilizado para recolectar las informaciones sobre la configuracin del sistema. La carga del sistema servidor Un rendimiento pobre en un sistema cliente no es necesariamente un problema de red. Si en cambio, el sistema servidor se encuentra con escasez de recursos locales, como CPU o memoria, no podr contestar los requerimientos de los clientes en el tiempo espe-rado. La herramienta perfpmr puede ser utilizada para recolectar esta informacin. La carga del sistema cliente La misma consideracin para un sistema servidor se aplica para un sistema cliente. Una escasez de recursos local, como CPU o memoria, puede lentificar las operaciones de red del cliente. La carga en la red La red es normalmente un recurso compartido por muchos sistemas. The network usually is a resource shared by many systems. Un rendimiento pobre entre dos sistemas conectados a la red puede ser provocado por una sobrecarga de la red, y esta sobrecarga puede estar causada por otros sistemas conectados en la misma red. No hay herramientas nativas del AIX que recolecten informacin sobre la carga en la red misma. Sin embargo, herramientas como ping o traceroute pueden ser usadas para obtener tiempos de retorno de datos en la red. El comando ftp puede ser usado para transferir una gran cantidad de datos entre dos sistemas utilizando /dev/zero como entrada y Pgina 82 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

/dev/null como salida, y registrar el rendimiento. Esto se realiza abriendo una conexin ftp, cambiando a modo binario y ejecutando el siguiente subcomando del ftp:
put | dd if=/dev/zero bs=32k count=10000 /dev/null

Este comando transfiere 10000 * 32 KB a travs de la red. Los comandos atmstat, estat, entstat, fddistat, y tokstat pueden ser utilizados para obtener el rendimiento de una interfase de red especfica. El ejemplo anterior del ftp realizando un put utilizando un dd puede ser usado. Sin el count=10000 el subcomando put del ftp correr hasta que es interrumpido. Mientras el ftp transfiere los datos se puede utilizar la siguiente secuencia para inicializar las estadsticas de red de la interfase, esperar cien segundos y obtener las estadsticas recolectadas. La salida de los comandos de monitoreo de red en el servidor y el cliente La salida de los comandos debe ser parte de los datos recolectados por la herramienta perfpmr. Sin embargo, la herramienta perfpmr puede cambiar, por lo que es recomendable asegurarse que las salidas de los comandos netstat y nfsstat estn incluidas.

4.1.4.1 Protocolos TCP/IP Para interpretar los datos generados por programas como los comandos iptrace y tcpdump, formateados por el ipreport, y resumidos con ipfilter, es necesario entender como trabajan juntos los protocolos TCPI/IP. En la siguiente tabla se ven algunos ejemplos de protocolos que corresponden a las distintas capas TCP/IP.

Capa TCP/IP
Aplicacin Transporte Red Internet Interfase de red Hardware

Ejemplos de protocolos
Telnet, FTP, SMTP, LPD TCP, UDP IP, ICMP, IGMP, ARP, RARP Ethernet, Token-Ring, ATM, FDDI, SP Switch Red fsica

4.1.4.2 Modificacin de los parmetros de red En muchos casos es necesario ajustar algunos parmetros de red en los sistemas servidores. La mayora de estos parmetros estn relacionados con buffers de diferentes protocolos de red. Se pueden modificar los tamaos de estos buffers con el comando no o utilizar las opciones de red para interfases especficas (Interface Specific Network Options o ISNO) para cada adaptador de red. Los cambios se aplicarn para el adaptador de red especificado si se activ el ISNO con el comando no, como en el siguiente ejemplo:
# no -o use_isno=1

Si en el sistema son utilizados diferentes adaptadores de red con una gran diferencia en el tamao de MTU que utilizan (por ejemplo, adaptadores ethernet utilizando un MTU de 1500 y un adaptador Pgina 83 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

ARM utilizando un MTU de 65527) es preferible utilizar ISNO para realizar la optimizacin de los parmetros de cada adaptador de red. Nota Hay cinco parmetros ISNO por cada interfase soportada: rfc1323, tcp_nodelay, tcp_sendspace, tcp_recvspace, y tcp_mssdflt. Cuando se configuran, los valores de estos parmetros sobrescriben los parmetros con el mismo nombre que fueron configurados con el comando no. Cuando las opciones ISNO no esta configuradas para una interfase particular, son utilizadas las opciones del no. Las opciones configuradas por una aplicacin para un socket particular utilizando la subrutina setsockopt sobrescriben las opciones del no e ISNO. Es recomendable documentar los valores existentes antes de realizar los cambios, especialmente si se utiliza ISNO. El siguiente ejemplo muestra como usar el comando lsattr para revisar los valores actuales para una interfase de red, en este caso token-ring:
# lsattr -H -El tr0 -F"attribute value" attribute value mtu 1492 mtu_4 1492 mtu_16 1492 mtu_100 1492 remmtu 576 netaddr 10.3.2.164 state up arp on allcast on hwloop off netmask 255.255.255.0 security none authority broadcast netaddr6 alias6 prefixlen alias4 rfc1323 0 tcp_nodelay tcp_sendspace 16384 tcp_recvspace 16384 tcp_mssdflt

La parte de la salida remarcada en negrita indica las opciones ISNO. Antes de aplicar los ajustes ISNO a las interfases con el comando chdev, se puede usar el comando ifconfig. De esta manera, y si por alguna razn se deben restaurar los valores existentes y no se puede ingresar al sistema (log in), los valores no sern permanentes y no sern activados en el prximo reinicio. Por esta razn no es recomendable configurar los valores ISNO utilizando el ifconfig en cualquier script que sea ejecutado por init.

4.1.4.3 Optimizacin de los buffers de red Los siguientes valores demostraron entregar el mejor rendimiento. Una regla general es configurar los buffers TCP con un tamao 10 veces mayor que el tamao MTU, pero como se puede ver en la tabla, esto no es siempre cierto en todos los tipos de red. Pgina 84 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Dispositivo Ethernet Ethernet Ethernet Ethernet Ethernet ATM ATM ATM FDDI SPSW SPSW2 HiPPI HiPS ESCON

Velocidad Mbits 10 100 1000 1000 1000 155 155 155 100

MTU 1500 1500 1500 9000 9000 1500 9180 65527 4352 65520 65520 65536 65520 4096 1492 1492 4096 8500

Token Ring Token Ring Token Ring Token Ring

4 16 16 16

tcp sendspace 16384 16384 131072 131072 262144 16384 65536 655360 45056 262144 262144 655360 655360 40960 16384 16384 40960 65536

tcp recvspace 16384 16384 65536 65536 131072 16384 65536 655360 45056 262144 262144 655360 655360 40960 16384 16384 40960 65536

sb_max 32768 32768 131072 262144 262144 131072 131072 1310720 90012 1310720 1310720 1310720 1310720 81920 32768 32768 81920 131072

Rfc1323 0 0 0 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0

Si una aplicacin enva slo una pequea cantidad de datos y luego espera una respuesta, el rendimiento puede degradarse si los buffers tcp recvspace son muy grandes, especialmente cuando se utiliza un MTU de gran tamao. Ser necesario ajustar nuevamente los tamaos o desactivar el algoritmo Nagle configurando tcp_nagle_limit=0.

4.2 Herramientas de rendimiento de CPU y memoria


En esta seccin vamos a revisar varias herramientas que ayudan a determinar problemas de rendimiento de CPU y memoria. Los ejemplos ayudarn a elegir que herramienta utilizar dependiendo del caso.

4.2.1 El comando sar


El comando sar (System Activity Report) puede ser utilizado de dos maneras: una es viendo los datos del sistema en tiempo real, la otra es viendo datos capturados con anterioridad. El comando sar es una de las primeras herramientas a ser usada por un administrador. Aunque el comando sar entrega informacin interesante a cerca de muchas funciones del sistema, se debe tener en cuenta que otras herramientas entregan reportes de utilizacin del sistema de manera mas exacta, en algunos puntos especficos del entorno.

4.2.1.1 Ejemplos del uso del comando sar El comando sar sin parmetros, entrega una salida con todas lnea del da del archivo que fue llenado por el comando sa1. Pgina 85 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

La cantidad de tiempo puede ser configurada en el archivo crontab, y en el siguiente ejemplo, utiliza la cantidad de tiempo por defecto del archivo /var/spool/cron/crontabs/adm:
# sar 08:00:00 08:20:00 08:40:00 09:00:00 Average %usr 0 0 0 0 %sys 0 0 0 0 %wio 0 0 0 0 %idle 100 100 100 100

El comando sar, utilizando como parmetro slo intervalos y cantidades, muestra la siguiente salida. Es lo mismo que correr sar -u 1 10. El 1 especifica el intervalo en segundos, y el 10 especifica el nmero de veces que se captura informacin.
# sar 1 10 AIX server2 3 4 000FA17D4C00 06/30/00 09:14:57 09:14:58 09:14:59 09:15:00 09:15:01 09:15:02 09:15:03 09:15:04 09:15:05 09:15:06 09:15:07 Average %usr 54 0 44 82 66 45 60 47 65 48 55 %sys 18 2 19 14 16 12 17 16 12 8 15 %wio %idle 28 0 40 0 38 0 4 0 18 0 43 0 23 0 37 0 23 0 44 0 30 0

El comando sar -a reporta el uso de las rutinas del sistema para acceso a archivos, especificando cuantas veces por segundo fueron llamadas algunas de las rutinas para acceso a archivos.
# sar -a 1 10 AIX server2 3 4 000FA17D4C00 06/30/00 09:28:44 09:28:45 09:28:46 09:28:47 09:28:48 09:28:49 09:28:50 09:28:51 09:28:52 09:28:53 09:28:54 Average iget/s lookuppn/s 0 1169 0 15 0 50 0 559 0 390 0 1467 0 1775 0 2303 0 2832 0 883 0 1144 dirblk/s 277 0 0 19 20 137 153 74 50 44 77

El comando sar -c reporta llamadas del sistema (system calls).


# sar -c 1 10 AIX server2 3 4 000FA17D4C00 06/30/00 09:33:04 09:33:05 09:33:06 09:33:07 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s 1050 279 118 0.00 0.00 911220 5376749 186 19 74 0.00 0.00 3272 3226417 221 19 79 0.00 0.00 3272 3277806

Pgina 86 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

09:33:08 09:33:09 09:33:10 09:33:11 09:33:12 09:33:13 09:33:14 Average

2996 3304 4186 1938 3263 751 2827 2273

132 237 282 109 179 172 187 162

400 294 391 182 303 258 285 238

0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.10

0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.10

314800 167733 228196 153703 242048 155082 174059 235271

2284933 848174 509414 1297872 1003364 693801 1155239 1966259

El comando sar -d lee la actividad de disco con promedios de lectura, escritura y block size. Este flag no est documentado en los manuales de AIX, pero es utilizado por algunos gures del AIX. Es preferible utilizar el iostat en lugar del sar -d.
# sar -d 5 3 AIX server2 3 4 000FA17D4C00 06/30/00 10:08:19 10:08:24 10:08:29 10:08:34 device hdisk0 hdisk1 cd0 hdisk0 hdisk1 cd0 hdisk0 hdisk1 cd0 hdisk0 hdisk1 cd0 %busy 0 0 0 44 36 0 84 16 0 42 17 0 avque 0.0 0.0 0.0 1.0 0.0 0.0 2.0 1.0 0.0 1.0 0.3 0.0 r+w/s 0 0 0 366 47 0 250 19 0 205 22 0 blks/s 4 3 0 3569 2368 0 1752 950 0 1775 1107 0 avwait 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 avserv 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

Average

El comando sar -q reporta estadstica de colas.


# sar -q 1 10 AIX server2 3 4 000FA17D4C00 06/30/00 11:08:33 11:08:34 11:08:35 11:08:36 11:08:37 11:08:38 11:08:39 11:08:40 11:08:41 11:08:42 11:08:43 Average runq-sz %runocc swpq-sz 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 %swpocc 100 100 100 100 100 100 100 100 100 100 80

1.0 1.0 1.0

100 100 100

1.0

50

El comando sar -r reporta estadsticas de paginado.


# sar -r 1 10 AIX server2 3 4 000FA17D4C00 06/30/00 11:16:11 11:16:12 11:16:13 11:16:14 11:16:15 11:16:16 11:16:17 11:16:18 slots 130767 130767 130767 130767 130767 130767 130767 cycle/s 0.00 0.00 0.00 0.00 0.00 0.00 0.00 fault/s 472.82 989.00 44.00 43.00 47.00 43.00 40.00 odio/s 66.02 800.00 1052.00 1040.00 1080.00 808.00 860.00

Pgina 87 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

11:16:19 11:16:20 11:16:21 Average

130767 130767 130767 130767

0.00 0.00 0.00 0

46.00 47.00 48.00 183

836.00 852.00 836.00 821

El comando sar -v reporta el estado de los procesos, kernel-thread, i-nodos, y tablas de archivos.
# sar -v 1 5 AIX server2 3 4 000FA17D4C00 06/30/00 11:12:39 11:12:40 11:12:41 11:12:42 11:12:43 11:12:44 proc-sz 49/262144 46/262144 45/262144 45/262144 45/262144 inod-sz 229/42942 221/42942 220/42942 220/42942 220/42942 file-sz 315/511 303/511 301/511 301/511 301/511 thrd-sz 59/524288 56/524288 55/524288 55/524288 55/524288

El comando sar -y reporta la actividad por segundo de dispositivos TTY.


# sar -y 1 10 AIX server2 3 4 000FA17D4C00 06/30/00 11:48:36 11:48:37 11:48:38 11:48:39 11:48:40 11:48:41 11:48:42 11:48:43 11:48:44 11:48:45 11:48:46 Average rawch/s 0 0 0 0 0 0 0 0 0 0 0 canch/s 0 0 0 0 0 0 0 0 0 0 0 outch/s 104 58 58 58 58 58 58 58 58 58 63 rcvin/s 63 9 69 68 69 68 69 25 42 68 55 xmtin/s 60 60 61 60 3 52 60 60 23 9 45 mdmin/s 0 0 0 0 0 0 0 0 0 0 0

Aunque esta no es una lista exhaustiva del comando sar y sus salidas, es un indicador de sus principales funcionalidades. Cuando se corre el comando sar una combinacin de parmetros puede ser utilizada para obtener una salida necesaria para el anlisis. Por ejemplo:
# sar -y -r 1 5 AIX server2 3 4 000FA17D4C00 06/30/00 11:48:56 11:48:57 11:48:58 11:48:59 11:49:00 11:49:01 Average Average rawch/s slots 0 130767 0 130767 0 130767 0 130767 0 130767 0 130767 canch/s cycle/s 0 0.00 0 0.00 0 0.00 0 0.00 0 0.00 0 0 outch/s fault/s 147 3.96 102 0.00 102 0.00 102 0.00 102 1.00 111 1 rcvin/s odio/s 67 0.00 69 0.00 68 0.00 69 0.00 68 4.00 68 1 xmtin/s 3 58 60 17 3 28 mdmin/s 0 0 0 0 0 0

Pgina 88 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

4.2.1.2 Sumario del comando sar El comando sar escribe el contenido de contadores acumulativos de actividad del sistema operativo a la standard output. La sintaxis del comando sar es la siguiente:
sar [ { -A | [ -a ] [ -b ] [ -c ] [ -k ] [ -m ] [ -q ] [ -r ] [ -u ] [ -v ] [ -w ] [ -y ] } ] [ -P IdentificadorDelProcesador, ... | ALL ] [ -ehh [ :mm [:ss ] ] ] [ -fArchivo ] [ -iSegundos ] [ -oArchivo ] [ -shh [ :mm [ :ss ] ] ] [ Intervalo [ Nmero ] ]

El sistema de contadores (accounting system), est basado en los valores de los parmetros intervalo y nmero, escribe la informacin en los intervalos en segundos y el nmero de veces especificado. El intervalo por defecto del parmetro Nmero es 1 segundo. Los datos recolectados pueden ser grabados en un archivo especificado por el flag -o archivo. Si la utilizacin de CPU es cercana al 100 por ciento (user + system), la carga de trabajo mostrada es dedicada a CPU. Si un porcentaje de tiempo considerable es utilizado en I/O wait, esto implica que la ejecucin de la CPU est bloqueada mientras espera un I/O a disco- El I/O puede ser por acceso a archivos o puede estar asociado al paginado, debido a cierta escasez de memoria.
Nota

El tiempo que el sistema desperdicia esperando el acceso a un archivo remoto no se acumula en el tiempo de I/O wait. Si la utilizacin de CPU y el tiempo de I/O wait para una tarea es relativamente bajo, el tiempo de respuesta no es satisfactorio, es recomendable investigar cuanto tiempo es desperdiciado en I/O remoto. Dado que no hay comandos de alto nivel que provean estadsticas de I/O wait remoto, realizar un trace de datos es lo ms aconsejable para observar la actividad. El comando sar llama a un comando denominado sadc para acceder a los datos del sistema. Dos shell scripts, /usr/lib/sa/sa1 y /usr/lib/sa/sa2, son estructurados para correr con el comando cron y proveer estadsticas y reportes. Algunos ejemplos son provistos (comentados) en el archivo del crontab /var/spool/cron/crontabs/adm para especificar cuando el deamon del cron debe correr esos scripts. Recolectar la informacin del sistema de esta manera es sumamente til para caracterizar el uso del sistema en un perodo de tiempo, y determinar las horas pico en cuanto a la utilizacin.
Nota

El comando sar por s mismo puede generar una considerable cantidad de lecturas y escrituras, dependiendo de los intervalos en que corra. Es recomendable correr el comando sar sin carga para calcular la influencia del sar en los resultados finales.

4.2.1.3 El comando sadc El comando sadc entrega un reporte del recolector de datos del sistema. La sintaxis del comando sadc es la siguiente:
sadc [ Intervalo Nmero ] [ Archivo ]

Muestra datos del sistema en un intervalo especificado en segundos (Intervalo) una cantidad especificada de veces (Nmero). Escribe en formato binario en el archivo especificado (Archivo) o a la standard output. Cuando intervalo y nmero no son especificados, ser escrito un registro dummy, que es usado en el arranque del sistema para marcar el momento en que el contador arranca de 0. El comando sadc est diseado para ser usado como backend del comando sar. AIX contiene un nmero de contadores que aumentan a medida que ocurren varias acciones en el Pgina 89 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

sistema. Estas acciones incluyen: Contadores utilizados por el sistema Contadores utilizados por el buffer Contadores de actividad de I/O de disco y cinta Contadores de actividad de dispositivos TTY Contadores de subrutinas y switching Contadores de accesos a archivos Contadores de actividad de las colas Contadores de comunicacin entre procesos

4.2.1.4 Los comandos sa1 y sa2 El comando sa1 es una variante en shell del comando sadc y maneja todos los flags y parmetros de este comando. El comando sa1 recolecta y almacena datos binarios en el archivo /var/adm/sa/sadd, donde dd es el da del mes. La sintaxis del comando sa1 es la siguiente:
sa1 [ Intervalo Nmero ]

Los parmetros Intervalo y Nmero especifican que el registro debe ser escrito tantas veces (Intervalo) cada tantos segundos (Nmero). Si no se especifican estos parmetros, escribe un solo registro. El comando sa1 est diseado para arrancar automticamente con el comando cron. Si el comando sa1 no corre diariamente a travs del comando cron, el comando sar muestra un mensaje sobre la inexistencia de el archivo de datos /usr/lib/sa/sa1. El comando sa2 es una variante en shell del comando sar, que escribe un reporte diario en el archivo /var/adm/sa/sardd, donde dd es el da del mes. El comando sa2 maneja todos los flags y parmetros del comando sar. El comando sa2 est diseado para correr automticamente a travs del comando crin y se ejecuta en forma concurrente con el comando sa1. La sintaxis del comando sa2 es la siguiente:
sa2

4.2.2 El comando vmstat


El comando vmstat reporta estadsticas sobre kernel threads, memoria virtual, disco, traps, y actividad de CPU. Los reportes generados por el vmstat pueden ser usados para balancear la actividad de carga del sistema. Estas estadsticas (que promedian todos los procesadores) son calculadas en promedios de valores expresados como porcentajes, y como sumas en otros casos. La sintaxis del comando vmstat es la siguiente:
vmstat [ -f ] [ -i ] [ -s ] [ VolumenFsico ] [ Intervalo [ Nmero ] ]

Si el comando vmstat es invocado sin utilizar flags, el reporte contiene un sumario de la actividad desde el reinicio del sistema. Si el flag f es especificado, el comando vmstat reporta el nmero de forks desde el reinicio del sistema. El parmetro VolumenFsico especifica el nombre el volumen fsico. Un ejemplo del comando vmstat sin flags:
# vmstat kthr memory page faults cpu ----- ----------- ------------------------ ------------ -----------

Pgina 90 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

r b avm 0 0 15982

fre 1388

re 0

pi 0

po 0

fr 8

sr 22

cy in 0 113

sy 281

cs us sy id wa 36 1 0 98 1

Este es un ejemplo del comando vmstat con el flag -f:


# vmstat -f 51881 forks

El parmetro Intervalo especifica la cantidad de tiempo en segundos entre cada reporte. El primer reporte contiene un promedio de las estadsticas desde que se reinici el sistema. Los siguientes reportes contienen estadsticas recolectadas durante el intervalo de tiempo desde el reporte anterior. Si el parmetro Intervalo no es especificado, el comando vmstat genera un solo reporte y termina. El parmetro Nmero slo puede ser especificado con el parmetro Intervalo. Si el parmetro Nmero es especificado, su valor determina la cantidad de reportes generados y en segundos, la frecuencia en que se recolectan datos. Si el parmetro Intervalo es especificado sin el parmetro Nmero, los reportes son generados continuamente. Un parmetro Nmero igual a 0 no es permitido. El siguiente es un ejemplo del comando vmstat con los parmetros Intervalo y Nmero:
# vmstat 1 5 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 15982 1388 0 0 0 8 22 0 113 281 36 1 0 98 1 0 0 15982 1387 0 0 0 0 0 0 108 4194 31 2 3 95 0 0 0 15982 1387 0 0 0 0 0 0 109 286 30 0 0 99 0 0 0 15982 1387 0 0 0 0 0 0 108 285 26 0 0 99 0 0 0 15982 1387 0 0 0 0 0 0 111 286 32 0 0 99 0

El kernel mantiene estadsticas de kernel threads, paginado, y actividad de interrupciones, a las que el comando vmstat accede a travs del uso de la subrutina knlist y el pseudo-controlador de dispositivos /dev/kmem. Las estadsticas de I/O de disco son mantenidas por controladores de dispositivos. Para discos, el promedio de la tasa de transferencia es determinada utilizando el tiempo activo y la informacin sobre la cantidad de transferencia. El porcentaje de tiempo activo se obtiene computando la cantidad de tiempo que el disco esta ocupado durante el reporte. La sintaxis del comando vmstat con informacin adicional referida a un disco en particular es la siguiente:
# vmstat hdisk1 kthr memory page faults cpu disk xfer ----- ----------- ------------------------ ------------ ----------- ----------r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 2 3 4 0 0 16273 8385 0 0 0 9 22 0 115 284 39 1 1 98 1 0

Este es el significado de cada columna: kthr Cambios de estado de los threads del kernel por segundo dentro del intervalo de muestreo. -r -b Cantidad de threads del kernel puestos en la cola de ejecucin. Cantidad de threads del kernel puestos en la cola de espera (esperando recursos, esperando una operacin de entrada o salida) Informacin sobre el uso de la memoria virtual y real. Las pginas virtuales son consideradas activas si estn asignadas. Una pgina tiene 4096 bytes. Pginas virtuales activas. Cuando un proceso se ejecuta necesita algo de memoria Pgina 91 de 283

Memory

- avm

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

como espacio de trabajo, esta se asigna en los dispositivos de paginado. Esto puede ser utilizado para calcular la cantidad de espacio de paginado asignado a procesos en ejecucin. El nmero en el campo avm divido por 256 resulta el nmero de megabytes (MB), en todo el sistema, asignados en el espacio de paginado. El comando lsps -a tambin provee informacin individual de cada espacio de paginado. Es recomendable que se configure suficiente espacio de paginado en el sistema de manera que la cantidad utilizada no se aproxime a un 100 por ciento. Cuando en los dispositivos de paginado quedan menos de 128 pginas no asignadas, el sistema comienza a matar procesos para liberar el espacio de paginado. - fre Tamao de la lista FREE. El sistema mantiene un buffer de memoria, llamado lista FREE, que ser fcilmente accesible cuando el VMM necesite espacio. El espacio nominal de la lista FREE vara dependiendo de la cantidad de memoria real instalada. En sistemas con 64 MB de memoria o ms, el valor mnimo (MINFREE) es 120 frames. Para sistemas con menos de 64 MB, el valor es dos veces el nmero de MB de memoria real, menos 8. Por ejemplo, un sistema con 32 MB tendr un valor para MINFREE de 56 FREE frames. Los lmites MINFREE y MAXFREE pueden verse y modificarse con el comando vmtune.

Nota

Una gran parte de la memoria real es utilizada como cache de datos de file systems. No es inusual que la lista FREE sea pequea. Page Informacin sobre la actividad de paginado. Se promedia sobre el intervalo y se presenta en unidades por segundo. Lista de entrada/salida del paginador. Pginas tomadas del espacio de paginado. Pginas enviadas al espacio de paginado. Pginas liberadas (reemplazo de pginas). Pginas revisadas por el algoritmo de reemplazo de pginas Clock cycles by page-replacement algorithm.

- re - pi - po - fr - sr . - cy

Faults - in - sy - cs

Tasas porcentuales de interrupciones por segundo sobre el intervalo de muestra. Interrupciones de dispositivos. Llamadas del sistema (system calls). Kernel thread context switches.

CPU - us - sy

Porcentaje de uso del tiempo de CPU. Tiempo de usuario. Tiempo de sistema. Pgina 92 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

- id - wa

Tiempo inactivo (idle). Ciclos de CPU utilizados para determinar que el proceso est en espera y tiene pendiente una entrada/salida a disco.

Disk xfer

Provee el nmero de transferencias por segundo para el volumen fsico especificado que ocurren durante el intervalo analizado. El parmetro VolmenFsico puede ser utilizado para especificar de uno a cuatro nombres. Las estadsticas de transferencias son mostradas para cada disco especificado, en el orden especificado. El resultado muestra la cantidad de requerimientos al dispositivo fsico. Esto no implica una cantidad determinada de datos que haya sido ledo o grabado. Varios requerimientos lgicos pueden ser combinados en un requerimiento fsico.

El comando vmstat, utilizando el flag -s, escribe a la standard output el contenido de la estructura sum, que contiene una cuenta absoluta de los eventos de paginado desde el reinicio del sistema. La opcin -s est fuera de todas las otras opciones del comando. El siguiente es un ejemplo del comando vmstat utilizando el flag -s:
# vmstat -s 8765020 4832918 2989263 19 7 0 5417148 12633 15031850 118 6086090 105808 0 0 0 2025516 3031667 3031667 24786000 77240518 0 0 191650677 total address trans. faults page ins page outs paging space page ins paging space page outs total reclaims zero filled pages faults executable filled pages faults pages examined by clock revolutions of the clock hand pages freed by the clock backtracks lock misses FREE frame waits extend XPT waits pending I/O waits start I/Os iodones cpu context switches device interrupts software interrupts traps syscalls

En los siguientes ejemplos, se muestra un sistema idle, y luego se empezar a darle carga; el resultado ser analizado para investigar potenciales problemas. La siguiente es una salida del comando vmstat en un sistema sin carga:
# vmstat 1 5 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 16057 1291 0 0 0 8 22 0 113 281 36 1 0 98 1 0 0 16057 1290 0 0 0 0 0 0 108 472 25 0 0 99 0 0 0 16057 1290 0 0 0 0 0 0 109 282 32 0 0 99 0 0 0 16057 1290 0 0 0 0 0 0 109 285 26 0 0 99 0 0 0 16057 1290 0 0 0 0 0 0 108 282 29 0 0 99 0

Pgina 93 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

La primera lnea muestra el promedio desde el reinicio del sistema y puede dejarse de lado cuando se calcula la carga del sistema. El comando vmstat, slo con los parmetros Intervalo y Nmero:
# vmstat 1 15 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 16299 1749 0 0 0 8 21 0 113 281 36 1 0 98 1 1 1 16299 1529 0 0 0 0 0 0 301 8707 382 52 13 0 35 1 1 16299 1398 0 0 0 0 0 0 185 6557 238 91 8 0 1 1 1 16299 1227 0 0 0 0 0 0 225 6705 257 85 15 0 0 1 0 16299 1049 0 0 0 0 0 0 246 6587 334 71 10 0 19 1 1 16299 861 0 0 0 0 0 0 250 9051 317 72 19 0 9 0 1 16265 653 0 0 0 0 0 0 342 10304 516 37 21 0 43 4 0 16284 121 0 0 0 16 35 0 253 2432 375 36 6 43 15 0 0 16284 120 0 0 0 432 1066 0 265 302 246 31 4 54 11 1 0 16284 121 0 0 0 160 389 0 221 1184 239 8 5 77 10 0 1 16284 120 0 0 0 576 1447 0 394 2377 525 28 9 39 24 0 0 16284 122 0 0 0 232 480 0 277 1185 346 21 5 63 11 0 0 16284 122 0 0 0 384 1630 0 326 1081 400 16 12 51 21 0 0 16284 126 0 0 0 336 784 0 284 742 326 20 3 59 18 0 1 16284 126 0 0 0 761 1615 0 336 1032 420 36 4 48 12

Como se puede ver, las salidas de kthr (kernel thread), r (runnable threads), y b (waiting threads) se mantienen relativamente bajas y constantes. La columna r thread debe ser menor a 5 durante una carga de trabajo estable. Normalmente, el valor b debe permanecer cercano a cero. En la columna memory, el avm (average paging space memory o promedio de memoria del espacio de paginado) se mantiene relativamente estable, pero el valor fre (FREE memory frames) cay de 1749 a un mnimo de 120. Si el valor fre se mantiene debajo de 120 durante un extenso perodo de tiempo, el sistema estar continuamente paginando, lo que supone problemas en el rendimiento del sistema. Para el rea page, los valores de re, pi, po, y cy se mantienen relativamente constantes. Sin embargo, los valores de fr y sr, aumentaron substancialmente. El valor pi no debe ir ms all de cinco; sin embargo si un ocurre un page-in, necesariamente debera haber ocurrido previamente un page-out de esa pgina. As tambin en un entorno con disponibilidad de memoria muy ajustada, cada page-in forzar un page out. Si el sistema esta tomando un importante nmero de pginas persistentes, se deber ver un incremento en po, sin correspondientes incrementos en pi. Esta situacin no indica necesariamente thrashing, pero obliga a investigar en los patrones de acceso a datos de las aplicaciones. La columna fr representa el nmero de pginas liberadas (FREE rate) y la columna sr representa el nmero de pginas revisadas (scan rate) por el algoritmo de reemplazo de pginas. Con memoria estable no fragmentada, sr y fr debe ser casi iguales. En sistemas con procesos mltiples utilizando muchas pginas diferentes, la pginas son mas voltiles y disjuntas. En este escenario, sr debera ser considerablemente superior a fr. Para la columna faults, los valores in, sy y cs fluctan en diferentes intervalos. No hay un lmite preciso para estos valores, y es difcil decir cunto es excesivo. Lo nico que se puede recordar es que el valor in siempre va a ser mayor a 100. Para la columna de cpu, los valores us, sy, id y wa tambin fluctan en forma dramtica. La salida es un porcentaje de la utilizacin de CPU. La columna us es el tiempo utilizado por un proceso ejecutando funciones que no utilizan recursos de sistema (kernel). La columna sy detalla la cantidad de tiempo que un proceso consume utilizando recursos de sistema (kernel). Un uso ptimo tendr la CPU trabajando un cien por ciento del tiempo. Esto es verdadero en el caso de un sistema mono-usuario que no necesita compartir CPU. Generalmente, si el tiempo de us + sy est Pgina 94 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

debajo del 90 por ciento, un sistema mono-usuario no es considerado saturado en CPU. Sin embargo, si el tiempo us + sy en un sistema multi-usuario supera el 80 por ciento, los procesos debern perder tiempo esperando en la cola de ejecucin (run queue). El tiempo de respuesta y el rendimiento en general se ver afectado. La columna id es el tiempo de CPU idle (no utilizado). La columna wa es tiempo idle con I/O de disco local pendiente. Un valor de wa superior al 40 por ciento podra indicar que el subsistema de discos no est balanceado apropiadamente, o puede ser el resultado de una gran carga de trabajo sobre disco. Los cuatro valores sumados debern dar una utilizacin de CPU del 100 por ciento.

4.2.3 El comando ps
En esta seccin se vern los siguientes temas: Uso del comando ps para estudiar la utilizacin de CPU Use del comando ps para estudiar la utilizacin de memoria El comando ps determina que procesos estn corriendo y los recursos que utilizan. 4.2.3.1 Uso del comando ps para estudiar la utilizacin de CPU Estas son las tres columnas del comando ps que reportan utilizacin de CPU, cada una en forma diferente.

Columna C TIME %CPU

Valor Tiempo de CPU utilizado recientemente por proceso. Tiempo total de CPU usado por el proceso desde que comenz Tiempo total de CPU usado por el proceso desde que comenz, dividido por el tiempo transcurrido. Esta es una medida de la demanda de CPU del programa.

a. La columna C La columna C puede ser generada por el flag -l y el flag f. En esta columna, es reportada la utilizacin de CPU de procesos o threads. El valor es incrementado cada vez que el reloj del sistema avanza (tick) y el proceso o thread es encontrado corriendo. Por lo tanto, se puede decir que es una penalidad por utilizacin reciente de CPU. A su vez, en cada segundo que el proceso no utiliza CPU, este valor es reducido por el scheduler dividindolo por 2. Valores grandes indican un proceso con uso intensivo de CPU y resultan con menor prioridad mientras que valores pequeos indican un proceso con uso intensivo de I/O y por lo tanto con una prioridad ms favorable. En el siguiente ejemplo, tctestprog es un programa con uso intensivo de CPU. Otro aspecto del comando ps es el ordenamiento de la salida. En este ejemplo, por medio de los comando sort la salida es ordenada segn la tercer columna, con los valores mas grandes al principio, y muestra slo las primeras cinco lneas de la salida (comando head).
# ps -ef | sort +3 -r |head -n 5 UID PID PPID C STIME TTY TIME CMD

Pgina 95 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

root 22656 27028 101 root 14718 24618 5 root 4170 1 3 root 21442 24618 2

15:18:31 15:26:15 Jun 15 15:26:15

pts/11 pts/17 pts/17

7:43 0:00 12:00 0:00

./tctestprog ps -ef /usr/sbin/syncd 60 sort +3 -r

Del ejemplo previo, se puede determinar que el proceso tctestprog es el que utiliza ms CPU, teniendo en cuenta el valor 101 en la columna C. La siguiente salida del vmstat muestra que la CPU es utilizada cerca de un 25 por ciento por procesos usr:
# vmstat 2 3 kthr memory page faults ----- ----------- ------------------------ ------------r b avm fre re pi po fr sr cy in sy cs 0 0 26468 51691 0 0 0 0 0 0 100 91 6 1 1 26468 51691 0 0 0 0 0 0 415 35918 237 1 1 26468 51691 0 0 0 0 0 0 405 70 26

cpu ----------us sy id wa 47 0 53 0 26 2 71 0 25 0 75 0

b. La columna TIME La columna TIME en la salida del comando ps es generada por todos los flags, y muestra el tiempo total de ejecucin para cada proceso. En este clculo no se tiene en cuenta cuando se inici el proceso, como se ve en el siguiente ejemplo. El mismo programa es utilizado nuevamente, y an cuando la columna C muestra que el proceso tomo mucho tiempo de CPU, no es el proceso con valor ms alto en la columna TIME:
# ps -ef | sort +3 -r |head -n 5 UID PID PPID C STIME root 18802 27028 120 15:40:28 root 9298 24618 3 15:41:38 root 15782 24618 2 15:41:38 root 24618 26172 2 Jun 21 TTY pts/11 pts/17 pts/17 pts/17 TIME CMD 1:10 ./tctestprog 0:00 ps -ef 0:00 head -n 5 0:03 ksh

# ps -e |head -n 1 ; ps -e|egrep -v "TIME|0:"|sort +2b -3 -n -r|head -n 10 PID TTY TIME CMD 4170 - 12:01 syncd 4460 2:07 X 3398 1:48 dtsession 18802 pts/11 1:14 tctestprog

El syncd, X, y dtsession son procesos que fueron activados en el IPL; es por eso que tienen tanto tiempo acumulado en la columna TIME. Esto no implica que sean procesos con uso intensivo de CPU.

c. La columna %CPU La columna %CPU en la salida del comando ps, es generada por los flags u o v. Muestra el portentaje de tiempo de CPU que el proceso utiliz desde que inici. El valor es calculado dividiendo el tiempo de CPU que el proceso utiliz, por el tiempo transcurrido desde que inici. En un entorno de multi-procesador, el valor es tambin dividido por la cantidad de CPUs disponibles, porque varios threads en el mismo proceso pueden correr en diferentes CPUs al mismo tiempo. Como la base de tiempo sobre la que estos datos son calculados vara, la suma de todos los campos %CPU pueden exceder un cien por ciento. En el siguiente ejemplo, vemos dos formas de ordenar la salida. El primer caso se incluyen los procesos kproc, por ejemplo, PID 516, que es un proceso wait. El otro, con una sintaxis ms compleja, excluye dichos kproc: Pgina 96 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# ps auxwww |head -n 5 USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND root 18802 25.0 1.0 4140 4160 pts/11 A 15:40:28 5:44 ./tctestprog root 516 25.0 5.0 8 15136 - A Jun 15 17246:34 kproc root 774 20.6 5.0 8 15136 - A Jun 15 14210:30 kproc root 1290 5.9 5.0 8 15136 - A Jun 15 4077:38 kproc # ps gu|head -n1; ps gu|egrep -v "CPU|kproc"|sort +2b -3 -n USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME root 18802 25.0 1.0 4140 4160 pts/11 A 15:40:28 7:11 imnadm 12900 0.0 0.0 264 332 - A Jun 15 0:00 root 0 0.0 5.0 12 15140 - A Jun 15 4:11 root 1 0.0 0.0 692 764 - A Jun 15 0:28 root 3398 0.0 1.0 1692 2032 - A Jun 15 1:48 -r |head -n 5 COMMAND ./tctestprog /usr/IMNSearch/ht swapper /etc/init /usr/dt/bin/dtses

De esta salida, se puede determinar que el programa tctestprog, desde que se inici, utiliz un 25 por ciento de los recursos de CPU.

4.2.3.2 Uso del comando ps para estudiar la utilizacin de memoria El comando ps puede proveer adems informacin muy til sobre la utilizacin de memoria. En la siguiente tabla se muestran las columnas de la salida ms tiles. Columna SIZE Valor El tamao virtual de la seccin de datos del proceso en unidades de 1 KB. El tamao del proceso en la memoria real, en unidades de 1 KB. El porcentaje de memoria real utilizada por el proceso

RSS %MEM

a. La columna SIZE El flag v genera la columna SIZE. Este es el tamao virtual (en el espacio de paginado), en kilobytes, de la seccin de datos del proceso (mostrado como SZ por otros flags). Este valor es igual al total de pginas de segmentos de trabajo de los procesos, multiplicado por cuatro. Si varias pginas de segmentos de trabajo son enviadas al espacio de paginado, el nmero resultante ser mas grande que la cantidad de memoria real utilizada. SIZE incluye pginas en el segmento privado y en el segmento de datos de libreras compartidas del proceso, como en el siguiente ejemplo:
# ps av |sort +5 -r |head -n 5 PID TTY STAT TIME PGIN SIZE 25298 pts/10 A 0:00 0 2924 13160 lft0 A 0:00 17 368 27028 pts/11 A 0:00 90 292 24618 pts/17 A 0:04 318 292

RSS 12 72 416 408

LIM TSIZ TRS %CPU %MEM COMMAND 32768 159 0 0.0 0.0 smitty 32768 40 60 0.0 0.0 /usr/sbin 32768 198 232 0.0 1.0 ksh 32768 198 232 0.0 1.0 ksh

b. La columna RSS

Pgina 97 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El flag v tambin produce la columna RSS, como se ve en el ejemplo anterior. Es el tamao en kilobytes de memoria real (residente) del proceso. Este nmero es igual a sumar las pginas de memoria de los segmentos de trabajo y los segmentos de cdigo multiplicado por cuatro. Se debe recordar que las pginas de memoria de los segmentos de cdigo son compartidas por todas las instancias del programa en ejecucin. Es decir, si por ejemplo, tenemos 26 procesos ksh corriendo, slo una copia del programa ejecutable ksh estar en memoria, pero el comando ps reportar el tamao de ese segmento de cdigo como parte del RSS de cada instancia del programa ksh. Si se quiere ordenar la salida segn los valores de la columna RSS, se puede hacer lo siguiente:
# ps av |sort +6 -r |head -n 5 PID TTY STAT TIME PGIN SIZE 21720 pts/1 A 0:00 1 288 27028 pts/11 A 0:00 90 292 24618 pts/17 A 0:04 318 292 15698 pts/1 A 0:00 0 196 RSS 568 416 408 292 LIM TSIZ 32768 198 32768 198 32768 198 32768 52 TRS %CPU %MEM COMMAND 232 0.0 1.0 ksh 232 0.0 1.0 ksh 232 0.0 1.0 ksh 60 0.0 0.0 ps av

c. La columna %MEM La columna %MEM es generada por los flags u y v. Es calculada como la suma de pginas de memoria de los segmentos de trabajo y los segmentos de cdigo (es decir, el valor RSS) dividido por el tamao de la memoria real de la mquina en KB, multiplicado por 100, y redondeado al nmero entero ms cercano. Este valor intenta dar a conocer el porcentaje de memoria real utilizada por el proceso. Desafortunadamente, y tal como el RSS, tiene a exagerar el consumo de un proceso que comparte texto del programa con otros procesos. El redondeo provoca que todos los procesos que tengan valores debajo de un 0.005 se muestren con un valor de %MEM de 0.0. El siguiente es un ejemplo de la columna %MEM del comando ps:
# ps au |head -n 1; ps au |egrep -v "RSS"|sort +3 -r |head -n 5 USER root root root root root PID %CPU %MEM SZ RSS TTY STAT STIME 22750 0.0 21.0 20752 20812 pts/11 A 17:55:51 21720 0.0 1.0 484 568 pts/1 A 17:16:14 25298 0.0 0.0 3080 12 pts/10 A Jun 16 27028 0.0 0.0 488 416 pts/11 A 14:53:27 24618 0.0 0.0 488 408 pts/17 A Jun 21 TIME 0:00 0:00 0:00 0:00 0:04 COMMAND ./tctestprog2 ksh smitty ksh ksh

Se pueden combinar todas las columnas en una salida, utilizando los flags gv. Por ejemplo:
# ps gv|head -n 1; ps gv|egrep -v "RSS" | sort +6b -7 -n -r |head -n 5 PID TTY STAT 15674 pts/11 A 22742 pts/11 A 10256 pts/1 A 2064 - A 1806 - A TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND 0:01 0 36108 6172 32768 5 24 0.6 24.0 ./tctestp 0:00 0 20748 20812 32768 5 24 0.0 14.0 ./backups 0:00 0 15628 15692 32768 5 24 0.0 11.0 ./tctestp 2:13 5 64 6448 xx 0 6392 0.0 4.0 kproc 0:20 0 16 6408 xx 0 6392 0.0 4.0 kproc

En la siguiente lista, se explican otras columnas de los ejemplos previos: PGIN El nmero de page-ins causado por page faults. Dado que todas las operaciones de I/O son clasificadas como page faults por el comando ps este es un indicador de volumen de I/O. TSIZ El tamao de la imagen del texto (programa compartido). Este es el tamao de la seccin de texto de un archivo ejecutable. Las pginas de la seccin de texto de un programa ejecutable son llevadas a memoria cuando son tocadas, es decir, cuando son ramificadas o cargadas. Este Pgina 98 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

nmero representa slo un lmite superior de la cantidad de texto que puede ser cargado. El valor TSIZ no refleja la utilizacin actual de memoria. Adems, el TSIZ puede obtenerse ejecutando el comando dump -ov contra el programa ejecutable (por ejemplo, dump -ov /usr/bin/ls). TRS El tamao del conjunto de texto residente (memoria real). Este es el nmero de pginas de segmentos de cdigo multiplicado por cuatro. Este nmero exagera la memoria usada por programas donde corren mltiples instancias. El valor TRS puede ser mayor que el valor TSIZ, dado que otras pginas pueden estar incluidas en el segmento de cdigo, como el encabezado XCOFF y la seccin del loader.

4.2.4 El comando tprof


En esta seccin se vern los siguientes temas: El uso de tprof para estudios generales de rendimiento de CPU El uso de tprof en un programa de usuario

4.2.4.1 Usando el reporte general del tprof En el sistema operativo AIX, una interrupcin ocurre peridicamente para permitir que corra una rutina del kernel del tipo housekeeping (preventiva). Esto ocurre cien veces por segundo. Cuando es invocado, el comando tprof cuenta cada una de esas interrupciones como un tick. Esta rutina del kernel graba el ID del proceso y la direccin de la instruccin en ejecucin cuando ocurre la interrupcin, para ser usados por el comando tprof. El comando tprof registra adems si el contador de procesos est en el espacio de direcciones del kernel, del usuario o de libreras compartidas. Siempre se produce un reporte ASCII con el sufijo .all. Si no se especifica un programa, el reporte es denominado __prof.all. Si un programa es especificado, el reporte es denominado __<programa>.all. Este reporte contiene una estimacin de la cantidad de CPU utilizada en cada proceso que fue ejecutado mientras el tprof monitoreaba el sistema. Tambin contiene una estimacin de la cantidad de CPU utilizada en cada uno de los tres espacios de direcciones y la cantidad de tiempo en que la CPU estuvo idle. Los archivos que contienen los reportes son generados en el directorio de trabajo. Todos los archivos creados por el comando tprof tiene como prefijo __ (dos lneas de subrayado). En el siguiente ejemplo es generado un reporte genrico:
# tprof -x sleep 30 Starting Trace now Starting sleep 30 Wed Jun 28 14:58:58 2000 System: AIX server3 Node: 4 Machine: 000BC6DD4C00 Trace is done now 30.907 secs in measured interval * Samples from __trc_rpt2 * Reached second section of __trc_rpt2

En este caso, el parmetro sleep 30 indica que el comando tprof debe correr durante 30 segndos. La columna Total en el __prof.all es til. La primera seccin indica el uso de ticks por proceso.
Process PID TID Total Kernel User Shared Other

Pgina 99 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

======= wait tctestprg tctestprg wait wait swapper prof trace syncd tprof gil gil trace sh sleep ======= Total

=== 516 14746 13730 1032 1290 0 14156 16000 3158 5236 2064 2064 15536 14002 14002 ===

=== 517 13783 17293 1033 1291 3 5443 14269 4735 16061 2839 3097 14847 16905 16905 ===

===== 3237 3207 3195 3105 138 10 6 3 2 2 1 1 1 1 1 ===== 12910

====== 3237 1 0 3105 138 7 3 3 2 2 1 1 1 1 1 ====== 6503

==== ====== 0 0 3206 0 3195 0 0 0 0 0 3 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==== ====== 6407 0

===== 0 0 0 0 0 0 0 0 0 0 0 0 0 ===== 0

Dado que cada tick es 1/100 de segundo, 30 segundos requieren un total de 3000 ticks. Sin embargo, observando la salida, hay ms de 12000 ticks en total. El resultado depende del hardware; en este caso, un F50 de cuatro procesadores, entonces los ticks disponibles son calculados de la siguiente manera: Tiempo (en segundos) x Nmero de CPUs x 100 En la salida anterior, se puede determinar que los dos procesos tctestprg utilizan cerca de 3200 ticks cada unos, aproximadamente un 25 por ciento del total de ticks disponibles. Esto es confirmado con la salida de ps auxwww:
# ps auxwww USER PID %CPU %MEM SZ root 14020 25.0 0.0 300 root 12280 25.0 0.0 300 RSS TTY STAT STIME 320 pts/1 A 15:23:55 320 pts/1 A 15:23:57 TIME 16:45 16:43 COMMAND ./tctestprg ./tctestprg

En la segunda seccin del reporte general del comando tproc, se muestra la cantidad total de ticks utilizados por un tipo especfico de proceso. En esta seccin, la columna Total muestra la cantidad de ticks utilizados por tipo de proceso, y la columna FREQ la cantidad de procesos para cada tipo de proceso.
Process ======= wait tctestprg swapper tprof trace gil syncd sh sleep ======= Total FREQ Total Kernel User Shared Other === ===== ====== ==== ====== ===== 3 6480 6480 0 0 0 2 6402 1 6401 0 0 1 10 7 3 0 0 2 8 5 3 0 0 2 4 4 0 0 0 2 2 2 0 0 0 1 2 2 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 === ===== ====== ==== ====== ===== 15 12910 6503 6407 0 0

4.2.4.2 Utilizando el tprof en un programa El comando tprof es tambin una herramienta muy til para programas escritos en C, C++, o FORTRAN que tuvieran gran consumo de CPU. Identifica las secciones de un programa que Pgina 100 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

tengan un mayor uso de CPU. El comando tprof ejecuta un programa, y luego produce una serie de archivos con reportes. Los reportes estn divididos hasta un nivel de sub-rutinas. El siguiente es un ejemplo bsico; hay muchas ms posibilidades mas all de este ejemplo.
# tprof ./tctestprg Starting Trace now Starting ./tctestprg Wed Jun 28 15:57:35 2000 System: AIX server3 Node: 4 Machine: 000BC6DD4C00 Trace is done now 23.258 secs in measured interval * Samples from __trc_rpt2 * Reached second section of __trc_rpt2 (The tctestprg process was manually killed)

El archivo de salida es llamado __tctestprg.all, y la salida es restringida al proceso provisto como argumento del comando. La primera seccin es la misma que la de los reportes generales. Sin embargo, slo muestra un solo proceso.
# more __tctestprg.all Process PID TID ======= === === ./tctestprg 16276 16081 ======= === === Total Total Kernel ===== ====== 2156 0 ===== ====== 2156 0 User ==== 2156 ==== 2156 Shared ====== 0 ====== 0 Other ===== 0 ===== 0

La segunda seccin es un reporte trivial de un solo proceso.


Process ======= ./tctestprg ======= Total FREQ === 1 === 1 Total ===== 21 ===== 2156 Kernel ====== 0 ====== 0 User ==== 2156 ==== 2156 Shared ====== 0 ====== 0 Other ===== 0 ===== 0

La tercera seccin provee informacin sobre las subrutinas utilizadas en el proceso especificado, y muestra informacin sobre las reas que necesitan algn ajuste u optimizacin.
Total Ticks For ./tctestprg (USER) = 2156 Subroutine Ticks % ============= ===== ==== .main 1368 14.5 .casework 788 8.4 Source ======== case.c case.c Address ======== 10000318 10000364 Bytes ====== 4c 54

4.2.5 El comando svmon


El comando svmon es utilizado para mostrar informacin relativa al estado actual de la memoria. A pesar de que es un comando complicado, se debe entender en qu puede ser til a la hora de realizar un monitoreo de rendimiento. El comando svmon genera siete tipos de reporte: Global Usuario Proceso Segmento Segmento detallado Comando Clase Workload Manager Pgina 101 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Para correr cada uno de estos reportes, debe ser usado un flag indicador del reporte. Con la excepcin de los reportes de svmon -G y svmon -D, las otras opciones de reportes utilizan los mismos flags con un uso similar. En las siguientes secciones veremos un ejemplo del comando y la salida generada. Esta no es una lista exhaustiva de funciones; en realidad es una corta demostracin de la versatilidad del comando svmon.

4.2.5.1 El reporte global del svmon El reporte global es generado cuando se especifica el flag G. El comando svmon -G tiene la siguiente sintaxis:
svmon -G [ -i Intervalo [ NumIntervalos]] [ -z ]

Corriendo el comando svmon -G se genera la siguiente salida:


# svmon -G memory pg space pin in use size 131063 131072 work 6816 21791 inuse 119922 305 pers 0 98131 FREE pin 11141 6807 clnt 0 0 virtual 15924

El comando svmon -G con un intervalo y un nmero de intervalos, y con el flag z para obtener la memoria mxima asignada, genera la siguiente salida:
# svmon -G -i1 5 -z memory pg space pin in use memory pg space pin in use memory pg space pin in use memory pg space pin size 131063 131072 work 6820 21950 size 131063 131072 work 6820 21954 size 131063 131072 work 6820 21954 size 131063 131072 work 6820 inuse 125037 305 pers 0 103087 inuse 125847 305 pers 0 103893 inuse 126769 305 pers 0 104815 inuse 127890 305 pers 0 FREE pin 6026 6811 clnt 0 0 FREE pin 5216 6811 clnt 0 0 FREE pin 4294 6811 clnt 0 0 FREE pin 3173 6811 clnt 0 virtual 15949 virtual 15949 virtual 15949 virtual 15948

Pgina 102 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

in use memory pg space pin in use

21954 size 131063 131072 work 6820 21954

105936 inuse 129092 305 pers 0 107138

0 FREE pin 1971 6811 clnt 0 0 virtual 15949

Maximum memory allocated = 432

En el ejemplo previo, cada encabezamiento tiene el siguiente significado: memory Especifica estadsticas que describen el uso de la memoria real, incluyendo: - size - inuse - FREE - pin - virtual - stolen Nmero de frames de memoria real (tamao de la memoria real) Nmero de frames que contienen pginas Nmero de frames libres Nmero de frames que contienen pginas pinned Nmero de pginas asignadas en el espacio virtual del sistema Nmero de frames tomados por el rmss y marcados como no utilizables por el VMM

pg space

Especifica estadsticas que describen el uso del espacio de paginado. Estos datos son generados slo si el flag -r no es utilizado: - size - inuse Tamao del espacio de paginado Nmero de pginas en uso en el espacio de paginado

pin

Especifica estadsticas sobre el subconjunto de la memoria real que contiene pginas pinned, incluyendo: - work - pers - clnt Nmero de frames que contienen pginas pinned de segmentos de trabajo Nmero de frames que contienen pginas pinned de segmentos persistentes Nmero de frames que contienen pginas pinned de segmentos cliente

in use

Especifica estadsticas sobre el subconjunto de la memoria real en uso, incluyendo: - work - pers - clnt Nmero de frames que contienen pginas de segmentos de trabajo Nmero de frames que contienen pginas de segmentos persistentes Nmero de frames que contienen pginas de segmentos cliente

4.2.5.2 El reporte de usuario del svmon El reporte de usuario es generado cuando se utiliza el flag -U. El comando svmon -U tiene la siguiente sintaxis:

Pgina 103 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

svmon -U [ lognm1...lognmN] [ -n | -s ] [ -w | -f | -c ] [ -t Nmero ] [ -u | -p | -g | -v ] [ -i Intervalo [ NumIntervalos]] [ -l ] [ -d ] [ -z ] [ -m ]

El svmon -U sin otras opciones produce una salida similar a la siguiente:


# svmon -U =============================================================================== User root Inuse Pin Pgsp Virtual 18447 1327 175 7899 ............................................................................... SYSTEM segments Inuse Pin Pgsp Virtual 3816 1269 175 3535 Vsid 0 9352 220 7a0f 502a Esid Type Description 0 work kernel seg work work work work Inuse 3792 12 6 4 2 Pin Pgsp Virtual Addr Range 1265 175 3511 0..32767 165475..65535 1 0 12 0..49746 1 0 6 0..49746 1 0 4 0..49746 1 0 2 0..49746

............................................................................... EXCLUSIVE segments Inuse Pin Pgsp Virtual 12551 58 0 3891 Vsid 7162 ... 2b65 1369 1b63 5b4b 1b43 e6ff 3326 2ee6 ea9d d67b 5668 466a d21a a41 aa15 f1fe e9fd c9f9 b9f7 a1f4 3a07 2a05 59eb e9bd Esid Type Description - pers /dev/lv00:17 1 1 1 1 1 1 1 1 1 1 1 pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers pers /dev/hd4:4294 /dev/hd3:32 code,/dev/hd2:4536 code,/dev/hd2:10545 /dev/hd2:32545 0 /dev/hd4:732 code,/dev/hd2:10553 /dev/hd2:14469 0 /dev/hd2:39225 0 /dev/hd2:32715 0 /dev/hd2:98694 0 code,/dev/hd2:98696 code,/dev/hd2:10679 /dev/hd2:32224 0 code,/dev/hd2:10673 /dev/hd2:10310 0 /dev/hd2:10309 0 /dev/hd2:32705 0 code,/dev/hd2:10734 code,/dev/hd2:10765 code,/dev/hd2:10684 code,/dev/hd2:10718 /dev/hd2:32701 0 code,/dev/hd2:4123 Inuse 6625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Pin Pgsp Virtual Addr Range 0 - 0..100987 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0..1 - 0..2 - 0..14 - 0..3 - 0..9 0..0 - 0..4 - 0..0 - 0..0 - 0..4 - 0..1 - 0..0 - 0..4 - 0..21 - 0..1

0..15 0..10 0..7 0..170 0..128

... =============================================================================== User guest Inuse Pin Pgsp Virtual 0 0 0 0 =============================================================================== User nobody Inuse Pin Pgsp Virtual 0 0 0 0 =============================================================================== User lpd Inuse Pin Pgsp Virtual 0 0 0 0 =============================================================================== User nuucp Inuse Pin Pgsp Virtual 0 0 0 0 =============================================================================== User ipsec Inuse Pin Pgsp Virtual

Pgina 104 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

0 0 0 0 =============================================================================== User netinst Inuse Pin Pgsp Virtual 0 0 0 0

Para chequear la utilizacin de un usuario en particular, as como el total de memoria asignada, utilice el siguiente comando:
# svmon -U root -z =============================================================================== User root Inuse Pin Pgsp Virtual 10980 1322 175 7913 ............................................................................... SYSTEM segments Inuse Pin Pgsp Virtual 3816 1269 175 3535 Vsid 0 9352 220 7a0f 502a Esid Type Description 0 work kernel seg work work work work Inuse 3792 12 6 4 2 Pin Pgsp Virtual Addr Range 1265 175 3511 0..32767 : 65475..65535 1 0 12 0..49746 1 0 6 0..49746 1 0 4 0..49746 1 0 2 0..49746

............................................................................... EXCLUSIVE segments Inuse Pin Pgsp Virtual 5024 53 0 3905 Vsid 1be3 ... d9fb c9f9 a1f4 3a07 2a05 d9bb c955 4168 2965 694d 514a 30a6 4088 dbfb Esid Type Description 2 work process private 1 1 1 1 pers pers pers pers pers pers pers pers pers pers pers pers pers pers /dev/hd9var:86 0 /dev/hd2:32705 0 code,/dev/hd2:10765 code,/dev/hd2:10684 code,/dev/hd2:10718 code,/dev/hd2:4379 /dev/hd3:33 /dev/hd2:20485 0 /dev/hd2:20486 0 /dev/hd9var:2079 /dev/hd9var:2078 /dev/hd9var:2048 /dev/hd2:4098 /dev/hd3:21 Inuse 580 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Pin Pgsp Virtual Addr Range 8 0 579 0..675 : 0 0 0 0 0 0 0 0 0 0 - 0..0 - 0..7 0..0 0..0 0..0 0..1 - 0..0 - 0..3 0..10 0..7 0..170 0..20 0..5

............................................................................... SHARED segments Inuse Pin Pgsp Virtual 2140 0 0 473 Vsid Esid Type Description 8811 d work shared library text e03c 1 pers code,/dev/hd2:4204 2865 - pers /dev/hd2:32343 2 Maximum memory allocated = 21473 Inuse 2080 58 0 Pin Pgsp Virtual Addr Range 0 0 473 0..65535 0 - 0..58 - 0..1

Los encabezamientos tienen el siguiente significado: User Inuse Pin Indica el nombre del usuario. Indica la cantidad de pginas de memoria real que son utilizadas por el usuario. Indica la cantidad de pginas pinned en segmentos que son utilizados por el usuario. Pgina 105 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Pgsp Virtual

Indica la cantidad de pginas reservadas o utilizadas en el espacio de paginado por segmentos que son utilizados por el usuario. Indica la cantidad de pginas asignadas en el espacio virtual del proceso.

Despus de mostrar los encabezamientos, el svmon muestra (si el flag -d es especificado) informacin sobre todos los procesos que son ejecutados por el usuario especificado. Slo contiene los encabezamientos de la columna de los procesos, como se describe en el reporte de procesos. El svmon muestra informacin sobre los segmentos usados por esos procesos. Este conjunto de segmentos es separado en tres categoras. 1. Los segmentos que son marcados como segmentos del sistema, que son compartidos por todos los procesos. 2. Los segmentos que son nicamente usados por el conjunto de procesos 3. Los segmentos que son compartidos entre varios usuarios Si el flag -l es especificado, entonces muestra para cada segmento en la ltima categora, la lista de identificadores de procesos que utiliza el segmento. Tambin muestra el usuario que ejecuta el identificador de proceso.

4.2.5.3 El reporte de procesos del svmon El reporte de procesos es generado cuando se especifica el flag -P. La sintaxis del comando svmon -P es la siguiente:
svmon [-P [pid1...pidn] [ -u | -p | -g | -v ] [ -n | -s ] [ -w | -f | -c] [ -t Nmero ] [ -i Intervalo [ NumIntervalos ] ] [ -l ] [ -z ] [ -m ] ]

El reporte de procesos generado por el comando svmon -P tiene una salida similar a la siguiente:
# svmon -P | pg ------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 11126 backbyname 32698 1266 175 4114 N N Vsid 7162 0 8811 c373 4823 2969 cdb7 6d28 5920 Esid Type Description - pers /dev/lv00:17 0 work kernel seg d work shared library text - pers /dev/hd3:2061 2 work process private f 3 1 work pers pers pers shared library data shmat/mmap,/dev/hd2: code,/dev/hd2:10334 /dev/hd2:32166 1 Inuse 26650 3790 2030 134 48 22 16 7 0 Pin Pgsp Virtual Addr Range 0 - 0..100362 1265 175 3509 0..32767 : 65475..65535 0 0 540 0..65535 0 - 0..133 1 0 48 0..47 : 65310..65535 0 0 17 0..749 0 - 0..16 0 - 0..6 - 0..0

-----------------------------------------------------------------------------... ------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 3452 telnetd 6001 1266 175 4214 N N Vsid 0 Esid Type Description 0 work kernel seg Inuse 3790 Pin Pgsp Virtual Addr Range 1265 175 3509 0..32767 :

Pgina 106 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

8811 3f24 fa3f d67b 3406 9c13

d work shared library text 2 work process private f 3 1 work pers work pers shared library data /dev/hd2:32715 1 shmat/mmap code,/dev/hd2:10763

2030 106 73 0 1 0 -

0 1 0 0 0

65475..65535 540 0..65535 106 0..96 : 65306..65535 0 58 0..640 - 0..0 0 1 0..0 - 0..101 0 0

------------------------------------------------------------------------------... ------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 6968 rtcmd 3794 1266 175 3513 N N Vsid 0 6a0d Esid Type Description 0 work kernel seg 2 work process private Inuse 3790 4 Pin Pgsp Virtual Addr Range 1265 175 3509 0..32767 : 65475..65535 1 0 4 65314..65535

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 516 wait 3792 1266 175 3511 N N Vsid 0 8010 Esid Type Description 0 work kernel seg 2 work process private Inuse 3790 2 Pin Pgsp Virtual Addr Range 1265 175 3509 0..32767 : 65475..65535 1 0 2 65339..65535

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 0 3 1 0 3 N N Vsid 780f Esid Type Description 2 work process private Inuse 3 Pin Pgsp Virtual Addr Range 1 0 3 65338..65535

El comando svmon -P puede ser utilizado de la siguiente manera, para determinar los diez procesos que ms memoria utilizan, ordenados en forma decreciente, por el total de pginas reservadas o que estn siendo utilizadas:
# svmon -Pv -t 10 | pg ------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 10294 X 6579 1275 175 4642 N N Vsid 0 1be3 8811 f3fe 4c09 2be5 472b 2647 e15c 4168 2965 694d 514a 9092 dbfb ... Vsid 0 Esid Type Description 0 work kernel seg 2 work process private d f 3 1 work work work work work work pers pers pers pers pers pers pers shared library text shared library data shmat/mmap code,/dev/hd2:18475 /dev/hd2:20485 0 /dev/hd2:20486 0 /dev/hd9var:2079 /dev/hd9var:2078 /dev/hd4:2 /dev/hd3:21 Inuse 3792 580 2080 54 32 4 2 2 32 0 0 0 0 1 0 Inuse 3792 Pin Pgsp Virtual Addr Range 1265 175 3511 0..32767 : 65475..65535 8 0 579 0..675 : 65309..65535 0 0 473 0..65535 0 0 39 0..310 0 0 32 0..32783 2 0 4 0..32767 0 0 2 0..32768 0 0 2 0..32768 0 - 0..706 - 0..0 - 0..7 0 - 0..0 0 - 0..0 0 - 0..0 0 Pin Pgsp Virtual Addr Range 1265 175 3511 0..32767 : 65475..65535

Esid Type Description 0 work kernel seg

Pgina 107 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

8811 500a 20 b156 d81b

d work shared library text 2 work process private f work shared library data - pers /dev/hd4:4286 1 pers code,/dev/hd2:10393

2080 122 57 1 9

0 1 0 0 0

0 0 0 -

473 0..65535 122 0..122 : 65306..65535 43 0..425 - 0..0 - 0..8

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 5682 sendmail: a 6081 1266 175 4136 N N Vsid 0 8811 51ea 29e5 71ee 59eb Esid Type Description 0 work kernel seg 3792 Inuse Pin Pgsp Virtual Addr Range 1265 175 3511 0..32767 : 65475..65535 2080 0 0 473 0..65535 107 1 0 106 0..103 : 65308..65535 60 0 0 46 0..417 38 0 - 0..106 0 - 0..9

d work shared library text 2 work process private f work shared library data 1 pers code,/dev/hd2:10755 - pers /dev/hd2:32701 4

Los encabezamientos tienen el siguiente significado: Pid Command Inuse Indica el ID del proceso. Indica el comando que corre el proceso. Indica la cantidad de pginas en memoria real de segmentos que son utilizados por el proceso. Indica el total de pginas pinned de segmentos que son utilizados por el proceso. Indica el total de pginas en el espacio de paginado usadas por segmentos que son usados por el proceso. El nmero es reportado slo si no se usa el flag -r. Indica el nmero de pginas asignadas en el espacio virtual del proceso. Indica si el proceso es un proceso de 64-bits (Y) o un proceso de 32-bits (N). Indica si el proceso es multi-thread (Y) o no (N).

Pin Pgsp

Virtual 64-bit Mthrd

4.2.5.4 El reporte de segmentos del svmon El reporte de segmentos es impreso cuando se especifica el flag -S. El comando svmon -S tiene la siguiente sintaxis:
svmon [-S [sid1...sidn] [ -u | -p | -g | -v ] [ -n | -s ] [ -w | -f | -c ] [ -t Nmero ] [ -i Intervalo [NumIntervalos ] ] [ -l ] [ -z ] [ -m ] ]

El comando svmon -S produce la siguiente salida:


# svmon -S Vsid 7162 680d 0 82b0 Esid Type Description - pers /dev/lv00:17 - work misc kernel tables - work kernel seg - pers /dev/hd2:26992 2390 Inuse 7638 3819 3792 0 Pin Pgsp Virtual Addr Range 0 - 0..100362 0 0 3819 0..17054 : 63488..65535 1265 175 3511 0..32767 : 65475..65535 - 0..2389

Pgina 108 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

8811 ... 6be5 67e6 8fdc 7be1 87de

- work pers pers pers pers pers /dev/hd2:153907 /dev/hd2:47135 /dev/hd2:22746 /dev/hd2:53296 /dev/hd2:69859

2080

0 0 0 0 0 0

0 0 -

473 0..65535 - 0..2 0..1 0..0 0..12 0..0

0 0 0 0

Para verificar el uso de memoria de los cinco segmentos de trabajo que utilizan ms cantidad de pginas virtuales, se utiliza el siguiente comando:
# svmon -S -t 5 -w -v Vsid 680d 0 700e 37ad a8a Esid Type Description - work misc kernel tables - work kernel seg - work kernel pinned heap - work - work Inuse 4197 3797 1919 770 770 Pin Pgsp Virtual Addr Range 0 0 4197 0..17064 : 63488..65535 1270 175 3516 0..32767 : 65475..65535 624 0 1920 0..65535 1 0 770 0..764 : 65313..65535 1 0 770 0..927 : 65250..65535

Para mostrar estadsticas del uso de memoria de segmentos, ordenadas por la cantidad de bloques de espacio de paginado reservado:
# svmon -S 680d 700e -g Vsid 700e 680d Esid Type Description - work kernel pinned heap - work misc kernel tables Inuse 1919 4197 Pin Pgsp Virtual Addr Range 624 0 1920 0..65535 0 0 4197 0..17064 : 63488..65535

Los encabezamientos tienen el siguiente significado: Vsid Esid Indica el ID del segmento virtual. Identifica un nico segmento en el VMM. Indica el ID del segmento efectivo. Cuando es provisto, indica como es usado el segmento por el proceso. Si el segmento VSID es mapeado por varios procesos, pero con diferentes valores de ESID, entonces este campo contiene un -. En ese caso, el valor exacto de ESID puede obtenerse a travs de la opcin -P aplicada en cada identificador de proceso que utilice el segmento. Identifica el tipo de segmento: pers indica un segmento persistente, work indica un segmento de trabajo, clnt un segmento cliente, map indica un segmento mapeado, y rmap indica un segmento mapeado de memoria real. Especifica una descripcin textual del segmento. El valor de esta columna depende del tipo de segmento. Si el segmento es un segmento persistente y no est asociado con un log, entonces muestra el nombre del dispositivo y el nmero de i-nodo del archivo asociado, separado por dos puntos. (El nombre del dispositivo y el i-nodo puede ser traducidos a un nombre de archivo con el comando ncheck.) Si el segmento es el segmento primario de un archivo grande, entonces las palabras large file son anexadas a la descripcin. Si el segmento es un segmento persistente y es asociados con un log, entonces muestra la palabra log. Si el segmento es un segmento de trabajo entonces el comando svmon intenta determinar el rol del segPgina 109 de 283

Type

Description

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

mento. Por ejemplo, segmentos de trabajo especiales, tales como el kernel y libreras compartidas, son reconocidas por el comando svmon. Si el segmento es el segmento de datos privado de un proceso, entonces se muestra private. Si el segmento es el segmento de cdigo de un proceso, y el reporte de segmento es generado en respuesta a un flag -P, entonces la palabra code es anexada a la descripcin. Si el segmento es mapeado por varios procesos y utilizado de diferentes formas (por ejemplo, el segmento privado de un proceso mapeado como segmento de memoria compartida por otro proceso), entonces la descripcin es vaca. La descripcin exacta puede ser obtenida a travs del flag -P aplicado en cada identificador de proceso que utilice el segmento. Si una descripcin de segmento es muy grande y no cabe dentro del espacio de descripcin, entonces es truncada. La parte truncada puede obtenerse a travs del flag -S (sin -l) en dicho segmento. Inuse Pin Pgsp Indica la cantidad de pginas en memoria real en este segmento. Indica la cantidad de pginas pinned en este segmento. Indica la cantidad de pginas utilizadas en el espacio de paginado por este segmento. Este campo es relevante slo para segmentos de trabajo. Indica la cantidad de pginas asignadas por el espacio virtual del segmento. (Slo para segmentos de trabajo). El VMM maneja este valor con fines estadsticos. No puede ser actualizado. Por lo tanto, el valor puede ser menor que los contadores inuse. Especifica el/los rango/s en que las pginas de segmentos fueron asignadas. El segmento de trabajo puede tener dos rangos, porque las pginas son asignadas comenzando por ambos extremos y avanzando hacia el medio. Si el flag -l est presente, se muestra la lista de identificadores de proceso que utiliza dicho segmento.

Virtual

Address Range

4.2.5.5 El reporte detallado de segmentos del svmon El flag -D es utilizado para obtener una lista ms detalla de un segmento. La sintaxis del comando svmon -D es la siguiente:
svmon [-D sid1...sidn [-b] [ -i Intervalo [ NmIntervalos] ] [ -z ] ]

Para mostrar los frames que pertenecen a un segmento el comando es como sigue:
# svmon -D 700e Segid: 700e Type: working Address Range: 0..65535 Size of page space allocation: 0 pages ( 0.0 Mb) Virtual: 1920 frames ( 7.5 Mb) Inuse: 1919 frames ( 7.5 Mb) Page 65471 65535 0 1 Frame 313 311 314 309 Pin Y N Y Y

Pgina 110 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2 3 4 5 6 7 8 9 10 ... 381 380 379 3335 3336 3337 3338 3339 3341 3342

308 305 296 299 294 297 292 295 290 81019 115074 80725 57367 59860 107421 114966 107433 95069 70192

Y Y Y Y Y Y Y Y Y N N N Y Y N N N Y Y

Para mostrar los frames que pertenecen a un segmento con el bit de estado de cada frame, se debe usar el siguiente comando:
# svmon -D 700e -b Segid: 700e Type: working Address Range: 0..65535 Size of page space allocation: 0 pages ( 0.0 Mb) Virtual: 1920 frames ( 7.5 Mb) Inuse: 1919 frames ( 7.5 Mb) Page Frame Pin Ref 65471 313 Y Y 65535 311 N N 0 314 Y N 1 309 Y N 2 308 Y Y 3 305 Y Y 4 296 Y N 5 299 Y N 6 294 Y N 7 297 Y N 8 292 Y N 9 295 Y N 10 290 Y N ... 381 81019 N N 380 115074 N N 379 80725 N N 3335 57367 Y N 3336 59860 Y N 3337 107421 N N 3338 114966 N N 3339 107433 N N 3341 95069 Y N 3342 70192 Y Y

Mod Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y

Este es el significado de los encabezamientos. Los encabezamientos segid, type, address range, size of page space allocation, virtual e inuse fueron explicados en el captulo anterior, El reporte de segmentos del svmon. Page Nmero de pgina relativo al espacio virtual. Este nmero de pgina puede ser mayor que el nmero de frames en un segmento (65532) si el espacio virtual es mayor que un segmento simple (archivo grande).

Pgina 111 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Frame Pin Ref Mod

Nmero de frame en la memoria real. Indica si el frame es pinned o no. Indica si el frame ha sido referenciado por un proceso (slo con la opcin -b). Indica si el frame ha sido modificado por un proceso (slo con la opcin -b).

4.2.5.6 El reporte de comandos del svmon El reporte de comandos provee un sumario del consumo de comandos especficos que se encuentren corriendo. El reporte de comandos es generado cuando se especifica el flag -C. La sintaxis del comando svmon -C es la siguiente:
svmon [-C cmd1...cmdn [ -u | -p | -g | -v ] [ -n | -s [ -w | -f | -c ] [ -t Nmero] [ -i Intervalo [ NmIntervalos ] ] [ -d ] [ -l ] [ -z ] [ -m ] ]

Para revisar el uso de memoria de comandos especficos, utilice el siguiente comando:


# svmon -C savevg ftp # pg /tmp/file =============================================================================== Command ftp Inuse Pin Pgsp Virtual 42104 1271 175 3966 ............................................................................... SYSTEM segments Inuse Pin Pgsp Virtual 3798 1270 175 3517 Vsid 0 Pin Pgsp Virtual Addr Range 1270 175 3517 0..32767 : 65475..65535 ............................................................................... EXCLUSIVE segments Inuse Pin Pgsp Virtual 36189 1 0 148 Vsid 985e 322a 22c 64e 1c88 Esid Type Description - pers /dev/lv00:17 2 work process private f work shared library data 1 pers code,/dev/hd2:4550 - pers /dev/hd2:32628 3 Inuse 35977 112 53 44 0 Pin Pgsp Virtual Addr Range 0 - 0..40307 1 0 109 0..83 : 65257..65535 0 0 39 0..849 0 - 0..57 - 0..2 Esid Type Description 0 work kernel seg Inuse 3798

............................................................................... SHARED segments Inuse Pin Pgsp Virtual 2117 0 0 301 Vsid 8811 Esid Type Description d work shared library text Inuse 2117 Pin Pgsp Virtual Addr Range 0 0 301 0..65535

=============================================================================== Command savevg Inuse Pin Pgsp Virtual savevg *** command does not exist ***

Si un comando no tiene un segmento de memoria, se mostrar un error, como en el ejemplo anterior. Para revisar un comando y mostrar las estadsticas de memoria de dicho comando, ingrese lo siguiente: Pgina 112 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# svmon -C ftp -d =============================================================================== Command ftp Inuse Pin Pgsp Virtual 46435 1266 175 3966 ------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 2728 ftp 46435 1266 175 3966 N N ............................................................................... SYSTEM segments Inuse Pin Pgsp Virtual 3798 1265 175 3517 Vsid 0 Esid Type Description 0 work kernel seg Inuse 3798 Pin Pgsp Virtual Addr Range 1265 175 3517 0..32767 : 65475..65535

............................................................................... EXCLUSIVE segments Inuse Pin Pgsp Virtual 40520 1 0 148 Vsid 985e 322a 22c 64e 1c88 Esid Type Description - pers /dev/lv00:17 2 work process private f work shared library data 1 pers code,/dev/hd2:4550 - pers /dev/hd2:32628 3 Inuse 40308 112 53 44 0 Pin Pgsp Virtual Addr Range 0 - 0..40307 1 0 109 0..83 : 65257..65535 0 0 39 0..849 0 - 0..57 - 0..2

............................................................................... SHARED segments Inuse Pin Pgsp Virtual 2117 0 0 301 Vsid 8811 Esid Type Description d work shared library text Inuse 2117 Pin Pgsp Virtual Addr Range 0 0 301 0..65535

Los encabezamientos tienen el siguiente significado: Command Inuse Indica el nombre del comando. Indica la cantidad de pginas en memoria real en segmentos que son usados por el comando (todos los procesos que corren el comando). Indica la cantidad de pginas pinned en segmentos que son usados por el comando (todos los procesos que corren el comando). Indica la cantidad de pginas reservadas o utilizadas en el espacio de paginado por segmentos que son usados por el comando. Indica la cantidad de pginas asignadas en el espacio virtual del comando. Despus de los encabezamientos, el svmon muestra (si es especificado el flag -d) informacin sobre los procesos que corren el comando especificado. Slo contiene el encabezamiento de los procesos, como se describen en un reporte de procesos. El svmon muestra informacin sobre los segmentos usados por esos procesos. Este conjunto de segmentos es separado en tres categoras: Los segmentos que son marcados como del sistema que son compartidos por todos los procesos Los segmentos que son slo usados por el conjunto de procesos. Los segmentos que estn compartidos por diferentes comandos. Si se especifica el flag -l, por cada segmento en la ltima categora, se muestra la lista de identificadores de proceso que usan el segmento. Tambin muestra el Pgina 113 de 283

Pin

Pgsp

Virtual

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

nombre del comando que el identificador de proceso corre. 4.2.5.7 El reporte de clase Workload Manager del svmon El reporte de clase Workload Manager es generado cuando el flag -W es especificado. El comando svmon -W tiene la siguiente sintaxis:
svmon [ -W [class1...classn] [ -u | -p | - g | -v ] [ -n | -s ] [ -w | -f | -c ] [ -t Nmero ] [ -i Intervalo [ NmIntervalos ] ] [ -l ] [ -z ] [ -m ] ] Nota

El comando svmon -W debe ejecutarse cuando el Workload Manager se encuentre iniciado. Para revisar las estadsticas de clase Workload Manager, ingrese el siguiente comando:
# svmon -W backup ========================================================================== Superclass Inuse Pin Pgsp Virtual backup 52833 10 0 50329 Vsid 6784 1aa18 14356 173f5 5347 c34e 1891a 14636 5327 1d83f 1e33c 10772 6a84 15457 38a1 126f0 11313 e50c b549 12e3 13351 14a16 12970 6904 a9c8 2320 1d39f 834a Esid Type work work pers pers work work work work work work work work work work work work pers work work work work work work work work pers pers pers Description Inuse 27989 21887 1250 1250 103 77 77 46 28 16 16 15 15 14 8 8 6 5 5 3 3 3 3 2 1 1 0 1 Pin 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 0 0 0 Pgsp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Virtual 28017 21887 101 77 77 37 20 18 13 13 13 14 8 8 5 5 3 3 0 5 2 3 -

/dev/lv_wlm1:17 /dev/lv_wlm2:17

/dev/hd1:26

/dev/hd1:32 /dev/hd2:16870 /dev/hd1:23

Los encabezamientos en un reporte de clase Workload Manager son los siguientes: Class Inuse Indica el nombre de la clase workload. Indica la cantidad de pginas en memoria real en segmentos que pertenecen a la clase workload. Indica la cantidad de pginas pinned en segmentos que pertenecen a la clase workload. Pgina 114 de 283

Pin

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Pgsp

Indica la cantidad de pginas reservadas o utilizadas en el espacio de paginado por segmentos que pertenecen a la clase workload. Indica la cantidad de pginas asignadas en el espacio virtual de la clase workload.

Virtual

Despus de los encabezamientos, el comando svmon muestra informacin sobre los segmentos que pertenecen a la clase workload. Si la opcin l es especificada, muestra para cada segmento la lista de identificadores de proceso que utiliza dicho segmento. Tambin se muestra la clase workload a la que pertenece el proceso.
Nota

Un proceso pertenece a la clase workload si su thread inicial pertenece a la misma.

4.2.6 El comando topas


El comando topas reporta estadsticas vitales sobre la actividad en el sistema. Requiere que est instalado en el sistema el fileset perfagent.tools de AIX Versin 4.3.3. El comando topas recibe actualizaciones todo el tiempo, por lo que es recomendable revisar la documentacin de AIX para informarse sobre nuevas caractersticas. Este comando es una especie de recopilacin de comandos de diagnstico, como son sar, vmstat, iostat y netstat. Permite ver todas las estadsticas en una pantalla, por lo que es fcil observar interacciones entre ellas. El comando est dividido en cinco subsecciones de estadsticas: EVENTS/QUEUES Muestra los eventos globales del sistema seleccionados y el promedio del tamao de los thread en ejecucin y las colas wait. Muestra las estadsticas seleccionadas de archivos y TTY. Muestra estadsticas de paginado. Muestra el tamao de la memoria real y la distribucin de su uso. Muestra el tamao y la utilizacin del espacio de paginado.

FILE/TTY PAGING MEMORY PAGING SPACE

Pgina 115 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

En la parte izquierda de la salida, hay una seccin variable dividida en subsecciones. La primera muestra la utilizacin de CPU en nmeros y en un grfico de bloques:
Kernel User Wait Idle 5.0 49.7 16.1 29.0 |# |############## |##### |######## | | | |

La siguiente seccin muestra estadsticas de las interfases de red:


Interf tr0 en0 KBPS 1.0 0.0 I-Pack 3.3 0.1 O-Pack 2.3 0.0 KB-In 0.1 0.0 KB-Out 0.9 0.0

La siguiente es la subseccin de estadsticas de discos fsicos:


Disk hdisk0 hdisk1 hdisk2 hdisk3 Busy% 0.0 0.0 0.0 0.0 KBPS 0.0 0.0 0.0 4056.6 TPS 0.0 0.0 0.0 96.9 KB-Read 0.0 0.0 0.0 0.0 KB-Writ 0.0 0.0 0.0 4056.6

La ltima subseccin muestra informacin de procesos. La captura de esta informacin constituye la mayor carga del comando topas:
tctestprg(15752)100.0% tctestprg(13888)100.0% topas (16022) 0.5% cp (18112) 0.0% cp (15558) 0.0% cp (13662) 0.0% PgSp: PgSp: PgSp: PgSp: PgSp: PgSp: 0.0mb 0.0mb 0.4mb 0.1mb 0.1mb 0.1mb root root root root root root

Mientras el topas se encuentra en ejecucin, acepta subcomandos de un carcter o letra. Esta es la accin de cada subcomando: a Muestra todas las secciones variables (red, disco, y procesos) si lo permite el espacio. Pgina 116 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Muestra informacin de disco. Si el nmero requerido de discos y el nmero requerido de interfases de red caben en 25 lneas, ambos sern mostrados. Si adems hay lugar para mostrar al menos tres procesos, todos los procesos que quepan tambin sern mostrados. Muestra la pantalla de ayuda. Muestra informacin sobre interfases de red. Si el nmero requerido de discos y el nmero requerido de interfases de red caben en 25 lneas, ambos sern mostrados. Si adems hay lugar para mostrar al menos tres procesos, todos los procesos que quepan tambin sern mostrados. Muestra informacin de procesos. Si el nmero requerido de procesos deja espacio libre suficiente, tambin sern mostradas las interfases de red, y as mismo con los discos. Sale del programa

h n

Tambin se pueden utilizar los siguientes flags en la lnea de comando: -i -n Ajusta el intervalo de monitoreo en segundos. Por defecto es dos segundos. Especifica la cantidad mxima de interfases de red a ser mostradas. Si el valor especificado es cero, no se mostrar informacin de red. Especifica el nmero mximo de procesos a ser mostrados. Si el valor especificado es cero, no se mostrar informacin de procesos.

-p

Se recomienda leer la ltima documentacin para obtener una lista completa de los subcomandos y flags disponibles.

4.2.7 El comando emstat


La arquitectura PowerPC no soporta ms, en hardware, 35 instrucciones POWER. Para mantener la compatibilidad con binarios ms viejos (que contienen esas instrucciones eliminadas), el kernel del AIX Versin 4 incluye rutinas de emulacin que proveen soporte para las instrucciones eliminadas. Intentando ejecutar una instruccin eliminada resulta en una excepcin a una instruccin ilegal (illegal instruction exception). El kernel decodifica la instruccin ilegal y, si es una instruccin eliminada, corre una rutina de emulacin que funcionalmente emula la instruccin. El comando emstat reporta estadsticas referidas a cuantas instrucciones debe emular el sistema. El total de instrucciones emuladas debe ser utilizado para determinar si una aplicacin necesita ser recompilada para eliminar instrucciones que deben ser emuladas en 601 PowerPC, 604 PowerPC, RS64, u otros procesadores no-POWER. Si una instruccin debe ser emulada, se necesitan ms ciclos de CPU para ejecutarla que con una instruccin que no hace falta emular. La mayora de los problemas de emulacin son vistos en viejos sistemas PowerPC 604. Un ejemplo tpico es un sistema PowerPC 601 que fue migrado a un sistema 604. Si el rendimiento empeora en lugar de mejorar, se deber seguramente a la emulacin. La solucin para la emulacin es recompilar la aplicacin en forma comn. La plataforma de arquitectura por defecto para compilar en AIX Versin 4 es la arquitectura comn. Sin embargo, la arquitectura por defecto en AIX Versin 3 era para POWER, POWER2, y PowerPC 601. Si estos binarios corran en un PowerPC 604, algunas instrucciones deban ser emuladas. Pgina 117 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Para determinar si el comando emstat se encuentra instalado, corra el siguiente comando:


# lslpp -l bos.adt.samples Nota

En AIX 5L, el emstat comando se encuentra en el fileset perfagent.tools.

El comando emstat trabaja en forma similar al comando vmstat en cuanto se debe especificar el tiempo de intervalo en segundos, y opcionalmente, la cantidad de intervalos. El valor en la primer columna es la cuenta acumulativa desde el reinicio del sistema, mientras que el valor en la segnda columna es la cantidad de instrucciones emuladas durante el intervalo especificado. Las emulaciones en el orden de algunos miles por segundo seguramente tendrn un impacto importante en el rendimiento:
# /usr/samples/kernel/emstat 2 emstat total count emstat interval count 965 965 965 0 965 0 965 0 965 0 967 2 967 0 967 0 974 7 974 0 974 0 974 0 974 0 974 0 1284 310 2171 887 3325 1154

Una vez que se detect emulacin, el paso siguiente es determinar que aplicacin est emulando instrucciones. Eso es mucho ms difcil de determinar. Una forma, si la instalacin lo permite, es correr una aplicacin a la vez y monitorear con el comando emstat.

4.3 Herramientas de rendimiento de I/O de disco


En esta seccin se vern los siguientes temas: Anlisis de rendimiento del Logical Volume Manager (LVM), utilizando el comando lslv. Herramientas para el anlisis del rendimiento de Journaled File System (JFS), utilizando los comandos filemon y fileplace.

4.3.1 Revisin general


Con el sistema operativo AIX, el manejo del I/O de discos es basado en diferentes niveles funcionales, como se ve en la siguiente figura:

Pgina 118 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El nivel ms bajo es el nivel fsico, y consiste en los controladores de dispositivos que acceden a los discos fsicos y utilizan los adaptadores correspondientes. El siguiente nivel es el nivel lgico, manejado por el Logical Volume Manager (LVM), que controla los recursos de los discos fsicos. El LVM provee un mapeo lgico de los recursos de disco para el nivel de aplicaciones. El nivel de aplicaciones puede consistir tanto en los Journaled File System (JFS) o dispositivos raw, por ejemplo, utilizados por sistemas de bases de datos relacionales.

4.3.2 El comando iostat


El comando iostat es una herramienta sumamente til que provee un primer indicio ante problemas de rendimiento de I/O. El comando iostat puede reportar estadsticas de CPU, de I/O de terminales, y I/O de disco, que ayudan a identificar la carga de I/O en componentes individuales como discos rgidos. La informacin de los reportes del iostat pueden ser utilizados para modificar la configuracin del sistema para mejorar la distribucin de la carga de I/O entre discos fsicos. El comando iostat extrae datos de los contadores de I/O del kernel del AIX en el espacio de direcciones del kernel, que son actualizados con cada tick del reloj (1/100 de segundo) tanto para actividad de TTY como de CPU y subsistemas de I/O. La sintaxis del comando iostat es la siguiente:
iostat [-d | -t] [VolumenFsico ...] [intervalo | nmero]

Estos son los flags comnmente utilizados: Flag -d Descripcin Este flag muestra slo el reporte de utilizacin de disco. El flag -d no se puede utilizar al mismo tiempo con el flag -t. Este flag muestra slo el uso de TTY y CPU. El flag -t no se puede utilizar al mismo tiempo con el flag -d.

-t

Utilizando el parmetro VolumenFsico (especificando el nombre del volumen fsico del disco o CDROM), el iostat genera un reporte de I/O slo para los PVs especificados. Si se especifica ningn PV, el comando iostat genera un reporte para todos los discos. El parmetro intervalo especifica la cantidad de tiempo en segundos entre cada reporte. El parmetro nmero especifica la cantidad de reportes a generar. Si el parmetro intervalo es especificado sin el parmetro nmero, el comando iostat genera reportes continuamente en forma indefinida. El siguiente es un ejemplo del comando iostat:
# iostat 1 2

Pgina 119 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

tty: Disks: hdisk3 hdisk2 hdisk0 hdisk1 cd0 hdisk4 tty: Disks: hdisk3 hdisk2 hdisk0 hdisk1 cd0 hdisk4

tin 0.0

tout 41.4 % tm_act 0.0 0.1 0.0 0.1 0.0 0.0

avg-cpu: % user 61.1 Kbps 0.3 1.1 0.9 1.5 0.0 0.2 tps 0.0 0.0 0.1 0.0 0.0 0.0

% sys 0.1

% idle 38.9 Kb_wrtn 224266 1658678 725871 1660027 0 40480 % idle 0.0 Kb_wrtn 0 0 8440 0 0 0

% iowait 0.0

Kb_read 258032 258088 746152 974788 0 323080 % sys 8.5

tin 0.0

tout 603.5 % tm_act 16.0 16.0 91.8 21.9 0.0 0.0

avg-cpu: % user 91.5 tps 117.7 122.7 263.3 117.7 0.0 0.0

% iowait 0.0

Kbps 2809.0 2868.8 8419.0 2820.9 0.0 0.0

Kb_read 2816 2876 0 2828 0 0

Este ejemplo muestra la salida del comando iostat actualizando cada un segundo (intervalo=1) y generando slo dos reportes (nmero=2). Cada reporte es una combinacin de un reporte de utilizacin de TTY y CPU con un reporte de utilizacin de disco. Este ejemplo muestra un sistema con cinco discos (hdisk0-hdisk4) y un CDROM. El primer reporte muestra el sumario de estadsticas desde el reinicio del sistema, con la suma de operaciones de I/O en cada disco. Se puede determinar que el hdisk1 es el disco ms activo. El segundo reporte es la utilizacin de disco actual, durante un intervalo de un segundo. Durante el reporte, se ejecuto un comando copy para generar actividad de I/O de disco.

4.3.2.1 El histrico de I/O de disco En AIX Versin 4.3 el sistema por defecto no recolecta un historial de la actividad de disco, dado que algunos recursos del sistema son consumidos en esta operacin. El administrador del sistema debe decidir si es necesario activar el historial de I/O de disco o no.
Nota

Si el historial de I/O de disco es desactivado, el comando iostat mostrar un mensaje similar al siguiente:
# iostat 1 1 tty: tin 0.0 tout avg-cpu: % user % sys % idle 41.5 61.2 0.1 38.8 " Disk history since boot not available. " % iowait 0.0

Recolectar el histrico de I/O de disco es una caracterstica del sistema operativo AIX que puede ser activada o desactivada en SMIT utilizando: smit chgsys. Esta es la pantalla correspondiente de SMIT:

Pgina 120 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Cuando el histrico de I/O de disco es activado, se debe ignorar el primer reporte si se quiere ver el comportamiento del sistema en tiempo real.

4.3.2.2 Reporte de utilizacin de TTY y CPU La primera seccin del reporte del comando iostat contiene el reporte de utilizacin de TTY y CPU. Este es el significado de los encabezamientos de cada columna: tin Muestra la cantidad de caracteres ledos por segundo por todos los dispositivos TTY. Indica la cantidad de caracteres escritos por segundo a todos los dispositivos TTY. Muestra el porcentaje de utilizacin de CPU a nivel usuario (aplicacin). Muestra el porcentaje de utilizacin de CPU a nivel sistema (kernel). Muestra el porcentaje de tiempo idle (durante el cual el sistema no espera un requerimiento de I/O). Muestra el porcentaje de tiempo idle durante el cual el sistema se encuentra esperando un requerimiento de I/O.

tout % user % sys . % idle

% iowait

Las columnas de informacin sobre TTY, tin y tout, muestran la cantidad de caracteres ledos y escritos por todos los dispositivos TTY. Esto incluye tanto dispositivos TTY reales como seudo dispositivos TTY. Dispositivos TTY reales son aquello conectados a un puerto asincrnico, como terminales, mdems, fax, etc. Seudo dispositivos TTY son las sesiones telnet y xterm (u otros emuladores de terminal grficos como dtterm y aixterm). Como el procesamiento del I/O de caracteres consume recursos de CPU, es importante monitorear la relacin entre el aumento de actividad de TTY y la utilizacin de CPU. Si dicha relacin existe, deben analizarse los dispositivos TTY, junto con las aplicaciones que utilizan esos dispositivos TTY. Por ejemplo, una aplicacin de fax puede ser mejorada incrementando la velocidad del puerto TTY de manera que una transferencia de archivos resulte ms rpida y eficiente. Pgina 121 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Las columnas de estadsticas de CPU, % user, % sys, % idle, y % iowait, proveen informacin sobre la utilizacin de CPU. La misma informacin es reportada con el comando vmstat en las columnas us, sy, id, y wa. En general, valores altos en la columna % iowait indican que el sistema tiene escasez de memoria, debido al paginado o a una configuracin ineficiente del susbsistema de I/O. Entender los cuellos de botella de I/O y optimizar la eficiencia del subsistema de I/O requiere mas datos que los que el iostat provee. Cuando el reporte del comando iostat muestra que no hay saturacin de CPU, con valores altos en % idle y mas del 25 por ciento en % iowait, nos indica una posible saturacin de I/O o disco. El siguiente es un ejemplo extrado de un reporte del comando iostat:
... tty: Disks: hdisk3 hdisk2 hdisk0 hdisk1 cd0 hdisk4 tin 0.0 tout 223.5 % tm_act 2.7 2.8 0.0 2.1 0.0 99.1 avg-cpu: % user 0.2 Kbps 163.2 170.8 0.0 175.6 0.0 715.6 tps 20.4 21.9 0.0 17.3 0.0 125.0 % sys 4.2 % idle 70.0 Kb_wrtn 0 0 0 0 0 7156 % iowait 25.5

Kb_read 1632 1708 0 1756 0 0

El ejemplo anterior muestra valores altos en % iowait debido a un cuello de botella de I/O en el hdisk4. Dependiendo del sistema actual, un valor alto de % iowait puede ser causado por exceso de paginado, por escasez de memoria real. Tambin puede deberse a carga de disco desbalanceada, fragmentacin de datos, o patrones de uso. Para una carga de disco desbalanceada, el mismo reporte del iostat provee la informacin necesaria. Pero para informacin sobre file systems o volmenes lgicos (que son recursos lgicos) se debe utilizar una herramienta especfica del AIX, como el filemon o fileplace. Alternativamente, el comando iostat puede ser usado para determinar si un problema de rendimiento est relacionado con la CPU. A pesar de que el vmstat preferentemente debera ser usado para este anlisis, ante la ausencia de reportes del vmstat, el iostat puede ser usado. Un buen indicador de saturacin de CPU es cuando el valor de % iowait es cero y el sistema no tiene tiempo idle (% idle = 0). Para investigar si un sistema no tiene un problema de memoria, se debe revisar si el volumen fsico que es usado para el espacio de paginado no tiene carga excesiva. Se debe utilizar el comando lsps -a para determinar cual es el volumen fsico del espacio de paginado. 4.3.2.3 El comando iostat en sistemas SMP El clculo del tiempo de I/O wait en sistemas SMP (Symmetrical Multiprocessor) fue modificado para proveer una recoleccin mas precisa de la utilizacin de CPU en comandos como el vmstat y el iostat. Antes de la Versin 4.3.3 de AIX, el clculo del tiempo de I/O wait en sistemas SMP poda resultar Pgina 122 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

con valores exagerados (comparado con sistemas uniprocesador o UP). Esto era debido a cierta anomala estadstica en la forma en que el AIX contabilizaba el tiempo de CPU. Los comandos vmstat y iostat simplemente reportaban el uso de CPU en las cuatro categoras de usr/sys/wio/idle. A cada interrupcin del reloj en cada procesador (100 veces por segundo en AIX), se realiza una determinacin para decidir en qu categora se asignan los ltimos 10 ms. de tiempo. SI la CPU est ocupada en modo usuario en el momento que sucede la interrupcin del reloj, se asigna este ltimo tick del reloj a la categora usr. Si la CPU est ocupada en el modo kernel, el tick se asignara a la categora sys. Si la CPU no est ocupada, se verifica si hay alguna operacin de I/O a disco en progreso. Si es as, el tick se asignar a la categora wio. Si no hay actividad de I/O de disco y la CPU no esta ocupada, entonces el tic se asignar a la categora idle. Como se puede ver, no interesa que procesador inici la operacin de I/O. Esto concluye con valores de wio ms elevados en sistemas SMP que en sistemas UP, en situaciones similares. A partir de AIX Versin 4.3.3, el tiempo de I/O wait no es ms exagerado; no se le atribuye tiempo wait a todas las CPUs cuando un disco est ocupado y la CPU es idle. La decisin se basa en si un thread est esperando una operacin de I/O en la CPU que se est midiendo. Este mtodo puede reportar tiempos de wio ms precisos cuando hay unos pocos threads realizando operaciones de I/O y por otro lado el sistema se encuentra idle.

4.3.2.4 Reporte de utilizacin de disco Cualquier problema potencial de rendimiento de I/O de disco debe ser analizado en primer lugar con el comando iostat. Para reportar slo el I/O de disco, use el comando iostat -d. Adems, las estadsticas de disco pueden ser limitadas a determinados discos especificando los nombres de los volmenes fsicos. El reporte de utilizacin de disco del iostat muestra las siguientes columnas: Disks Muestra los nombres de los volmenes fsicos. Tanto discos como CD-ROM, seguidos por un nmero. Por defecto, se muestran todos los discos, menos aquellos que son especificados en la lnea de comando. Indica el porcentaje de tiempo en que un disco fsico est activo. Un disco est activo durante transferencias de datos y procesamiento de comandos, como una buscar una nueva ubicacin. Un incremento en el porcentaje de tiempo activo de un disco implica una cada del rendimiento y el tiempo de respuesta aumenta. En general, cuando la utilizacin excede un 40 por ciento, los procesos deben esperar ms de lo necesario para completar una operacin de I/O, porque la mayora de los procesos UNIX duermen esperando que sus requerimientos de I/O se completen. Indica la cantidad de datos transferidos (ledos o escritos) a un disco en KB por segundo. Esta es la suma de KB ledos, ms KB escritos, dividido por los segundos de intervalo del reporte. Indica la cantidad de transferencias por segundo que fueron realizadas a un disco fsico. Una transferencia es un requerimiento de I/O a un disco fsico, a nivel controlador de dispositivos (device driver). Mltiples requerimientos lgicos pueden ser combinados en un slo requerimiento de I/O al disco. Una transferencia es de tamao indeterminado. Muestra el total de datos (en KB) ledos del volumen fsico durante el intervalo de medicin.

% tm_act

Kbps

tps

Kb_read

Pgina 123 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Kb_wrtn

Muestra el total de datos (en KB) escritos al volumen fsico durante el intervalo de medicin.

Cuando se analiza el reporte de utilizacin de disco y se utilizan las diferentes columnas de datos, es importante tener en cuenta los patrones y relaciones entre los distintos tipos de datos. Normalmente hay una relacin entre la utilizacin del disco %tm_act y las tasas de transferencia de datos tps. Si el tasa de utilizacin del disco %tm_act es alta, entonces la tasa tps debera ser alta. Sin embargo, si se obtiene un tasa de utilizacin de disco alta y una tasa de transferencia baja, puede deberse tanto a fragmentacin del volumen lgico, del file system o archivos individuales. Generalmente, es necesario preocuparse sobre altas tasas de utilizacin de disco cuando un disco est siendo utilizado por un solo proceso de AIX (por ejemplo, un trabajo batch). Por ejemplo, si una aplicacin lee/escribe secuencialmente, se debe esperar una alta tasa de transferencias (tps) y una alta tasa de utilizacin (%tm_act). Kb_read y Kb_wrtn pueden aportar una mejor comprensin del comportamiento en la lectura/escritura de una aplicacin. Sin embargo, no provee informacin sobre los patrones de acceso a datos. Un promedio de utilizacin de un volumen fsico mayor al 25 por ciento sobre todos los discos indica un cuello de botella de I/O. La conclusin general en relacin al rendimiento de discos, volmenes lgicos y file systems es que a mayor cantidad de discos en el sistema, mejor es el rendimiento de I/O de disco. Sin embargo, hay un lmite en cuanto a la cantidad de datos que pueden ser manejados por los adaptadores SCSI; por lo tanto, los adaptadores SCSI pueden ser en ms de una ocasin un cuello de botella. Especialmente en sistemas RS/6000 con adaptadores SCSI-1 y SCSI-2. Para determinar si un adaptador SCSI est saturado, se deben sumar todos los valores en KB/s para los discos configurados en el mismo adaptador y comparar la suma con la velocidad del adaptador SCSI. En general, se debe tomar un 70 por ciento de la tasa de rendimiento provista por el fabricante. Este es un ejemplo de diferentes tipos SCSI y su rendimiento: SCSI-1 tasa de rendimiento de 3.5 MB/s (70 por ciento de 5 MB/s) SCSI-2 tasa de rendimiento de 7 MB/s (70 por ciento de 10 MB/s) Ultra SCSI tasa de rendimiento de 28 MB/s (70 por ciento de 40 MB/s) Ultra2 SCSI tasa de rendimiento de 56 MB/s (70 por ciento de 80 MB/s) Si se descubre un adaptador saturado, se debe solucionar el problema moviendo discos a otros adaptadores menos usados o agregando un adaptador SCSI adicional.
Nota

Al igual que con el comando vmstat, iostat slo puede dar una primera indicacin sobre un cuello de botella. El administrador del sistema deber realizar anlisis ms profundos con herramientas tales como el filemon para identificar el origen del problema.

4.3.3 Anlisis de rendimiento del LVM utilizando el lslv


Hay varios factores que afectan el rendimiento de los volmenes lgicos (LV); por ejemplo, la posicin de asignacin en el disco o las opciones de espejado. Para obtener informacin sobre el volumen lgico, se puede utilizar el comando lslv, que provee informacin sobre: Atributos del LV Asignacin del LV Lista de las caractersticas actuales del volumen lgico Mapa de ubicacin de los bloques en el disco Pgina 124 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Fragmentacin del LV

Fragmentacin de los bloques del LV

4.3.3.1 Atributos del volumen lgico Se debe utilizar el comando lslv sin flags para ver las caractersticas del volumen lgico, como muestra el siguiente ejemplo:
# lslv mirrlv LOGICAL VOLUME: mirrlv LV IDENTIFIER: 000bc6fd1202118f.3 VG STATE: active/complete TYPE: jfs MAX LPs: 512 COPIES: 2 LPs: 120 STALE PPs: 0 INTER-POLICY: maximum INTRA-POLICY: inner middle MOUNT POINT: /u/mirrfs MIRROR WRITE CONSISTENCY: on EACH LP COPY ON A SEPARATE PV ?: yes VOLUME GROUP: stripevg PERMISSION: read/write LV STATE: closed/syncd WRITE VERIFY: on PP SIZE: 16 megabyte(s) SCHED POLICY: parallel PPs: 240 BB POLICY: relocatable RELOCATABLE: yes UPPER BOUND: 32 LABEL: None

El ejemplo anterior muestra los atributos del volumen lgico mirrlv, que es un volumen lgico espejado y que pertenece al grupo de volmenes stripvg. En cuestiones de rendimiento, los siguientes atributos deben tenerse en cuenta:

COPIES

Indica la cantidad de copias fsicas. Si copias es igual a 1, entonces el LV no se encuentra espejado. Valores 2 y 3 son usados para LVs espejados. Poltica de asignacin entre volmenes fsicos. Permite determinar qu poltica utilizar para elegir los dispositivos fsicos, para asignar las particiones fsicas de un volumen lgico. Poltica de asignacin dentro de los volmenes fsicos. Permite determinar qu poltica utilizar para escoger las particiones fsicas en un volumen fsico.

INTER-POLICY

INTRA-POLICY

MIRROR WRITE CONSISTENCY Consistencia de la escritura de espejado. Asegura la consistencia de los datos entre las copias espejadas de un volumen lgico durante el procesamiento de I/O normal. Para cada escritura a un volumen lgico, el LVM genera un requerimiento de escritura para cada copia espejada. La consistencia de la escritura de espejado debe ser ejecutada en la mayora de los volmenes lgicos espejados. WRITE VERIFY Especifica si se debe verificar cada escritura con un inmediata lectura. Esta opcin incrementa la disponibilidad pero disminuye el rendimiento. Especifica uno de los dos tipos de poltica de scheduling para la escritura (secuencial o paralela), utilizadas en los volmenes lgicos con mltiples copias. Especifica si se debe usar el reacomodamiento de los bloques daados (Bad Block Relocation), que redirecciona los requerimientos de I/O de un bloque de disco daado a un bloque vlido. Pgina 125 de 283

SHED-POLICY

BB POLICY

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

RELOCATABLE

Especifica si se debe permitir el reacomodamiento del volumen lgico durante una reorganizacin del grupo de volmenes. Especifica el nmero mximo de volmenes fsicos por asignacin.

UPPER BOUND

a. Espejado Para incrementar la disponibilidad de un volumen lgico, AIX soporta el espejado de los datos permitiendo copias mltiples de un volumen lgico en discos diferentes. Cuando se utiliza el espejado, la poltica de scheduling de la escritura puede ser: Secuencial La poltica de escritura secuencia espera que la operacin de escritura se complete en la particin fsica previa antes de comenzar con la siguiente operacin. La poltica de escritura paralela comienza la operacin de escritura para todas las particiones fsicas de una particin lgica al mismo tiempo. La escritura se completa cuando la operacin de escritura ms lenta es completada.

Parallel

La poltica de escritura paralela provee el mejor rendimiento y es la opcin preferida cuando se crean los volmenes lgicos espejados. En general, las siguientes recomendaciones proveen la mayor disponibilidad del LVM: Utilice tres copias de la particin lgica (doble espejado) e incluya al menos tres volmenes fsicos. La verificacin de escritura debe ser activada. La poltica entre discos (inter) debe ser configurada en mnimo (minimum), lo que define que las copias espejadas sean iguales al nmero de volmenes fsicos. La poltica de asignacin de discos debe ser configurada en estricto (strict), lo que establece que ninguna de las copias de las particiones lgicas estn en el mismo disco. Los volmenes fsicos que contienen las copias deben estar conectados a buses, adaptadores y power supplies diferentes. Proveer la mxima disponibilidad, sin embargo, a veces puede tener un impacto negativo en el rendimiento del LVM; por lo tanto, se deben realizar algunas modificaciones, dependiendo de los requerimientos.

b. Poltica intra Las cinco polticas de intra-asignacin son: inner edge, inner middle, center, outer middle, outer edge. Las posiciones del disco que corresponden a cada poltica son ilustradas en el siguiente grfico:

Pgina 126 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

En general, el rendimiento de la poltica intra-disco es el siguiente: La poltica de asignacin central (center) tiene el promedio de tiempo de bsqueda ms rpido en discos con menos de 4 GB de espacio. En discos ms grandes, el borde externo (outer middle) tiene los tiempos de bsqueda ms rpidos. Las polticas de asignacin en el medio externo (outer middle) y el medio interno (inner middle) proveen un tiempo de bsqueda razonable. Es el valor por defecto cuando se crea un volumen lgico nuevo. El borde externo (outer edge) en discos con menos de 4 GB de espacio y el borde interno (inner edge) tiene el promedio de tiempo de bsqueda ms lento.

c. Poltica inter Las polticas posibles para la asignacin dentro del disco son mnimo (MINIMUM) y mximo (MAXIMUM). La poltica MINIMUM asigna las particiones fsicas del volumen lgico en el mismo disco o en la menor cantidad de discos posible. La poltica MINIMUM provee la mejor disponibilidad. La poltica MAXIMUM asigna las particiones fsicas del volumen lgico en la mayor cantidad de discos posible. La poltica MAXIMUM provee el mejor rendimiento. Para los volmenes lgicos no espejados, la poltica MINIMUM indica que un volumen fsico debe contener todas las particiones fsicas del volumen lgico. Si el programa de asignacin debe usar dos o ms volmenes fsicos, utilizar la menor cantidad posible. Para los volmenes lgicos espejados, la poltica MINIMUM indica que se deben utilizar tantos volmenes fsicos como copias se quieran realizar. Por otro lado, el mnimo nmero posible de volmenes fsicos debe ser usado para almacenar todas las particiones fsicas.

d. Striping El striping est diseado para incrementar el rendimiento de lectura y escritura de grandes archivos secuenciales, frecuentemente accedidos. Cuando un volumen lgico es creado con striping, se deben utilizar tantos discos como sea posible. Desde la versin 4.3.3 de AIX, es posible el espejado de volmenes lgicos con striping; por consiguiente, ya no es vlido el viejo concepto de que el striping no provee disponibilidad al no poder contar con espejado. Cuando se define un volumen lgico con striping, dos atributos adicionales aparecen con el comando lslv:

Pgina 127 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

STRIPE WIDTH STRIPE SIZE

Cantidad de divisiones del striping. El tamao fijo de cada bloque de striping. Este tamao puede ser cualquier potencia de 2 desde 4 KB a 128 KB, aunque generalmente es configurado en 64 KB para obtener los niveles ms altos de rendimiento en operaciones de I/O secuenciales.

4.3.3.2 Fragmentacin de volmenes lgicos Para inspeccionar un volumen lgico por una posible fragmentacin, se utiliza el flag l del comando lslv, como se ve en el siguiente ejemplo:
# lslv -l mirrlv mirrlv:/u/mirrfs PV hdisk2 hdisk1

COPIES 120:000:000 120:000:000

IN BAND 90% 69%

DISTRIBUTION 000:000:000:108:012 000:000:000:083:037

Este ejemplo utiliza el mismo volumen lgico que en la seccin anterior. La columna PV indica que el volumen fsico utiliza dos discos (hdisk1 y hdisk2). La columna COPIES indica que la cantidad total de particiones lgicas es 120, y como es un volumen lgico espejado, ambos discos tienen la misma cantidad de PPs asignadas (240 en total). La columna IN BAND indica en porcentajes, el nivel de cumplimiento con la poltica de intra asignacin. Si el LVM no puede cumplir con el requerimiento de la poltica intra, elige la mejor alternativa. En el ejemplo anterior, la poltica intra era inner middle, pero slo pudo cumplir con el requerimiento en un 69 por ciento en el hdisk1 y un 90 por ciento en el hdisk2. La columna DISTRIBUTION muestra cmo son asignadas las particiones fsicas en cada seccin de la poltica intra, como muestra el siguiente esquema de relacin:
(outer edge) : (outer middle) : (center) : (inner middle) : (inner edge)

En este ejemplo, el hdisk1 tiene 83 PPs asignadas en el requerido inner middle, y 37 en el outer edge. El hdisk2 tiene mejor asignada la poltica intra, y es por eso que el nivel IN BAND es mayor.

4.3.3.3 Asignacin de volmenes lgicos Para ver la asignacin de volmenes lgicos con respecto a su ubicacin dentro del volumen fsico, se utiliza el siguiente comando:
# lslv -p hdisk1 mirrlv hdisk1:mirrlv:/u/mirrfs FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE USED FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 1-10 11-20 21-30 31-40 41-50 51-60 61-70 71-80 81-90 91-100 101-109

Pgina 128 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

USED USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED USED 0006 0016 0026 0036 0046 0056 0066 0076 0084 0094 0104 0114 FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED USED 0007 0017 0027 0037 0047 0057 0067 0077 0085 0095 0105 0115 FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED USED 0008 0018 0028 0038 0048 0058 0068 0078 0086 0096 0106 0116 FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED USED 0009 0019 0029 0039 0049 0059 0069 0079 0087 0097 0107 0117 FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED USED 0010 0020 0030 0040 0050 0060 0070 0080 0088 0098 0108 0118 FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED 0001 0011 0021 0031 0041 0051 0061 0071 0081 0089 0099 0109 0119 FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE FREE USED USED 0002 0012 0022 0032 0042 0052 0062 0072 0082 0090 0100 0110 0120 FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE FREE USED USED 0003 0013 0023 0033 0043 0053 0063 0073 0083 0091 0101 0111 FREE FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED 0004 0014 0024 0034 0044 0054 0064 0074 0092 0102 0112 FREE FREE FREE FREE FREE FREE FREE FREE

USED USED USED USED USED USED USED USED USED USED USED USED FREE FREE FREE FREE FREE FREE FREE FREE USED USED 0005 0015 0025 0035 0045 0055 0065 0075 0093 0103 0113 FREE FREE FREE FREE FREE FREE FREE

110-119 120-129 130-139 140-149 150-159 160-169 170-179 180-189 190-199 200-209 210-217 218-227 228-237 238-247 248-257 258-267 268-277 278-287 288-297 298-307 308-317 318-325 326-335 336-345 346-355 356-365 366-375 376-385 386-395 396-405 406-415 416-425 426-433 434-443 444-453 454-463 464-473 474-483 484-493 494-503 504-513 514-523 524-533 534-542

La salida muestra cinco secciones que representan: outer edge, outer middle, center, inner middle, e inner edge. Cada particin fsica es marcada con un nmero o una palabra: Nmero USED Un nmero indica el nmero de particin lgica del volumen lgico. Esta palabra indica que la particin fsica en esta ubicacin es utilizada por otro volumen lgico. Esta palabra indica que esta particin fsica no est siendo utilizada por ningn volumen lgico. La fragmentacin de un volumen lgico ocurre si las particiones lgicas nos son contiguas a travs del disco. Aunque no est presente en el ejemplo, la palabra STALE indica que la particin no puede ser utilizada.

FREE

STALE

Pgina 129 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Este ejemplo muestra que la copia del mirrlv ubicada en el hdisk1 fue asignada en forma contigua. Las particiones lgicas desde la 01 a la 83 fueron asignadas en la seccin inner middle, mientras que desde la 84 a la 120 fueron asignadas en la seccin inner edge. Cuando los volmenes lgicos son eliminados, las particiones fsicas son liberadas y eso genera espacio tanto para nuevos volmenes lgicos como para reorganizar volmenes lgicos, de manera que la fragmentacin de un volumen lgico es limitada. El comando del LVM reorgvg puede reorganizar volmenes lgicos de manera que cumplan con las polticas intra. Utilizando reorgvg con el grupo de volmenes y el nombre del volumen lgico, se otorga la mxima prioridad al grupo de volmenes mientras realiza la reorganizacin. Durante la reorganizacin, el grupo de volmenes es marcado y no puede usarse.

4.3.3.4 El mejor rendimiento del LVM Las siguientes recomendaciones generales pueden ser usadas para crear volmenes lgicos con alta demanda de rendimiento. Si embargo, se debe tener en cuenta que cuando un volumen lgico es configurado para un mejor rendimiento, la disponibilidad puede verse afectada. Sin espejado, lo que significa un nmero de copias igual a uno (1). Si el espejado es requerido entonces: - Las polticas de scheduling de escritura debe configurarse en paralelo. - Poltica de asignacin configurada en strict, lo que significa que cada copia debe realizarse en volmenes fsicos diferentes. Verificacin de escritura configurada en no. Consistencia de la escritura de espejado (MWC) desactivada. Polticas intra: - Center: para volmenes lgicos muy activos - Middle: para volmenes lgicos moderados - Edge: para volmenes lgicos poco activos. Poltica de asignacin inter discos configurada en maximum, lo que implica que las operaciones de lectura/escritura son distribuidas entre los volmenes fsicos. Mejoras de rendimiento adicionales pueden ser obtenidas al crear volmenes lgicos con striping.

4.3.4 Monitoreo del LVM y file systems


Para proveer un anlisis ms completo del rendimiento de los file systems, la versin 4.3 de AIX provee un comando de monitoreo, filemon. Este ofrece informacin sobre aplicaciones especficas o la actividad de I/O del sistema, ayudando en el proceso de determinacin de problemas o en la optimizacin del rendimiento.

4.3.4.1 El comando filemon El comando filemon monitorea y presenta informacin en los siguientes cuatro niveles respectivos a la utilizacin de file systems: Pgina 130 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Archivo lgico

Las operaciones de monitoreo incluyen todas las lecturas, escrituras, aperturas y las llamadas del sistema lseek, que pueden o no resultar en I/O fsico, dependiendo si los archivos estn en un buffer o en memoria. Las estadsticas de I/O son generadas por archivo. Las estadsticas de I/O son generadas por volumen lgico. En este nivel, se obtiene la utilizacin de recursos fsicos. Las estadsticas de I/O son generadas por volumen fsico. En este nivel, son monitoreadas todas las operaciones (es decir, el paginado) entre segmentos y sus imgenes en disco. Las estadsticas de I/O son generadas por segmento.

Volmenes lgicos Volmenes fsicos

Sistema de memoria virtual

a. Usando el comando filemon El comando filemon est basado en las herramientas de trace de AIX para monitorear actividad de I/O durante un perodo especfico. Es por esto que el filemon slo puede ser ejecutado por root y no puede ser ejecutado en paralelo con otros comandos del tipo trace, como tprof y netpmon. El trace es iniciado implcitamente por el comando filemon, pero puede ser controlado con las utilidades genricas de trace: trcstop, trcoff, y trcon. Cuando un trace es detenido con trcstop, el filemon escribe un reporte a la stdout o a un archivo especificado. Para especificar los niveles de informacin recolectados en todas las capas, o en capas especficas, se usa la opcin de capas -O. Por defecto se recolecta informacin en las capas fsicas, de memoria virtual y LVM. Son generados tanto los sumarios como los reportes detallados.
Nota

El comando filemon slo recolectar informacin para aquellos archivos abiertos despus de que se inici el filemon, a menos que se especifique el flag -u. La siguiente secuencia de comandos provee un ejemplo simple del filemon en accin:
# filemon -o /tmp/filemonLF.out -O lf Enter the "trcstop" command to complete filemon processing # dd count=2048 if=/dev/zero of=/u/mirrfs/testMirrorFile 2048+0 records in. 2048+0 records out. # dd count=2048 of=/dev/null if=/u/mirrfs/testMirrorFile 2048+0 records in. 2048+0 records out. # trcstop [filemon: Reporting started] [filemon: Reporting completed] [filemon: 10.666 secs in measured interval] # ls -l filemonLF.out -rw-r--r-- 1 root system 2627 Jul 07 12:51 filemonLF.out #

El comando filemon es iniciado con el flag -O, especificando que slo se debe monitorear la inforPgina 131 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

macin de archivos lgicos. Este ejemplo utiliza dos comandos dd para escribir a un archivo y para leer un archivo. Los dispositivos especiales /dev/zero y /dev/null son utilizados para obtener figuras limpias de lectura/escritura y realizar los reportes en forma transparente. En este ejemplo, el reporte de salida del comando filemon es puesto en un archivo dedicado utilizando el flag -o. Por defecto se escribe el reporte en la salida por defecto (standard output). 4.3.4.2 Anlisis del reporte Los reportes generados por el filemon dependen de los niveles de salida del flag -O. Los valores posibles para los niveles de salida son: lf lv pv vm Nivel archivo lgico Nivel volumen lgico Nivel volumen fsico Nivel memoria virtual

El valor por defecto del -O es all. Sin embargo, si el -O es especificado sin un nivel, entonces el valor por defecto ser lv, pv, y vm. La siguiente seccin explica los reportes de salida del filemon utilizando los ejemplos de la seccin anterior. a. Reporte a nivel archivo lgico El nivel archivo lgico, como muestra el siguiente ejemplo, provee dos secciones, el reporte Most Active Files (Archivos Ms Activos) con la informacin de los archivos activos durante el trace, y el reporte Detailed File Stats (Estadsticas Detalladas de Archivo), para una estadstica detallada de archivos individuales.
# cat /tmp/filemonLF.out Fri Jul 7 12:51:38 2000 System: AIX server1 Node: 4 Machine: 000BC6FD4C00 Cpu utilization: 100.0% Most Active Files -----------------------------------------------------------------------#MBs #opns #rds #wrs file volume:inode -----------------------------------------------------------------------2.0 2 2048 2048 testMirrorFile /dev/mirrlv:17 1.0 1 2048 0 zero 1.0 1 0 2048 null 0.0 3 6 0 ksh.cat /dev/hd2:23079 0.0 2 2 0 dd.cat /dev/hd2:22970 0.0 1 2 0 cmdtrace.cat /dev/hd2:22947 -----------------------------------------------------------------------Detailed File Stats -----------------------------------------------------------------------FILE: /u/mirrfs/testMirrorFile volume: /dev/mirrlv opens: 2 total bytes xfrd: 2097152 reads: 2048 (0 errs) read sizes (bytes): avg 512.0 min 512 read times (msec): avg 0.003 min 0.000 writes: 2048 (0 errs) write sizes (bytes): avg 512.0 min 512 write times (msec): avg 0.028 min 0.012 lseeks: 1 FILE: /dev/zero opens: 1 total bytes xfrd: 1048576 inode: 17

max max max max

512 sdev 0.084 sdev 512 sdev 0.443 sdev

0.0 0.005 0.0 0.044

Pgina 132 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

reads: read sizes (bytes): read times (msec): FILE: /dev/null opens: total bytes xfrd: writes: write sizes (bytes): write times (msec):

2048 (0 errs) avg 512.0 min avg 0.007 min 1 1048576 2048 (0 errs) avg 512.0 min avg 0.001 min

512 max 0.006 max

512 sdev 0.076 sdev

0.0 0.003

512 max 0.000 max

512 sdev 0.023 sdev

0.0 0.002

FILE: /usr/lib/nls/msg/en_US/ksh.cat volume: /dev/hd2 (/usr) inode: 23079 opens: 3 total bytes xfrd: 24576 reads: 6 (0 errs) read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0 read times (msec): avg 0.033 min 0.000 max 0.085 sdev 0.036 lseeks: 15 FILE: /usr/lib/nls/msg/en_US/dd.cat volume: /dev/hd2 (/usr) inode: 22970 opens: 2 total bytes xfrd: 8192 reads: 2 (0 errs) read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0 read times (msec): avg 4.380 min 0.000 max 8.760 sdev 4.380 lseeks: 10 FILE: /usr/lib/nls/msg/en_US/cmdtrace.cat volume: /dev/hd2 (/usr) inode: 22947 opens: 1 total bytes xfrd: 8192 reads: 2 (0 errs) read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0 read times (msec): avg 0.000 min 0.000 max 0.000 sdev 0.000 lseeks: 8

El reporte Most Active Files contiene un sumario de informacin de los archivos usados ms frecuentemente durante el perodo monitoreado, definido en la siguiente lista: #MBS Nmero total de megabytes transferidos desde y hacia el archivo. Las lneas son ordenadas por este campo, en orden decreciente. Nmero de veces que el archivo fue abierto durante el perodo de medicin. Nmero de llamadas del sistema para lectura realizadas contra este archivo. Nmero de llamadas del sistema para escritura realizadas contra este archivo Nombre del archivo (el path completo figura en el reporte detallado). Nombre del volumen que contiene el archivo, y el nmero de inodo del archivo. Este campo puede ser usado para asociar el archivo con su correspondiente segmento persistente. Este campo puede estar en blanco (por ejemplo, para archivos temporarios creados y borrados durante la ejecucin).

#opns

#rds

#wrs

file volume:inode

El ejemplo del filemon muestra que el archivo testMirrorFile es el ms activo, con operaciones de lectura de 1 MB y de escritura de 1 MB. Ntese que las operaciones de escritura y lectura fueron realizadas en unidades de 512 byte. Esto muestra que el comando dd utiliz un tamao de bloque Pgina 133 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

de 512 byte. Los archivos zero y null no tienen inodos porque no estn conectados a ningn file system, son archivos de dispositivos especiales. Del reporte a nivel archivo del filemon, es muy evidente ver cuales archivos generan la mayor demanda de I/O. El reporte Detailed File Stats provee informacin sobre cada archivo activo con los siguientes detalles: FILE volume inode opens total bytes xfrd reads read sizes (bytes) Nombre del archivo. Si es posible, muestra el path completo. Nombre del volumen lgico o file system que contiene el archivo. Nmero de inode del archivo dentro de su file system. Nmero de veces que el archivo fue abierto mientras se monitoreaba. Nmero total de bytes ledos y escritos desde y hacia el archivo. Nmero de llamados de lectura contra el archivo. Estadsticas de lectura, respecto al tamaos de las transferencias (avg, min, max, y sdev), en bytes. Estadsticas de lectura, respecto al tiempo de respuesta (avg, min, max, y sdev), en milisegundos. Nmero de llamados de escritura contra el archivo. Estadsticas de escritura, respecto al tamao de las transferencias. Estadsticas de escritura, respecto al tiempo de respuesta. Cantidad de llamados a la subrutina lseek.

read times (msec)

writes write sizes (bytes) write times (msec) seeks

El reporte de nivel detallado, en el ejemplo anterior, est centrado en el archivo testMirrorFile. Aqu los tamaos de lectura y escritura de 512 bytes son an ms evidentes. Como es el nico tamao de lectura/escritura utilizado, la desviacin del estndar (sdev) es 0. Los tiempos de lectura/escritura son un valor interesante en el reporte Detailed File Stats. Pueden mostrar, entre otras cosas, como se comporta el cache del file system.

b. Reporte a nivel volumen lgico El reporte a nivel volumen lgico provee dos secciones: el reporte Most Active Logical Volumes (Volmenes Lgicos Ms Activos) y el reporte Detailed Logical Volume Stats (Estadsticas Detalladas de Volumen Lgico). El siguiente es un ejemplo de un reporte a nivel volumen lgico:
# filemon -o /tmp/filemonLF.out -O lv

Este es un extracto del reporte:


...

Pgina 134 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Most Active Logical Volumes -----------------------------------------------------------------------util #rblk #wblk KB/s volume description -----------------------------------------------------------------------0.07 0 2016 64.5 /dev/mirrlv /u/mirrfs 0.00 0 8 0.3 /dev/loglv00 jfslog 0.00 8 0 0.3 /dev/hd2 /usr ...

util

Utilizacin del volumen (fracciones de tiempo ocupado). Las lneas estn ordenadas por este campo, en orden decreciente. Cantidad de bloques de 512 bytes ledos del volumen. Cantidad de bloques de 512 bytes escritos en el volumen. Rendimiento total de las transferencias, en kilobytes por segundo. Nombre del volumen. Contenidos del volumen: tanto el nombre del archivo como el tipo de volumen lgico (paging, jfslog, boot, o sysdump). Adems, indica si el file system est fragmentado o comprimido.

#rblk #wblk KB/sec volume description

Esta seccin del reporte a nivel volumen lgico muestra claramente que el mirrlv es el volumen lgico mas utilizado. El reporte muestra un rendimiento de transferencias de 64.5 KB/s para el mirrlv y su file system mirrfs. Se aprecia cierta actividad en el loglv00 que es el jfslog del mirrfs.

c. Reporte a nivel volumen fsico El reporte a nivel volumen fsico provee dos secciones: el reporte Most Active Physical Volumes (Volmenes Fsicos Ms Activos) y el reporte Detailed Physical Volume Stats (Estadsticas Detalladas de Volumen Fsico). El siguiente es un ejemplo de un reporte a nivel volumen fsico:
# filemon -o /tmp/filemonLF.out -O pv

Este es un extracto del reporte: ...


Most Active Physical Volumes -----------------------------------------------------------------------util #rblk #wblk KB/s volume description -----------------------------------------------------------------------0.07 0 2096 66.4 /dev/hdisk1 N/A 0.07 0 2080 65.9 /dev/hdisk2 N/A 0.02 0 305 9.7 /dev/hdisk0 N/A ...

util

Utilizacin del volumen (fracciones de tiempo ocupado). Las lneas estn ordenadas por este campo, en orden decreciente. Cantidad de bloques de 512 bytes ledos del volumen. Cantidad de bloques de 512 bytes escritos en el volumen. Rendimiento total de las transferencias, en kilobytes por segundo. Pgina 135 de 283

#rblk #wblk KB/s

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

volume description

Nombre del volumen. Tipo de volumen, por ejemplo, 9.1 GB disk o CD-ROM SCSI.

El reporte a nivel volumen fsico del ejemplo muestra una actividad casi igual en los dos volmenes fsicos hdisk1 y hdisk2, dado que en ellos estn las copias espejadas del mirrlv. Ntese que el hdisk1 tiene un bloque de escritura (#wblk) apenas ms grande que el hdisk2 (y por ello, un rendimiento apenas mayor). Esto se debe a que el jfslog loglv00 est ubicado en el hdisk1. d. Reporte a nivel memoria virtual El reporte a nivel memoria virtual provee dos secciones: el reporte Most Active Segments (Segmentos Ms Activos) y el reporte Detailed VM Segment Stats (Estadsticas Detalladas de Segmentos de Memoria Virtual). El siguiente es un ejemplo de un reporte a nivel memoria virtual:
# filemon -o /tmp/filemonLF.out -O vm

Este es un extracto del reporte:


... Most Active Segments -----------------------------------------------------------------------#MBs #rpgs #wpgs segid segtype volume:inode -----------------------------------------------------------------------1.0 0 252 c473 page table 0.0 0 1 fefe log ...

#MBs

Cantidad total de megabytes transferidos desde y hacia el segmento. Las lneas estn ordenadas por este campo, en orden decreciente. Cantidad de pginas de 4096 bytes ledas desde el disco al segmento (es decir, page in). Cantidad de pginas de 4096 bytes escritas desde el segmento al disco (page out). ID interno del segmento. Tipo de segmento: segmento de trabajo, segmento persistente, (archivo local), segmento cliente (archivo remoto), segmento de tablas paginadas, segmentos del sistema, o segmentos persistentes especiales que contienen datos del file system (log, directorio raz, .inode, .inodemap, .inodex, .inodexmap, .indirect, .diskmap). Para segmentos persistentes, el nombre del volumen que contiene el archivo asociado, y el nmero de inodo del archivo. Este campo puede ser asociado a segmentos persistentes con su correspondiente archivo, mostrado en los reportes de I/O de archivo. Este campo est en blanco para segmentos no-persistentes.

#rpgs

#wpgs segid segtype

volume:inode

En el ejemplo anterior, el reporte a nivel memoria virtual no contiene informacin importante; es mencionado para completar el informe de las capacidades del filemon.

Pgina 136 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

4.3.4.3 Comportamiento tpico del sistema AIX Cuando se utiliza el comando filemon para el anlisis de rendimiento, los siguientes puntos deben tenerse en cuenta: Archivos accedidos frecuentemente: El archivo /etc/inittab siempre es muy activo. Los daemons especificados en /etc/inittab son chequeados regularmente para determinar si requieren ser reactivados (respawn). El archivo /etc/passwd es tambin muy activo, porque son verificados los permisos de archivos y directorios. Acceso a disco: Un tiempo de bsqueda muy grande incrementa el tiempo de respuesta del I/O y disminuye el rendimiento. Si la mayora de las lecturas y escrituras requieren bsquedas, se tendr archivos fragmentados o file systems demasiado activos en el mismo disco fsico. Si la cantidad de lecturas y escrituras se acerca a la cantidad de secuencias, el acceso a disco es ms aleatorio que secuencial. Secuencias son cadenas de pginas que son ledas (page in) o escritas (page out) consecutivamente. El largo de las secuencias es medido en pginas. Un acceso aleatorio a un archivo puede adems incluir muchas bsquedas. En este caso, no se podr distinguir en la salida del filemon, si el acceso al archivo es aleatorio o si el archivo est fragmentado. Soluciones para la saturacin de disco: Si procesos en background con I/O intensivo estn interfiriendo con los tiempos de respuesta interactivos, se puede activar el I/O pacing. Si parece que un pequeo nmero de archivos son ledos una y otra vez en forma reiterada, se debe considerar si el agregado de ms memoria real permitir que esos archivos sean manejados en forma ms efectiva. Si el comando iostat indica que la carga de I/O no es distribuida equitativamente entre los discos, y la utilizacin de uno o mas discos es a menudo del 40-50 por ciento o ms, se debe considerar una reorganizacin de los file systems. Si la carga de trabajo se maneja mayormente con un patrn de acceso aleatorio, se debe considerar el agregado de ms discos y la distribucin entre ms discos de los archivos accedidos en forma aleatoria. Si la carga de trabajo se maneja mayormente con un patrn de acceso secuencial, e incluye mltiples discos, se debe considerar el agregado de uno o ms adaptadores. Es apropiado adems, crear un volumen lgico con striping para acomodar archivos secuenciales muy grandes que tengan un rendimiento crtico.

4.3.5 Rendimiento de los file systems


Hay algunos factores que afectan el rendimiento de los file systems: La asignacin dinmica de recursos puede causar: - Fragmentacin de archivos lgicamente contiguos - Fragmentacin de volmenes lgicos lgicamente contiguos - Bloques de archivos esparcidos Efectos cuando los archivos son accedidos del disco:

Pgina 137 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

- El acceso secuencial deja de ser secuencial - El acceso aleatorio es afectado - Los tiempos de acceso dominados por los tiempos de bsquedas muy grandes Una vez en memoria, los efectos disminuyen.

4.3.5.1 El comando fileplace El uso de archivos y file systems, dependiendo de la aplicacin, puede ser muy dinmico y puede, con el tiempo, resultar en fragmentaciones que tengan impacto en el rendimiento del file system, lo que influye a su vez en el rendimiento de la aplicacin. El acceso a archivos fragmentados puede necesitar un gran nmero de bsquedas y mayores tiempos de respuesta de I/O. En algn punto, el administrador del sistema debe decidir reorganizar la ubicacin de los archivos dentro del volumen lgico para reducir la fragmentacin y obtener una distribucin ms pareja. El comando fileplace puede asistir en esta tarea mostrando la ubicacin de los bloques en un archivo de un volumen lgico o de uno o mas volmenes fsicos. El comando fileplace espera un argumento que contenga el nombre del archivo a examinar, por ejemplo:
# fileplace -iv sixMB File: sixMB Size: 6291456 bytes Vol: /dev/restlv Blk Size: 4096 Frag Size: 4096 Nfrags: 1536 Compress: no Inode: 21 Mode: -rw-r--r-- Owner: root Group: sys DOUBLE INDIRECT BLOCK: 77000 INDIRECT BLOCKS: 75321 77001 Logical Fragment ---------------0149576-0149583 0075322-0075773 0149584-0150147 0077002-0077513

8 452 564 512

frags 32768 Bytes, 0.5% frags 1851392 Bytes, 29.4% frags 2310144 Bytes, 36.7% frags 2097152 Bytes, 33.3%

1536 frags over space of 74826 frags: space efficiency = 2.1% 4 fragments out of 1536 possible: sequentiality = 99.8%

Este ejemplo muestra la fragmentacin lgica de un archivo grande (sixMB). La informacin general que muestra el fileplace es: File Size Vol Blk Size Frag Size Nombre del archivo. Tamao del archivo en bytes. Nombre del volumen lgico del file system. Tamao de bloque fsico, 4 KB. Tamao de fragmentacin, tambin tpicamente 4 KB, pero pueden especificarse valores como 512, 1 KB, 2 KB, en el momento de la creacin del file system. Cantidad de fragmentos utilizados por el archivo. Compresin del file system, por defecto es no. Pgina 138 de 283

Nfrags Compress

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Inode Mode/Owner/Group

El nmero de referencia del inodo. Informacin del inodo a nivel file system UNIX.

Este archivo tiene, por su tamao, tanto bloques indirectos (75321, 77001), como bloques indirectos dobles (7700). Esta informacin es obtenida utilizando el comando fileplace -i. La primera columna bajo Logical Fragment muestra los nmeros de bloques lgicos, donde estn las diferentes partes del archivo. La siguiente columna muestra la cantidad de fragmentes que estn contiguos y la cantidad de bytes en esos fragmentos contiguos. El ltimo nmero es el porcentaje del rango de bloques comparado con el tamao total. Finalmente, se utiliza el comando fileplace -v se calculan los valores de eficiencia de espacio y secuencialidad del espacio. Alta eficiencia de espacio implica que los archivos estn menos fragmentados y probablemente ofrecern un mejor acceso secuencial. Utilizando el comando fileplace -p, son mostrados el nmero de bloques fsicos y el volumen o volmenes fsicos. El siguiente es un ejemplo utilizando fileplace en un volumen lgico espejado:
# fileplace -p /u/mirrfs/t5 File: /u/mirrfs/t5 Size: 504320 bytes Vol: /dev/mirrlv Blk Size: 4096 Frag Size: 4096 Nfrags: 124 Compress: no Physical Addresses (mirror copy 1) Fragment ---------------------------------0320104-0320111 hdisk1 8 frags 32768 Bytes, 6.5% 0319242-0319305 hdisk1 64 frags 262144 Bytes, 51.6% 0319310-0319361 hdisk1 52 frags 212992 Bytes, 41.9% Physical Addresses (mirror copy 2) Fragment ---------------------------------0320104-0320111 hdisk2 8 frags 32768 Bytes, 6.5% 0319242-0319305 hdisk2 64 frags 262144 Bytes, 51.6% 0319310-0319361 hdisk2 52 frags 212992 Bytes, 41.9% Logical --------------0004168-0004175 0003306-0003369 0003374-0003425 Logical --------------0004168-0004175 0003306-0003369 0003374-0003425

Este ejemplo muestra las direcciones fsicas utilizadas por el archivo t5 en el volumen lgico mirrlv. El archivo est ubicado fsicamente en los discos hdisk1 y hdisk2.
Nota

El comando fileplace no muestra archivos NFS remotos. Si un archivo remoto es especificado, el comando fileplace devuelve un mensaje de error. El comando fileplace lee la lista de bloques del archivo directamente del volumen lgico en el disco. Si el archivo fue creado, extendido o truncado recientemente, la informacin puede ser que no est en disco an. Utilice el comando sync para guardar la informacin en el volumen lgico.

4.3.5.2 Desfragmentacin de un file system En el tiempo de vida de un file system, un gran nmero de archivos es creado y eliminado. Esto deja, con el tiempo, una gran cantidad de huecos de bloques libres. Esta fragmentacin tiene un Pgina 139 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

impacto negativo en el rendimiento del file system, y los nuevos archivos son generados con una alta fragmentacin. Hay una forma simple de organizar esos huecos libres. El comando defragfs incrementa el espacio libre contiguo de un file system reorganizando las asignaciones para que sean ms contiguas, en lugar de que estn esparcidas por todo el disco. El comando defragfs est diseado para file systems fragmentados y comprimidos. Sin embargo, se puede utilizar para incrementar el espacio libre contiguo en file systems no fragmentados. Otra forma simple de reorganizar el file system es recrearlo utilizando una copia de seguridad.

4.3.6 Recomendaciones generales de rendimiento de I/O


Utilizando lslv, fileplace, filemon, y iostat, se pueden identificar problemas de I/O, de grupos de volmenes y de volmenes lgicos. Las siguientes son recomendaciones generales sobre cmo obtener un buen rendimiento en file systems y el LVM, y cundo utilizar las herramientas descriptas. Organizacin de un volumen lgico para obtener el mejor rendimiento: Ubicar los volmenes lgicos ms activos en diferentes volmenes fsicos para reducir la contencin de disco. Distribuir los volmenes lgicos ms activos sobre mltiples volmenes fsicos de manera que sea posible el acceso paralelo. Ubicar los volmenes lgicos ms activos en el centro de los volmenes fsicos, los moderados en las partes medias y los ms inactivos en los bordes, de manera que los volmenes fsicos mas utilizados tengan los mejores tiempos de acceso. El espejado puede mejorar el rendimiento de aplicaciones de lectura intensiva, pero como las escrituras necesitan ser realizadas varias veces, puede impactar en el rendimiento de otras aplicaciones. - Si el espejado es necesario, se debe configurar la poltica de scheduling en paralelo y la poltica de asignacin en strict. La poltica de scheduling paralelo activa la lectura desde el disco ms cercano, y la poltica de asignacin strict asigna cada copia en volmenes fsicos separados. Crear los volmenes lgicos contiguos para reducir los tiempos de acceso. Configurar la poltica inter en maximum. Esto distribuye cada volumen lgico sobre la mayor cantidad posible de volmenes fsicos, lo que permite distribuir las lecturas y escrituras en diferentes discos. Ubicar los volmenes lgicos utilizados frecuentemente en posiciones cercanas, para reducir los tiempos de bsqueda. Configurar write verify en no, de manera que no haya una inmediata lectura (similar a un chequeo de paridad) para cada escritura realizada. Striping de volmenes lgicos: Distribuya cada volumen lgico en tantos volmenes fsicos como sea posible. Utilice todos los adaptadores posibles para los volmenes fsicos. Cree un grupo de volmenes separado para los volmenes lgicos con striping. Recomendaciones de striping: El tamao de la unidad de striping debe ser igual al max_coalesce, que por defecto es 64 KB. El valor max_coalesce es el tamao de requerimiento ms grande (en trminos de transmisin de datos) que puede hacer un dispositivo SCSI. Utilice un valor de minpgahead de 2: esto dar la menor cantidad de pginas a leer cuando Pgina 140 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

comienza una lectura. Utilice un maxpgahead de 16, para que las lecturas se realicen en unidades de striping (64 KB) y de esta manera resulte que una unidad de striping es leda completa en cada lectura a disco. Si es posible, se recomienda modificar las aplicaciones que utilizan volmenes lgicos para que realicen el I/O en unidades de 64 KB. Limitaciones del striping - El espejado con striping no es posible en versiones anteriores a la 4.3.3. En AIX 4.3.3, el espejado de un volumen lgico con striping es posible utilizando la poltica de asignacin fsica superstrict. - El striping de disco es mayormente efectivo para operaciones de I/O secuenciales. Con archivos accedidos en forma aleatoria no es tan efectivo. Temas relativos al rendimiento de los file systems: Genere un log de volumen lgico adicional para separar el log de los file systems ms utilizados del log por defecto. Esto incrementa la utilizacin de los recursos en forma paralela. Un escenario de utilizacin del lslv: Determinar si un file system muy activo est mejor ubicado en un disco o distribuido en varios discos. Algunos escenarios de utilizacin del filemon: Determinar si archivos muy activos son locales o remotos. Determinar si los espacios de paginado dominan la utilizacin de disco. Revisar la utilizacin intensa de volmenes fsicos. Determinar si el tipo de disco (SCSI-1, SCSI2, cinta, etc.) o de adaptadores SCSI provocan el cuello de botella. Algunos escenarios de utilizacin del fileplace: Determinar si la aplicacin realiza muchas operaciones sincrnicas (sin cache) de I/O de archivos. Revisar la fragmentacin de archivos. Determinar si los archivos ms utilizados estn muy fragmentados. Temas relativos al rendimiento de disco de los espacios de paginado: Nunca agregue ms de un espacio de paginado en el mismo volumen fsico. Reorganice o agregue espacio de paginado en varios volmenes fsicos. Los espacios de paginado deben ser todos del mismo tamao.

4.3.7 Consumo de las herramientas de rendimiento


Como en toda medicin de rendimiento en un sistema, cada herramienta consume algunos recursos del sistema:
lslv filemon

Este comando utiliza principalmente tiempo de CPU. Este comando consume algo de CPU, utilice esta herramienta con discrecin, y tenga en cuenta el rendimiento del sistema respecto al impacto que pueda generar la utilizacin de esta herramienta. En un entorno de CPU saturada con un nivel alto de transferencias a disco, el filemon disminuye el rendimiento del programa en un cinco por ciento. La mayora de las veces el fileplace utiliza menos de 0.3 segundos de tiempo de CPU. Pgina 141 de 283

fileplace

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

iostat

El comando iostat agrega poca carga al sistema. Utiliza cerca de 20 milisegundos de tiempo de CPU por cada reporte generado.

Estas estimaciones son conclusiones de mediciones realizadas en una RS/6000 Modelo 320.

4.3.8 Sumario de comandos


Esta es la lista de los comandos descripta en este captulo. Para una referencia completa de los siguientes comandos, consulte la documentacin de AIX. 4.3.8.1 El comando filemon El comando filemon monitorea el rendimiento de los file systems, y reporta la actividad de I/O de los archivos lgicos, segmentos de memoria virtual, volmenes lgicos, y volmenes fsicos. El comando tiene la siguiente sintaxis:
filemon [ -d ] [ -i Archivo ] [ -o Archivo] [ -O Niveles ] [ -P ] [ -T n] [ -u ] [-v ]

4.3.8.2 El comando fileplace El comando fileplace muestra la ubicacin de los bloques de archivo en los volmenes lgicos o fsicos. El comando tiene la siguiente sintaxis:
fileplace [ { -l | -p } [ -i ] [ -v ] ] Archivo

4.3.8.3 El comando lslv El comando lslv muestra la informacin sobre volmenes lgicos. El comando tiene la siguiente sintaxis: Para mostrar informacin del volumen lgico:
lslv [ -L ] [ -l|-m ] [ -nVolumenFsico ] VolumenLgico

Para mostrar los mapas de asignacin del volumen lgico:


lslv [ -L ] [ -nVolumenFsico ] -pVolumenFsico [ VolumenLgico ]

4.4 Herramientas de rendimiento de red


En esta seccin se vern los siguientes temas: Visin general de los problemas de rendimiento de red Herramientas de monitoreo de red Herramientas de optimizacin de red

Pgina 142 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

4.4.1 Visin general


Las herramientas de rendimiento de red que se recomienda utilizar primero son los comandos ping y netstat. Normalmente, proveen suficiente informacin para descubrir los problemas. Para entender las caractersticas del rendimiento del subsistema de red en AIX, se debe enten-der ante todo algo de la arquitectura fundamental. En la figura siguiente se ve el paso de los datos desde una aplicacin en un sistema a otra aplicacin en un sistema remoto:

La siguiente descripcin corresponde al diagrama: Como una aplicacin escribe en un socket, los datos son copiados del espacio del usuario en un buffer de envos del socket (socket send buffer) en el espacio del kernel. Dependiendo de la cantidad de datos copiados en el buffer de envos del socket, el socket coloca los datos en mbufs o clusters. El tamao de los buffers de la memoria virtual que son usados por la entrada es limitado por los valores: - udp_sendspace - tcp_sendspace Una vez que los datos son copiados en el buffer de envos del socket, la capa del socket (socket layer) llama a la capa de transporte (transport layer) (TCP o UDP), pasndole un puntero a la lista de mbufs (una cadena de mbuf). Si el tamao de los datos es ms grande que la unidad mxima de transferencia (MTU) de la LAN, se tiene en cuenta una de las siguientes condiciones: Pgina 143 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

- TCP divide la salida en segmentos que cumplen con el lmite MTU. - UDP deja la divisin de la salida a la capa IP (IP layer). Si IP recibe un paquete ms grande que el MTU de la interfase, la fragmenta en paquetes y los enva al sistema remoto, que los reagrupa y regenera el paquete original. Cuando la capa de la interfase (interface layer) recibe un paquete de IP, este adjunta el encabezamiento de la capa de enlace (link-layer header) al principio del paquete y llama a la rutina de escritura del controlador de dispositivos. En la capa del controlador de dispositivos (device-driver layer), la cadena de mbuf conteniendo el paquete es encolada en la cola de transmisin. La cantidad mxima de buffers que pueden ser encolados es controlada por el parmetro de sistema tx_que_size. Los paquetes entrantes son puestos en la cola de recepcin del controlador de dispositivos, y pasados a travs de la capa de interfase a la capa IP. La cantidad mxima de buffers entrantes que pueden ser encolados es controlada por el parmetro de sistema rx_que_size. Si IP en el sistema receptor determina que el IP del sistema transmisor fragment un bloque de datos, combina los fragmentos y regenera el original y pasa los datos a TCP o UDP. Si uno de los fragmentos es perdido en la transmisin, el paquete incompleto es finalmente descartado por el receptor. El tiempo que IP espera por un fragmento perdido es controlado por el parmetro ipfragttl. - TCP ensambla los segmentos originales y ubica la entrada en el buffer de recepcin del socket (socket receive buffer). - UDP simplemente pasa la entrada al buffer de recepcin del socket. El tamao mximo de las colas IP de recepcin de paquetes es controlado por el parmetro ipqmaxlen, que es visualizado y modificado con el comando no. Si el tamao de la cola de entrada alcanza el tamao mximo, los siguientes paquetes son rechazados. Cuando una aplicacin realiza un requerimiento, los datos apropiados son copiados desde el buffer de recepcin del socket en la memoria del kernel al buffer en el segmento de trabajo de la aplicacin.

4.4.2 Optimizacin de las colas de transmisin y recepcin de los adaptadores


La mayora de los controladores (drivers) de comunicacin proveen una coleccin de parmetros configurables para controlar los recursos de transmisin y recepcin. Generalmente, estos parmetros controlan los lmites de las colas de transmisin y recepcin, pero pueden adems controlar la cantidad y tamao de los buffers y otros recursos. Para chequear el tamao de la cola de un adaptador ent0 utilice el comando lsattr:
# lsattr -El ent0 busio busintr intr_priority tx_que_size rx_que_size full_duplex use_alt_addr alt_addr 0x1000100 15 3 64 32 no no 0x000000000000 Bus I/O address False Bus interrupt level False Interrupt priority False TRANSMIT queue size True RECEIVE queue size True Full duplex True Enable ALTERNATE ETHERNET address True ALTERNATE ETHERNET address True

Para cambiar parmetros como el tamao de cola, realice el siguiente procedimiento. Desconecte la interfase: Pgina 144 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# ifconfig en0 detach

Cambie el valor del parmetro apropiado:


# chdev -l ent0 -a tx_que_size=128 ent0 changed

Reconecte la interfase:
# ifconfig en0 up

Para ver si el tamao de las colas se debe cambiar, ejecute el comando netstat o las utilidades de estadsticas del adaptador (entstat, tokstat u otros):
# netstat -v ETHERNET STATISTICS (ent0) : Device Type: IBM PCI Ethernet Adapter (22100020) Hardware Address: 08:00:5a:fc:d2:e1 Elapsed Time: 0 days 0 hours 19 minutes 16 seconds Transmit Statistics: -------------------Packets: 19 Bytes: 1140 Interrupts: 0 Transmit Errors: 0 Packets Dropped: 0 Max Packets on S/W Transmit Queue: 1 S/W Transmit Queue Overflow: 0 Current S/W+H/W Transmit Queue Length: 0 Broadcast Packets: 19 Multicast Packets: 0 .... Receive Statistics: ------------------Packets: 0 Bytes: 0 Interrupts: 0 Receive Errors: 0 Packets Dropped: 0 Bad Packets: 0

Broadcast Packets: 0 Multicast Packets: 0

Dos parmetros deben revisarse: Max Packets on S/W Transmit Queue. Indica la cantidad mxima de paquetes salientes que fueron encolados simultneamente en la cola de transmisin. Un indicativo de que el tamao de la cola es inadecuado es que este valor sea igual al valor del parmetro tx_que_size. Esto indica que la cola estuvo llena en algn momento. S/W Transmit Queue Overflow. Indica la cantidad de paquetes salientes que desbordaron la cola de transmisin. Un valor diferente a cero indica que deben tomarse las mismas acciones que si el Max Packets on S/W Transmit Queue alcanza el valor del parmetro tx_que_size. El tamao de la cola de transmisin debe incrementarse.

4.4.3 Optimizacin de protocolos


El principal objetivo en la optimizacin del rendimiento de red es balancear las demandas de los usuarios dentro de los lmites de los recursos para asegurar un rendimiento de red aceptable. Se puede hacer siguiendo estos pasos: Distinguir la carga de trabajo, la configuracin y el ancho de banda. Medir el rendimiento. - Utilizar herramientas, identificar cuellos de botella. - Herramientas tiles son: netstat, tcpdump, iptrace. Ajustar los parmetros de red. Pgina 145 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

- Realizar los ajustes. - Herramientas de optimizacin tiles son: no, nfso, chdev, ifconfig. El AIX asigna memoria virtual para varias tareas de TCP/IP. El subsistema de red utiliza una facilidad para el manejo de memoria llamada mbuf. Los mbufs son utilizados preferentemente para almacenar datos entrantes y salientes del trfico de red. Tener grupos de mbuf del tamao correcto puede tener un efecto muy positivo en el rendimiento de red. La carga de red pesada puede ser una explicacin de la falta de memoria para el sistema, pero muy poca memoria virtual para uso de red puede causar prdida de paquetes. El paquete perdido, por otro lado, puede reducir el rendimiento de las transmisiones debido al tiempo perdido en retransmisiones. El sistema operativo AIX ofrece la capacidad de configurar los grupos de mbuf en tiempo real. Hay algunos parmetros que se pueden modificar con este propsito: thewall variable del kernel, controla la cantidad mxima de RAM (en kilobytes) que la facilidad de manejo de mbuf puede asignar desde el VMM. variable del kernel, asigna el tamao del buffer de envos del socket. Esto controla que una aplicacin no sature el buffer de envos del socket y limita la cantidad de mbufs usados por la aplicacin. El valor por defecto es 16384. variable del kernel, asigna el tamao del buffer de recepcin del socket cuando una aplicacin abre el socket de TCP. El valor por defecto es 16384. variable del kernel, marca el lmite de memoria que puede ser usada por un socket UDP como buffer de datos salientes. Si una aplicacin llena el espacio de este buffer, deber dormir hasta que una parte de los datos haya pasado a la siguiente capa en la pila de protocolos. El valor por defecto es 9216. variable del kernel, marca el lmite de memoria que puede ser usada por un socket UDP como buffer de datos entrantes. El valor por defecto es 41920. Si el valor de esta variable no es cero, permite que el tamao de ventana del TCP sea de 32 bits como mximo, en lugar de 16 bits. Esto significa que se puede configurar el tcp_recvspace y el tcp_sendspace con valores mayores a 64 KB. variable del kernel, controla el lmite superior de todos los buffers. variable del kernel, controla el tamao de la cola de entrada del IP. El valor por defecto es 100 paquetes, lo cual es suficiente para sistemas con dispositivos en una sola red. Se puede incrementar este valor para sistemas con dispositivos en varias redes. El problema generado por un tamao de cola insuficiente es la prdida de paquetes.

tcp_sendspace

tcp_recvspace

udp_sendspace

udp_recvspace

rfc1323

sb_max ipqmaxlen

Nota

Los valores de las variables tcp o udp_sendspace y tcp o udp_recvspace deben ser menores o iguales al valor del sb_max, de manera que se quiere utilizar buffers mayores o menores que el valor por defecto, se debe cambiar tambin el valor de la variable sb_max.

Pgina 146 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Una aplicacin de red que enva datos en forma excesiva y repentina, como un backup sobre red, puede generar un desborde de los buffers del socket. Insuficiente espacio de buffer de los sockets TCP simplemente limitar el rendimiento (throughput), pero no inhibe la operacin. La ventana de TCP limita la cantidad de datos pendientes a ser aceptados y limita efectivamente el rendimiento de los sockets. El tcp_recvspace controla el tamao de la ventana de TCP, la que no puede ser ms grande que el espacio de buffer del socket. Para incrementar el rendimiento de una aplicacin determinada, se debe remover el lmite de tamao de la ventana TCP, cambiando el parmetro rfc1323 a 1 e incrementando los valores tcp_sendspace y tcp_recvspace.

4.4.4 Herramientas de monitoreo del rendimiento de red


Esta seccin describe las herramientas de monitoreo mas comnmente utilizadas para aislar los problemas de rendimiento de red.

4.4.4.1 El comando vmstat Se deben utilizar herramientas de monitoreo para obtener ms estadsticas que ayuden a aislar un cuello de botella en la red. Cuando el comando vmstat muestra cantidades importantes de tiempo idle que no concuerdan con el problema, el sistema puede estar sufriendo problemas de red. El siguiente es un tpico ejemplo de un reporte del vmstat:
# vmstat 120 10 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------r 0 0 0 0 0 0 0 0 0 0 0 0 0 b 1 1 1 1 1 1 1 1 1 1 1 1 1 avm 19331 19803 19974 19815 19816 19816 19895 17147 17065 17163 17343 17579 17647 fre 824 996 860 860 855 737 724 724 720 720 720 712 712 re 0 0 0 0 0 0 0 0 0 0 0 0 0 pi 0 0 0 0 0 0 0 0 0 0 0 0 0 po 0 0 0 0 0 0 0 0 0 0 0 0 0 fr 0 0 0 0 0 0 0 0 0 0 0 0 0 sr 0 0 0 0 0 0 0 0 0 0 0 0 0 cy 0 0 0 0 0 0 0 0 0 0 0 0 0 in 636 533 822 535 577 602 616 649 516 614 420 466 497 sy 1955 7466 4055 4096 4582 2720 3842 6427 3629 9030 8777 2182 3298 cs us sy id wa 674 0 0 99 0 591 0 0 99 0 892 0 0 99 0 509 0 0 99 0 598 0 0 99 0 672 0 0 99 0 698 0 0 99 0 626 0 0 99 0 543 0 0 99 0 688 0 0 99 0 487 0 0 99 0 473 0 0 99 0 310 0 0 99 0

El I/O wait de disco est en la columna wa y el wait no relacionado con disco en la columna id. El wait no relacionado con disco incluye el I/O wait de red o el I/O wait de terminales. Si no hay I/O wait de terminales, entonces el sistema est esperando la finalizacin de una operacin de I/O. Se deben correr herramientas de monitoreo de red para encontrar las razones de dicho I/O wait de red.

4.4.4.2 El comando ping Cuando se tienen problemas de conexin, la primer herramienta que se debe usar el comando ping. Se utiliza para investigar problemas bsicos de conectividad punto a punto, contestando preguntas tales como si el host remoto est conectado a la red, y si la red entre los hosts es confiable. Adicionalmente, el ping puede indicar cuando un nombre de host y su direccin IP es consistente a travs de diferentes mquinas. Para verificar que el host server3 est vivo, ingrese el Pgina 147 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

siguiente comando:
# ping server3 PING server3: (9.3.240.58): 56 data bytes 64 bytes from 9.3.240.58: icmp_seq=0 ttl=255 time=1 ms 64 bytes from 9.3.240.58: icmp_seq=1 ttl=255 time=0 ms ^C ----server3 PING Statistics---2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0/0/1 ms

Como muestra el ejemplo, verifica los tiempos de ida y vuelta y las estadsticas de paquetes perdidos.

4.4.4.3 El comando traceroute Si no se puede alcanzar un host que est en una red diferente, se puede verificar la conexin con el comando traceroute. Este comando muestra cada gateway que el paquete atraviesa en su camino para encontrar el host destino, y el retraso o latencia de red asociada con ese segmento. Si es posible, examine las tablas de ruteo de la ltima mquina mostrada en la salida del traceroute para verificar si una ruta existe para el destino de ese host. En la ltima mquina mostrada es en donde el ruteo se desva de su camino.
# traceroute 9.3.240.56 traceroute to 9.3.240.56 (9.3.240.56), 30 hops max, 40 byte packets 1 server4e (10.47.1.1) 1 ms 1 ms 0 ms 2 server1 (9.3.240.56) 1 ms 1 ms 1 ms

Si las conexiones se desarrollan deficientemente, la fragmentacin de paquetes puede ser el problema. AIX Versin 4.3 tiene un servicio que permite el descubrimiento automtico de los MTU de paso. Con el comando no se puede configurar el tamao fijo del MTU. 4.4.4.4 El comando netstat La herramienta ms comn para el monitoreo de red es netstat. El comando netstat se utiliza para mostrar el estado de la red. Brinda un indicador de la confiabilidad de la interfase de red local. Tradicionalmente, es ms utilizado para la determinacin de problemas que para mediciones de rendimiento. Es til para determinar la cantidad de trfico en la red, y por lo tanto, para determinar si los problemas de rendimiento se deben a congestionamientos. Hay varias opciones para mostrar: Sockets activos Estadsticas de protocolos Informacin sobre controladores de dispositivos Estructuras de datos de red Para mostrar estadsticas grabadas por las rutinas de manejo de memoria, utilice el comando
netstat con el flag -m. Para activar estadsticas ms extensas sobre los servicios de memoria de

red (para AIX Versin 4.3.2 y superiores), se debe configurar la variable del kernel extendednetstats en 1, de la siguiente manera:
# no -o extendednetstats=1

Pgina 148 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# netstat -m 16 mbufs in use: 0 mbuf cluster pages in use 4 Kbytes allocated to mbufs 0 requests for mbufs denied 0 calls to protocol drain routines Kernel malloc statistics: ******* CPU 0 ******* By size inuse 32 97 64 124 128 111 256 152 512 32 1024 1 2048 1 4096 2 8192 2 16384 1 By type mbuf mcluster socket pcb routetbl ifaddr mblk mblkdata strhead strqueue strmodsw strosr strsyncq streams devbuf kernel table temp inuse 16 0 111 80 8 7 66 2 11 18 20 0 25 137 1 14 8 calls 102 805 923 41806 231 158 716 14 133 1 calls 41218 764 862 495 15 7 435 294 48 112 20 20 326 245 1 15 13 failed 0 0 0 0 0 0 0 0 0 0 free 31 68 17 24 16 19 1 7 2 12 hiwat 640 320 160 384 40 20 10 120 10 24 memmax 19712 8192 18688 12992 2080 832 15488 35840 4256 11776 1280 256 3392 16256 256 46432 15744 freed 0 0 0 0 0 2 0 0 0 7 mapb 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

failed memuse 0 4096 0 0 0 18048 0 12480 0 1312 0 832 0 15104 0 16384 0 3232 0 9216 0 1280 0 0 0 2688 0 14976 0 256 0 45920 0 7424

Streams mblk statistic failures: 0 high priority mblk failures 0 medium priority mblk failures 0 low priority mblk failures

El primer prrafo de datos muestra cunta memoria es asignada para mbufs. La cantidad total de bytes asignada para mbufs es la primera estadstica que se debe revisar. En este ejemplo, hay asignados 4 KB sobre un lmite posible de 16 MB. Este lmite puede estar regulado por la variable del kernel thewall. La segunda estadstica es llamada requerimientos para mbufs denegados (requests for mbufs denied). El valor distinto a cero indica que se debe incrementar el lmite configurando el valor de thewall. Para revisar el valor del thewall, ingrese:
# no -o thewall thewall = 16384

Para estadsticas de protocolos de red, utilice el comando netstat con el flag -p y el nombre del protocolo. Para recibir estadsticas del protocolo IP, utilice el comando de la siguiente manera:
# netstat -p IP ip: : 59821 total packets received 0 bad header checksums 0 with size smaller than minimum 0 with data size < data length

Pgina 149 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

0 with header length < data size 0 with data length < header length 0 with bad options 0 with incorrect version number 7985 fragments received 0 fragments dropped (dup or out of space) 7 fragments dropped after timeout 3989 packets reassembled ok 55825 packets for this host .... 47289 packets sent from this host 8 packets sent with fabricated ip header 0 output packets dropped due to no bufs, etc. 0 output packets discarded due to no route 11000 output datagrams fragmented 22000 fragments created 0 datagrams that can't be fragmented .... 0 ipintrq overflows

Cuando el contador ipintrq overflows tiene un valor distinto a cero, se debe cambiar el tamao de la cola de entrada de IP utilizando el comando no:
# no -o ipqmaxlen=100

Utilice el siguiente comando para verificar la cantidad de paquetes que pasan a travs de las interfases y la cantidad de errores de I/O:
# netstat -i Name Mtu lo0 16896 lo0 16896 lo0 16896 en0 1500 en0 1500 tr0 1492 tr0 1492 Network link#1 127 ::1 link#2 10.47 link#3 9.3.240 Address localhost.austin. 8.0.5a.fc.d2.e1 server4_ 0.4.ac.61.73.f7 server4f Ipkts Ierrs 282515 0 282515 0 282515 0 49995 0 49995 0 730283 0 730283 0 Opkts Oerrs Coll 283832 0 0 283832 0 0 283832 0 0 27187 3929 0 27187 3929 0 317239 722 0 317239 722 0

4.4.4.5 El comando netpmon El comando netpmon es la herramienta utilizada para el anlisis del I/O de red. Utiliza trace como una forma de recolectar estadsticas sobre eventos ocurridos en el cdigo de la red en el kernel. El trace debe ser detenido utilizando el comando trcstop. El netpmon entonces genera todos los reportes especificados y termina. En el ambiente cliente-servidor, netpmon entrega una excelente descripcin de como la red afecta el rendimiento general. El comando netpmon puede ejecutarse tanto en el cliente como en el servidor. Este comando apunta especficamente a los siguientes requerimientos fsicos y lgicos: CPU Usage Monitorea la utilizacin de CPU por todos los threads y los controladores de interrupciones. Estima cunto de este uso es debido a tareas relacionadas con la red. Monitorea las operaciones de I/O a travs de los controladores de dispositivos de red. Monitorea la utilizacin, los tamaos de las colas y los host de destino. Monitorea todas las subrutinas en los sockets IP. Monitorea las subrutinas de lectura y escritura en archivos de clientes NFS, requerimientos RPC en clientes NFS, y requerimientos de escritura o lectura en el servidor NFS

Network Device-Driver I/O

Internet Socket Calls

Pgina 150 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El siguiente ejemplo muestra como la operacin de red puede impactar en el rendimiento de CPU. Durante la siguiente sesin del netpmon se efectu cierta carga de NFS.
# netpmon -O cpu; sleep 10 ; trcstop on Jul 10 18:08:31 2000 System: AIX server1 Node: 4 Machine: 000BC6FD4C00 ======================================================================== Process CPU Usage Statistics: ----------------------------Network Process (top 20) PID CPU Time CPU % CPU % ----------------------------------------------------------------kproc 774 1.4956 24.896 0.000 kproc 516 1.4940 24.870 0.000 kproc 1032 1.4929 24.852 0.000 kproc 1290 1.4854 24.727 0.000 kproc 2064 0.0089 0.148 0.000 topas 14798 0.0051 0.084 0.000 netpmon 19204 0.0035 0.059 0.000 nfsd 25054 0.0026 0.044 0.044 ksh 5872 0.0010 0.016 0.000 dtterm 17910 0.0009 0.014 0.000 netpmon 22732 0.0007 0.012 0.000 trace 28206 0.0006 0.010 0.000 swapper 0 0.0005 0.008 0.000 xterm 21984 0.0004 0.007 0.001 X 4212 0.0003 0.005 0.000 trcstop 11070 0.0002 0.004 0.000 java 17448 0.0002 0.003 0.000 init 1 0.0001 0.002 0.000 dtwm 10160 0.0001 0.002 0.000 ot 27694 0.0001 0.001 0.000 ----------------------------------------------------------------Total (all processes) 5.9933 99.767 0.045 Idle time 0.0000 0.000 ======================================================================== /esta salida ha sido abreviada/

Ntese que slo el daemon nfsd consumi tiempo en la columna network CPU. Esta columna indica el porcentaje del tiempo total que el controlador de interrupciones utiliz para eventos relacionados con la red. Para otras estadsticas, utilice el comando netpmon con el flag -O flag y la palabra apropiada. Las palabras posibles son: cpu, dd (network device-driver I/O), so (Internet socket call I/O), nfs (NFS I/O) y all.

4.4.4.6 Los comandos tcpdump e iptrace Las herramientas explicadas previamente permiten obtener un nmero variado de estadsticas y eventos del tipo red en el kernel de AIX. Sin embargo, es problemtico cuando los contadores de estadsticas no son suficientes para encontrar la causa del problema. Es necesario entonces ver los datos reales que van por los cables. Hay dos comandos que permiten ver todos los paquetes que entran o salen a travs de una interfase: tcpdump e iptrace. El comando tcpdump muestra los encabezamientos de los paquetes capturados en una interfase de red especificada. El siguiente ejemplo muestra una sesin de telnet entre los hosts 9.3.240.59 y 9.3.240.58:
# tcpdump -i tr0 -n -I -t dst host 9.3.240.58 9.3.240.59.44183 > 9.3.240.58.23: S 1589597023:1589597023(0) win 16384 <mss 1452> [tos 0x10]

Pgina 151 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

9.3.240.58.23 > 9.3.240.59.44183: 15972 <mss 1452> 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.58.23 > 9.3.240.59.44183: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.58.23 > 9.3.240.59.44183: 9.3.240.59.44183 > 9.3.240.58.23: 9.3.240.59.44183 > 9.3.240.58.23:

S 1272672076:1272672076(0) ack 1589597024 win . . P P . . P P P P P P ack 1 win 15972 [tos 0x10] ack 1 win 15972 [tos 0x10] 1:16(15) ack 1 win 15972 [tos 0x10] 1:16(15) ack 1 win 15972 [tos 0x10] ack 6 win 15972 [tos 0x10] ack 6 win 15972 [tos 0x10] 6:27(21) ack 1 win 15972 (DF) 1:27(26) ack 27 win 15972 [tos 0x10] 1:27(26) ack 27 win 15972 [tos 0x10] 27:81(54) ack 27 win 15972 (DF) 27:30(3) ack 81 win 15972 [tos 0x10] 27:30(3) ack 81 win 15972 [tos 0x10]

La primera lnea indica que el puerto TCP 44183 en el host 9.3.240.59 envi un paquete al puerto del telnet (23) en el host 9.3.240.58. La S indica que el flag SYN fue configurado. El nmero de secuencia del paquete era el 1589597023 y no contena datos. No haba un campo ack, el campo de recepcin disponible win era de 16384 bytes y haba una opcin max-segment-size (mss) requiriendo un mss de 1452 bytes. El host 9.3.240.58 contest con un paquete similar, excepto que este inclua un campo ack para el host 9.3.240.59 SYN. El host 9.3.240.59 entonces reconoci el host 9.3.240.58 SYN. El . (punto) significa que no se coloc ningn flag. El paquete no contiene datos, por lo que no hay un nmero de secuencia de datos. En la undcima lnea, el host 9.3.240.59 envi al host 9.3.240.58 26 bytes de datos. El flag PUSH es colocado en el paquete. En la duodcima lnea, el host 9.3.240.58 dice haber recibido los datos enviados por el host 9.3.240.59 y enva 54 bytes de datos; adems incluye un ack para el nmero de secuencia 27. El daemon iptrace graba los paquetes IP recibidos desde interfases configuradas. Flags del comando proveen un filtro de manera que el daemon retenga los paquetes que cumplen con un criterio especfico. Los paquetes son rastreados nicamente entre el host local donde se invoca el daemon iptrace y el host remoto. Para formatear la salida del iptrace, utilice el comando ipreport. El siguiente ejemplo muestra la consulta del host 9.3.240.59 al servidor DNS 9.3.240.2. Aqu se muestra la salida del comando nslookup:
# nslookup www.prokom.pl Server: dhcp240.itsc.austin.ibm.com Address: 9.3.240.2 Non-authoritative answer: Name: mirror.prokom.pl Address: 153.19.177.201 Aliases: www.prokom.pl

Los datos fueron capturados por el comando iptrace, similar al siguiente:


# iptrace -a -P UDP -s 9.3.240.59 -b -d 9.3.240.2 /tmp/dns.query

La salida del comando iptrace fue formateada por el comando ipreport, de la siguiente manera:
TOK: ====( 81 bytes transmitted on interface tr0 )==== 17:14:26.406601066 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:04:ac:61:73:f7, dst = 00:20:35:29:0b:6d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 9.3.240.59 > (server4f.itsc.austin.ibm.com) IP: < DST = 9.3.240.2 > (dhcp240.itsc.austin.ibm.com) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=59, ip_id=64417, ip_off=0 IP: ip_ttl=30, ip_sum=aecc, ip_p = 17 (UDP)

Pgina 152 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

UDP: <source port=49572, <destination port=53(domain) > UDP: [ udp length = 39 | udp checksum = 688d ] DNS Packet breakdown: QUESTIONS: www.prokom.pl, type = A, class = IN TOK: ====( 246 bytes received on interface tr0 )==== 17:14:26.407798799 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 18, frame control field = 40 TOK: [ src = 80:20:35:29:0b:6d, dst = 00:04:ac:61:73:f7] TOK: routing control field = 02c0, 0 routing segments TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 9.3.240.2 > (dhcp240.itsc.austin.ibm.com) IP: < DST = 9.3.240.59 > (server4f.itsc.austin.ibm.com) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=222, ip_id=2824, ip_off=0 IP: ip_ttl=64, ip_sum=7cc3, ip_p = 17 (UDP) UDP: <source port=53(domain), <destination port=49572 > UDP: [ udp length = 202 | udp checksum = a7bf ] DNS Packet breakdown: QUESTIONS: www.prokom.pl, type = A, class = IN ANSWERS: -> www.prokom.plcanonical name = mirror.prokom.pl -> mirror.prokom.plinternet address = 153.19.177.201 AUTHORITY RECORDS: -> prokom.plnameserver = phobos.prokom.pl -> prokom.plnameserver = alfa.nask.gda.pl -> prokom.plnameserver = amber.prokom.pl ADDITIONAL RECORDS: -> phobos.prokom.plinternet address = 195.164.165.56 -> alfa.nask.gda.plinternet address = 193.59.200.187 -> amber.prokom.plinternet address = 153.19.177.200

Hay dos paquetes mostrados en la salida del ipreport (los datos importantes se muestran en negrita). Cada paquete est dividido en unas pocas partes. Cada parte describe diferentes niveles de protocolos de red. Estn los token ring (TOK), IP, UDP, y las partes de aplicaciones (DNS). El primer paquete es enviado por el host 9.3.240.59 y es una pregunta sobre la direccin IP del host www.prokom.pl. La segunda es la respuesta.

4.4.5 Herramientas para el control del rendimiento de red


Utilice el comando no para configurar los atributos de red. El comando no muestra o modifica los atributos actuales en el kernel. Este comando slo acta en el kernel en ejecucin. El comando debe ejecutarse nuevamente cada vez que se reinicia el sistema o despus de que se configura la red. Para que los cambios sean permanentes, realcelos en el archivo /etc/rc apropiado. Para mostrar los valores actuales de todos los parmetros que se pueden cambiar, utilice el siguiente comando:
# no -a extendednetstats = 1 thewall = 18420 sockthresh = 85 sb_max = 1048576 somaxconn = 1024 ..... lowthresh = 90 medthresh = 95 psecache = 1

Pgina 153 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

subnetsarelocal = 1 maxttl = 255 ipfragttl = 60 ipsendredirects = 1 ipforwarding = 1 udp_ttl = 30 tcp_ttl = 60 arpt_killc = 20 tcp_sendspace = 16384 tcp_recvspace = 16384 udp_sendspace = 9216 udp_recvspace = 41920 .....

Para cambiar el valor del parmetro thewall, de 18420 a 36840, utilice el comando no de la siguiente manera:
# no -o thewall=36840

El comando ifconfig puede ser usado para asignar una direccin a una interfase de red o para configurar o mostrar la configuracin actual. En asuntos de optimizacin, se utiliza para cambiar el tamao MTU:
# ifconfig en0 mtu 1024

Nota

Los parmetros MTU tienen que ser iguales en todos los nodos de la red. El comando chdev tambin es utilizado para cambiar el valor de atributos del sistema. Los cambios realizados por el comando chdev son permanentes, porque son almacenados en la ODM. Para mostrar los valores actuales de los parmetros de la interfase en0, utilice el comando lsattr, de la siguiente manera:
# lsattr -El en0 mtu 1500 remmtu 576 netaddr 10.47.1.6 state up arp on netmask 255.255.0.0 security none authority broadcast netaddr6 alias6 prefixlen alias4 rfc1323 tcp_nodelay tcp_sendspace tcp_recvspace tcp_mssdflt Maximum IP Packet Size for This Device Maximum IP Packet Size for REMOTE Networks Internet Address Current Interface Status Address Resolution Protocol (ARP) Subnet Mask Security Level Authorized Users Broadcast Address N/A N/A N/A N/A N/A N/A N/A N/A N/A True True True True True True True True True True True True True True True True True True

Para cambiar en forma permanente el valor del parmetro MTU, ingrese:


# chdev -l en0 -a mtu=1024 en0 changed

4.4.6 Resolucin de nombres


Si una conexin de red por momentos parece inexplicablemente lenta y por momentos razonable, Pgina 154 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

se debe revisar la configuracin de resolucin de nombres del sistema. Para realizar un diagnstico bsico de la resolucin de nombres, se puede utilizar tanto el comando host como el comando nslookup.
# host dhcp240.itsc.austin.ibm.com dhcp240.itsc.austin.ibm.com is 9.3.240.2

La resolucin de nombres puede ser brindada por el servidor DNS remoto o por servidor NIS remoto. Si uno de ambos est cado, se debe esperar hasta que ocurra un time-out de TCP. La resolucin de nombres puede ser resuelta por una fuente alternativa, que puede ser un servidor de nombres secundario en el archivo local /etc/hosts. Primero revise el archivo /etc/netsvc.conf o la variable de ambiente NSORDER para verificar el orden de la resolucin de nombres. Luego verifique en el archivo /etc/resolv.conf la direccin IP del servidor de nombres e intente hacer un ping a ste. Si el ping es satisfactorio, entonces ste est vivo y accesible. Si no, intente utilizar un orden diferente para la resolucin de nombres.

4.4.7 Optimizacin del rendimiento de NFS


En esta seccin se ven temas relacionados con el rendimiento de clientes y servidores NFS. 4.4.7.1 Rendimiento del lado del servidor NFS Cuando los problemas de rendimiento apuntan a los servidores NFS, el asunto generalmente est relacionado con paquetes perdidos. Los servidores NFS pueden perder paquetes por sobrecarga de trabajo. Un lugar donde normalmente un servidor perder paquetes es en el buffer del socket UDP. Por defecto, en AIX Versin 4.3 se utiliza TCP para la transferencia de datos, pero UDP es an utilizado para montar. Los paquetes perdidos aqu son contados por la capa UDP, y las estadsticas se pueden observar utilizando el comando netstat -p UDP. Por ejemplo:
# netstat -p UDP udp: 89827 datagrams received 0 incomplete headers 0 bad data length fields 0 bad checksums 329 dropped due to no socket 77515 broadcast/multicast datagrams dropped due to no socket 0 socket buffer overflows 11983 delivered 11663 datagrams output (En este sistema el tamao del buffer era suficiente)

Normalmente, los paquetes NFS sern descartados en el buffer del socket nicamente cuando un servidor tiene mucho trfico NFS de escritura. El servidor NFS utiliza un socket UDP y un socket TCP conectados al puerto NFS, y todos los datos entrantes son alojados en esos puertos. El tamao por defecto de ese buffer es 60000 bytes. Dividiendo ese nmero por el tamao por defecto de un paquete NFS Versin 3 (32765), se puede ver que con slo 2 paquetes simultneos se sobrepasa el tamao del buffer. Esto puede ser realizado por tan slo un cliente NFS (con la configuracin por defecto). No es tan fcil como parece el hecho de sobrepasar el lmite del buffer durante la operacin normal del sistema. Tan rpido como el primer paquete llega al socket, un nfsd estar atento para tomar los datos. Una de dos cosas debe ocurrir para que haya prdida de paquetes. Debe haber un gran volumen de datos o una gran explosin de trfico para que los paquetes comiencen a ser rechazados. Si Pgina 155 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

hay un gran volumen de datos, una mezcla de muchas escrituras ms otro trfico adicional de NFS, no habr suficientes daemons nfsd para tomar los datos del socket tan rpido como para manejar dicha cantidad (esto consumira un nfsd dedicado para cada llamada NFS de cualquier tipo). En caso de una repentina explosin de trfico, puede ser que hayan suficientes nfsds, pero la velocidad en que los paquetes arriban al socket es tal que los daemons nfsd no pueden procesarlos suficientemente rpido para evitar el congestionamiento. Estas dos situaciones tienen diferentes resoluciones. En el caso de un gran volumen de datos, puede ser suficiente con incrementar la cantidad de daemons nfsd corriendo en el sistema. Esto es lo primero que se debe intentar, ya que correr mas daemons en una mquina AIX no implica un gran costo operativo. Se puede realizar con el siguiente comando:
# chnfs -n 16

Esto va a detener los daemons que se encuentren corriendo, modifica la base de datos SRC para cambiar el parmetro, y arranca los daemons indicados. En el caso de una explosin repentina de trfico, la nica solucin es agrandar el socket con la esperanza de que con una cantidad razonable de espacio adicional sea suficiente para que los daemons nfsd tengan tiempo de manejar la explosin. La memoria dedicada a este socket no estar disponible para otro uso por lo que se debe tener en cuenta que agrandar el socket implicara memoria poco utilizada la mayor parte del tiempo. Un administrador cuidadoso observar las estadsticas de saturacin del buffer del socket y en relacin a los problemas de rendimiento causados determinar qu tan grande debe ser el buffer del socket. Para revisar los parmetros del kernel relacionados con NFS, utilice el comando nfso:
# nfso -a portcheck= 0 udpchecksum= 1 nfs_socketsize= 60000 nfs_tcp_socketsize= 60000 nfs_setattr_error= 0 nfs_gather_threshold= 4096 nfs_repeat_messages= 0 nfs_udp_duplicate_cache_size= 0 nfs_tcp_duplicate_cache_size= 5000 nfs_server_base_priority= 0 nfs_dynamic_retrans= 1 nfs_iopace_pages= 0 nfs_max_connections= 0 nfs_max_threads= 8 nfs_use_reserved_ports= 0 nfs_device_specific_bufs= 1 nfs_server_clread= 1 nfs_rfc1323= 0 nfs_max_write_size= 0 nfs_max_read_size= 0 nfs_allow_all_signals= 0

Si se modifican los tamaos de nfsbuffer, se debe verificar que la variable del kernel sb_max sea mayor que el valor asignado al buffer NFS. El valor por defecto del sb_max es 1048576 en la versin 4.3.3 de AIX. Si es necesario incrementar el valor del sb_max, utilice el comando no. Se debe recordar que todas las modificaciones realizadas con los comando no y nfso son vlidas hasta el siguiente reinicio, a menos que los cambios sean agregados en un script de reinicio, por ejemplo, /etc/rc.nfs.

4.4.7.2 Rendimiento del lado del cliente NFS

Pgina 156 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El cliente NFS concentra sus problemas generalmente en la cantidad de daemons biod que utilizan. Hay una cantidad de deamons biod por defecto (seis para un montaje NFS V2, cuatro para un montaje NFS V3) que pueden operar en cualquier file system remoto montado en forma concurrente. La idea detrs de esta limitacin es que permitir ms de un cierto nmero de daemons biod operando contra un servidor al mismo tiempo pueden congestionarlo. Como esta es una regla de configuracin por montaje, pueden realizarse ajustes para configurar los montajes del cliente segn las capacidades del servidor. Cuando se evala cuanto daemons biod deben ejecutarse, se deben considerar las capacidades del servidor y la utilizacin normal del NFS en la mquina cliente. Si hay muchos usuarios o muchos procesos en el cliente que necesitar realizar operaciones NFS en el mismo file system NFS, se debe tener en cuenta que puede ocurrir una saturacin de los servicios biod con tan slo dos operaciones de lectura o escritura simultneas. Hasta seis daemons biod puede trabajar en la lectura de un archivo de un file system NFS. Si comienza otra lectura en otro file system NFS, ambas lecturas intentarn utilizar los seis daemons biod. En este caso, asumiendo que el o los servidores no estn saturados, el rendimiento se puede mejorar aumentando la cantidad de biod a 12. Se puede realizar utilizando el comando chnfs:
# chnfs -b 12

Por otro lado, supongamos que ambos file systems estn montados desde el mismo servidor y el servidor est operando al mximo de su capacidad. Agregar seis daemons biod puede empeorar dramticamente la respuesta debido a que el servidor comienza a descartar paquetes con los consiguientes time-outs y retransmisiones.

4.4.7.3 Opciones de montaje El comando mount tiene varias opciones especficas para NFS que pueden afectar el rendimiento. Las opciones ms tiles son usadas para configurar los tamaos de las lecturas y escrituras en algn valor que concuerde con el tamao de los paquetes de lectura/escritura que enva el servidor. Para montajes NFS Versin 3, los tamaos de lectura/escritura pueden incrementarse o disminuirse. El tamao por defecto es 32 KB. El mximo posible en AIX es 61440 bytes (60 x 1024). Utilizando 60 KB, puede provocar una pequea mejora de rendimiento en entornos especializados. Para incrementar los tamaos de lectura/escritura cuando tanto el servidor como el cliente son mquinas AIX requiere modificar la configuracin en ambas mquinas. En el cliente, se debe realizar el montaje cambiando los tamaos de lectura/escritura con la opcin -o. Por ejemplo, -o rsize=61440, wsize=61440. En el servidor, el tamao mximo de lectura/escritura es configurado con el comando nfso utilizando los parmetros nfs_max_write_size y nfs_max_read_size. Por ejemplo:
# nfso -o nfs_max_write_size=61440

NFS V3 utiliza TCP por defecto, mientras que NFS Versin 2 utiliza nicamente UDP. Esto significa que el requerimiento de montaje inicial del cliente utilizando TCP fallar. Para proveer compatibilidad con versiones anteriores el montaje es reintentado utilizando UDP, pero esto ocurre despus de un time-out de algunos minutos. Para solucionar el problema, NFS V3 provee los parmetros proto y vers con el comando mount. Estos parmetros son utilizados con la opcin -o para fijar el protocolo y la versin en un montaje especfico. El siguiente ejemplo fuerza el uso de UDP y NFS V2 para el requerimiento de montaje:

Pgina 157 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# mount -o proto=udp,vers=2,soft,retry=1 server4:/tmp /mnt

4.4.8 Sumario de comandos


Esta es la lista de los comandos descripta en este captulo. Para una referencia completa de los siguientes comandos, consulte la documentacin de AIX.

4.4.8.1 El comando netstat La sintaxis del comando netstat es la siguiente: Para mostrar sockets activos para cada protocolo o informacin sobre la tabla de ruteo:
/bin/netstat [ -n ] [ { -A -a } | { -r -i -I Interfase } ] [ -f FamiliaDeDirecciones ] [ -p Protocolo ] [ Intervalo ] [ Sistema ]

Para mostrar los contenidos de una estructura de datos de red:


/bin/netstat [ -m | -s | -ss | -u | -v ] [ -f FamiliaDeDirecciones ] [ -p Protocolo ] [ Intervalo ] [ Sistema ]

Para mostrar los contadores de paquetes en el subsistema de comunicaciones:


/bin/netstat -D

Para mostrar las estadsticas de los cache de buffer de red:


/bin/netstat -c

Para limpiar las estadsticas asociadas:


/bin/netstat [ -Zc | -Zi | -Zm | -Zs ]

4.4.8.2 El comando tcpdump La sintaxis del comando tcpdump es la siguiente:


tcpdump [ -I ] [ -n ] [ -N ] [ -t ] [ -v ] [ -c Nmero ] [ -i Interfase ] [ -w Archivo ] [ Expresin ]

4.4.8.3 El comando iptrace La sintaxis del comando iptrace es:


iptrace [ -a ] [ -e ] [ -PProtocolo ] [ -iInterfase ] [ -pPuerto ] [ -sHost [ -b ] ] [ -dHost [ -b ] ] ArchivoLog

4.4.8.4 El comando ipreport La sintaxis del comando ipreport es:


ipreport [ -e ] [ -r ] [ -n ] [ -s ] ArchivoLog

Pgina 158 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

4.5 Herramientas especficas para el manejo de rendimiento


En esta seccin se vern los siguientes temas: El scheduler de AIX El diseo de colas de ejecucin mltiples (multiple run queue) de la versin 4.3.3 de AIX El comando schedtune Los comandos nice y renice Introduccin al Workload Manager El alcance de este captulo se concentra en el scheduling de threads y las posibilidades de manejar prioridades de procesos con los comandos schedtune, nice, y renice. Tambin hay un repaso de los comandos ps, bindprocessor, emstat, y tprof.

4.5.1 El scheduler de AIX


La necesidad de un scheduler para la eficiencia de un sistema operativo es suprema. En cualquier sistema, hay ms threads y procesos corriendo que CPUs disponibles. Es por esto que el sistema operativo utiliza el scheduler para decidir a qu thread permitirle utilizar tiempo de CPU en cada momento. El scheduler selecciona el thread a ejecutar de una lista de threads listos para correr en la cola de ejecucin (run queue). La cantidad de threads en la cola de ejecucin es mostrado en negrita en la primera columna de la salida del vmstat:
# vmstat 2 5 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 16272 75548 0 0 0 0 0 0 102 21 10 1 0 99 0 2 1 16272 75547 0 0 0 0 0 0 407 1541 24 49 0 51 0 2 1 16272 75547 0 0 0 0 0 0 405 58 28 50 0 50 0 2 1 16272 75547 0 0 0 0 0 0 406 43 25 50 0 50 0 2 1 16272 75547 0 0 0 0 0 0 409 29 26 50 0 50 0

Los threads en la cola de ejecucin son ordenados por prioridad, y el thread que tiene la mxima prioridad utiliza la CPU. En AIX Versin 4, los cinco valores posibles para la poltica de scheduling de threads es la siguiente: SCHED_FIFO Este es un esquema de scheduling sin prioridades. Luego de que el thread con esta poltica es agregado a la cola, corre hasta completarse a menos que sea bloqueado, que voluntariamente ceda el control de la CPU, o que un thread con mayor prioridad aparezca listo para ejecutarse. Slo threads con prioridad fija pueden tener una poltica de scheduling SCHED_FIFO. SCHED_RR Pgina 159 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El thread tiene una prioridad fija. Si un thread SCHED_RR tiene el control, cuando termina su tiempo de CPU, se mueve al final de la cola de threads listos para ejecutarse correspondiente a su prioridad. Slo los threads con prioridad fija pueden tener una poltica SCHED_RR. SCHED_OTHER Esta poltica est considerada por el Standard POSIX 1003.4a como definida por la implementacin. En AIX Versin 4, esta poltica est definida para ser equivalente a la SCHED_RR, excepto que esta se aplica a threads con prioridad no fija. En cada interrupcin del reloj se recalcula la prioridad de los threads en ejecucin lo que implica que un thread puede perder el control porque su prioridad fue superada por la prioridad de otro thread listo para ejecutarse. SCHED_FIFO2 Esta poltica es igual a la SCHED_OTHER, excepto que esta permite que un thread que estuvo dormido por un corto perodo de tiempo sea colocado a la cabeza de la cola de ejecucin cuando se despierte. Esta poltica slo est disponible en AIX Versin 4.3.3 o superiores. SCHED_FIFO3 Un thread cuya poltica de scheduling es configurada como SCHED_FIFO3 es puesto siempre en la cabeza de la cola de ejecucin. Para prevenir que un thread que pertenece a la poltica de scheduling SCHED_FIFO2 sea puesto delante de uno SCHED_FIFO3, los parmetros de la cola de ejecucin son cambiados cuando un thread SCHED_FIFO3 es encolado, de manera que no haya ningn thread perteneciente a SCHED_FIFO2 en el tope de la cola de ejecucin. Esta poltica slo est disponible en AIX Versin 4.3.3 o superiores. 4.5.1.1 Clculo de prioridad en versiones de AIX anteriores a la 4.3.2 Los valores de prioridad difieren entre las versiones de AIX previas a la 4.3.2 y la versin 4.3.2 y superiores. Generalmente, cuanto ms bajo es el valor, mayor es la prioridad, con cero como el valor ms bajo posible y de mayor prioridad. Por otro lado, el valor 127 es el que representa la peor prioridad. Este valor de prioridad es reservado para el proceso wait. Mientras un thread es ejecutado (utilizando CPU), la prioridad es recalculada, el valor sube, y la prioridad baja. Cuanto ms tiempo un thread existe sin utilizar CPU, el valor cada vez es ms bajo, y por lo tanto, mayor su prioridad. En algn momento, un thread en la cola de ejecucin tendr un valor menor (mayor prioridad) que el thread en ejecucin, este es liberado, y el thread de la cola de ejecucin es ejecutado. En el siguiente grfico es simbolizada la cola de ejecucin global utilizada por las versiones de AIX previas a la 4.3.2. Los threads A y B son forzados a dejar el control de las CPUs tan pronto como aparezca en la cola de ejecucin un thread de mayor prioridad. En este caso, los threads C, D y E estn disponibles. El thread C es elegido en primer lugar porque tiene la mayor prioridad. Los threads D y E tiene la misma prioridad y ocupan posiciones adyacentes en la cola. El thread D es el seleccionado por su posicin.

Pgina 160 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El grfico anterior es una simplificacin del siguiente grfico. Todos los threads ejecutables de una prioridad dada ocupan posiciones consecutivas en la cola de ejecucin. AIX Versin 4 mantiene 128 colas de ejecucin. Estas colas de ejecucin se relacionan directamente con el rango de posibles valores (0 a 127) para los campos de prioridad de cada thread. Este mtodo le facilita al scheduler la determinacin de que thread es el ms favorecido para correr. Sin tener que buscar en una gran cola de ejecucin, el scheduler consulta una mscara de 128 bits donde un bit encendido indica la presencia de un thread listo para correr en la cola de ejecucin correspondiente.

Un thread puede o no tener prioridad fija. El valor de prioridad de un thread con prioridad fija es constante, mientras que el valor de prioridad de un thread con prioridad no fija es la suma del nivel de prioridad mxima para threads de usuarios (una constante 40), el valor nice del thread (por defecto es 20 para procesos interactivos y 24 para procesos en background) y la penalidad de CPU (CPU penalty). Uno de los factores en el clculo de prioridad es el valor de uso reciente de CPU (Recent CPU usage). Uno de los dos clculos usados en la definicin del Recent CPU usage es: Uso Reciente de CPU = Anterior Uso Reciente de CPU + 1 Pgina 161 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Este clculo es realizado 100 veces por segundo (con cada tick). El valor de uso reciente de CPU aumenta en 1 cada vez que el thread est bajo el control de la CPU en el final de un tick. El valor mximo es 120. En otras palabras, los threads en ejecucin tienen su valor de uso reciente de CPU recalculado (incrementado) 100 veces por segundo hasta alcanzar el lmite mximo de 120. Este valor lo muestra la columna C de la salida del comando ps:
# ps UID root root root root f PID 12948 13888 15432 15752 PPID C 12796 0 12948 111 12948 4 12948 110 STIME 14:27:07 10:08:34 11:42:56 10:08:34 TTY pts/1 pts/1 pts/1 pts/1 TIME 0:00 94:21 0:00 94:21 CMD ksh ./tctestprg ps -f ./tctestprg

Una vez por segundo, todos los threads, incluso aquellos que estn dormidos, tienen su valor de uso reciente de CPU recalculado de la siguiente manera: Uso Reciente de CPU = Anterior Uso Reciente de CPU x (SCHED_D / 2) El valor por defecto del SCHED_D es 16, lo que significa que el valor de uso reciente de CPU es dividido por 2 (16 / 32 = 0.5). Esto previene que el valor de uso reciente de CPU de todos los procesos se mantenga fijo en 120. Con este valor de uso reciente de CPU, se puede calcular la penalidad de CPU (CPU penalty): Penalidad de CPU = Uso Reciente de CPU x (SCHED_R / 32) El valor por defecto del SCHED_R es 16. Con el valor de penalidad de CPU definido, finalmente se puede obtener la Prioridad, (Priority), tambin calculada con cada tick del reloj de la siguiente manera: Valor de Prioridad = 40 + valor nice + Penalidad de CPU En este calculo, el valor nice por defecto es 20 para procesos interactivos y 24 para procesos en background. Con estas definiciones, se observa que tres valores pueden ser manejados para la optimizacin del rendimiento: el valor nice, el valor SCHED_R, tambin llamado factor de carga, y el SCHED_D, tambin llamado factor de cada. 4.5.1.2 Clculo de prioridad en AIX Versin 4.3.2 y posteriores AIX Versin 4.3.2 y posteriores agregar un par de definiciones nuevas para ser consideradas. Primero es el factor NICE, que no es el valor nice manejado con el comando nice, sino la suma de ste y el nivel de prioridad mxima para los threads del usuario. Secundariamente, el factor DEFAULT_NICE es agregado al algoritmo. Este factor es igual al nivel de prioridad mxima para un usuario, tambin llamado el valor base (40), ms el valor nice por defecto para un proceso interactivo (20). En otras palabras, la suma es 60 para un proceso interactivo (DEFAULT_NICE - NICE = 60). El siguiente clculo es utilizado para obtener la prioridad: Prioridad = (Uso Reciente de CPU x SCHED_R x (xnice + 4)) / (32 x (DEFAULT_NICE + 4)) + xnice donde DEFAULT_NICE = 40 + 20 (valor base mas nice por defecto). El clculo del valor xnice es el siguiente: xnice = (NICE > DEFAULT_NICE) ? (2 * nice) - 60 : NICE Pgina 162 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Esto significa que si el NICE es ms pequeo o igual al DEFAULT_NICE, entonces: xnice = NICE Pero si el NICE es mayor que el DEFAULT_NICE, es decir, si se modific el thread con el comando nice para bajarle la prioridad, entonces: xnice = (2 x NICE) - 60 El valor nice tiene un impacto mucho mayor en la prioridad de un thread. Ahora est incluido en el clculo como un mltiplo del uso reciente de CPU, en adicin a su uso como factor constante. Algunos valores artificiales ayudarn a mostrar el clculo:
Recent CPU usage = 64 SCHED_R = 16 NICE = 64

Comenzando con el clculo del XNICE:


xnice = (NICE > DEFAULT_NICE) ? (2 * NICE) - 60 : nice

Como NICE es mayor que DEFAULT_NICE, entonces:


xnice = (2 x 64) - 60 = 68

Ingresando los valores dados y el valor XNICE en el clculo:


Prioridad = (Uso reciente de CPU x SCHED_R x (xnice + 4)) / (32 x (DEFAULT_NICE + 4)) + xnice

El clculo seguir as:


P = (64 x 16 x (68 + 4)) / (32 x 64) + xnice P = (73728 / 2048) + 64 P = 100

Todava se tienen tres valores para manejar. El valor nice (como en el ejemplo), el SCHED_R, y el SCHED_D (por uso reciente de CPU). En las siguientes secciones veremos el esquema de las colas de ejecucin mltiples y los comandos utilizados para cambiar estos valores.

4.5.2 Colas de ejecucin mltiples con balanceo de carga en AIX Versin 4.3.3
La cola de ejecucin global es la misma cola en AIX Versin 4.3.2 que en AIX Versin 4.3.1, pero en AIX Versin 4.3.3 el esquema de las colas de ejecucin ha cambiado. AIX Versin 4.3.3 ofrece una mejor afinidad de cache a travs del uso de colas de ejecucin mltiples. El nuevo scheduler del kernel implementa una sola cola de ejecucin global junto con un conjunto de colas de ejecucin locales, donde cada procesador tiene su cola de ejecucin local dedicada. Una vez que un thread es colocado en una cola de ejecucin local, generalmente permanece all hasta que finaliza, o hasta que es detectado un desbalanceo. Se utilizan umbrales (thresholds) para limitar la cantidad de balanceos que pueden ocurrir. Este es un diagrama de relacin entre las colas de ejecucin locales y globales:

Pgina 163 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Cuando las dos colas de ejecucin tienen threads esperando con la misma prioridad, la cola de ejecucin local es elegida. Cuando se inician, los threads ingresan en la cola de ejecucin global a travs del mecanismo de balanceo de carga implementado. Una vez que una CPU atiende un thread de una cola de ejecucin global, generalmente no lo devuelve a la cola global, sino a la cola que pertenece a esa CPU. El balanceo de carga es manejado por un nmero de algoritmos diseados para mantener todas las colas de ejecucin de un sistema aproximadamente con la misma utilizacin. Existen cuatro algoritmos de balanceo, que son desarrollados en las siguientes secciones.

4.5.2.1 Balanceo de carga inicial El balanceo de carga inicial es aplicado a los threads nuevos. Cuando un thread es creado como parte de un nuevo proceso (tambin un thread nuevo de un proceso existente), es asignado a una CPU libre (si existe). Si no hay ninguna libre, el thread ser colocado en la cola global.

4.5.2.2 Balanceo de carga idle El balanceo de carga idle se aplica cuando un proceso debe quedar inactivo, ejecutando el thread waitproc (por ejemplo PID 516). Cuando el dispatcher llega a este punto en su lgica, no busca en otras colas intentando encontrar trabajo a toda costa. Es preferible permitir lo que parecen ser ciclos idle innecesarios que mover el thread y perder afinidad de cache. Los pasos seguidos por el mtodo de balanceo de carga idle son: Antes de ejecutar el waitproc, busca en otras colas trabajo disponible. Para robar un thread, se debe obtener el lock de la cola de ejecucin elegida. Esto es realizado por una llamada especialmente desarrollada que evita interferir con otra instancia del dispatcher. Si no puede obtener el lock, ejecuta el waitproc. Despus de obtener el lock, verifica que an haya algn thread robable. Si no lo hay, ejecuta el waitproc. Cambia la asignacin de la cola de ejecucin y el puntero de los threads.

4.5.2.3 Balanceo de carga peridico frecuente

Pgina 164 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Es realizado cada N ticks del reloj. Intenta balancear las cargas en las colas locales de un nodo de forma similar al balanceo de carga idle. La idea es mover un thread de la cola de ejecucin ms cargada a la menos cargada, pero si en el ltimo intervalo la menos cargada ha robado un thread por medio del balanceo de carga idle, no realiza ninguna accin. La diferencia en factores de carga entre las dos colas elegidas para el balanceo de carga peridico frecuente debe ser al menos 1.5. El balanceo de carga idle es menos costoso, por lo que en una situacin ideal el balanceo de carga peridico frecuente no debera actuar.

4.5.2.4 Balanceo de carga peridico infrecuente Si un thread no ha recibido tiempo de CPU en los ltimos N.5 segundos, el thread es movido a la cola de ejecucin global.

4.5.3 Manejo del rendimiento del scheduler


AIX ofrece varias opciones para modificar el comportamiento por defecto del sistema de scheduling para threads y procesos. En esta seccin se describen los comandos schedtue, nice, y renice.

4.5.3.1 El comando schedtune El comando schedtune permite especificar el SCHED_R con el flag -r y el SCHED_D con el -d. Cuando se ejecuta el comando schedtune sin flags, muestra los valores actuales:
# /usr/samples/kernel/schedtune THRASH SUSP -h -p -m -w -e SYS PROC MULTI WAIT GRACE 0 4 2 1 2 CLOCK -c %usDELTA 100 FORK -f TICKS 10 SCHED -d SCHED_D 16 -r SCHED_R 16 -t TIMESLICE 1 -s MAXSPIN 16384

La optimizacin se realiza a travs de dos flags del comando schedtune: -r y -d. Cada flag especifica un parmetro que es un entero comprendido entre 0 y 32. Los parmetros son aplicados multiplicando el valor de uso reciente de CPU por el valor del parmetro y dividindolo por 32. El valor por defecto de SCHED_R y SCHED_D es 16, como se aprecia en la salida anterior.

a. Primer ejemplo de schedtune El siguiente comando cofigura SCHED_R = 0 y SCHED_D = 0.5:


# /usr/samples/kernel/schedtune -r 0

Esto significa que la penalidad de CPU ser 0, lo que implica prioridad absoluta. Ningn proceso en background obtendr tiempo de CPU a menos que no existan procesos interactivos ejecutables, ya que los procesos en background en ksh son iniciados sumando 4 al valor nice del shell padre. Los valores de prioridad de los threads sern constantes, a pesar de que no sean tcnicamente threads de prioridad fija.

Pgina 165 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

b. Segundo ejemplo de schedtune El siguiente comando configura SCHED_R = 1 y SCHED_D = 1.


# /usr/samples/kernel/schedtune -r 32 -d 32

Esto significa que los threads de larga duracin alcanzarn un valor C igual a 120 y permanecern as, compitiendo en base a sus valores nice. Los threads nuevos tendrn prioridad, a pesar de su valor nice, hasta que hayan acumulado tiempo slice suficiente como para entrar dentro de los rangos de prioridad de los threads existentes.

c. Tercer ejemplo de schedtune La razn ms comn por la que se manipulan los valores es para asegurar que los procesos background no compitan con procesos interactivos. Reduciendo el valor del SCHED_R, se puede restringir el rango de los posibles valores de prioridad. Por ejemplo:
# /usr/samples/kernel/schedtune -r 5

(SCHED_R = 0.15625, SCHED_D = 0.5) significa que un proceso interactivo nunca tendr que competir con un proceso en background iniciado con el comando nice -n 20. El lmite de 120 porciones de tiempo (time slices) de CPU acumuladas implicaran que la penalidad mxima de CPU para los procesos interactivos sera de 18. En el siguiente grfico se observa esta relacin. Como la penalidad de CPU obtendr un valor mximo de 18, los procesos interactivos con un valor nice de 20 obtendrn tiempo de CPU siempre que lo necesiten. Por otro lado, los procesos en background, con un valor nice de 40, utilizarn la CPU slo cuando los procesos interactivos no necesiten CPU.

d. Lineamientos generales de SCHED_R y SCHED_D Estos son algunos lineamientos generales para tener en cuenta cuando se realiza una optimizacin de rendimiento utilizando SCHED_R y SCHED_D. Valores ms pequeos de SCHED_R disminuyen el rango de prioridad y el valor nice tiene ms impacto en la prioridad. Pgina 166 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Valores mayores de SCHED_R amplan el rango de prioridad y el valor nice tiene menos impacto en la prioridad. Valores menores de SCHED_D disminuyen abruptamente el uso de CPU y pueden provocar que los threads con uso intensivo de CPU sean iniciados ms rpidamente. Valores mayores de SCHED_D disminuyen lentamente el uso de CPU y penaliza a los threads con uso intensivo de CPU (por lo tanto, favorece a los threads de tipo interactivo) Si se llega a la conclusin de que deben modificarse uno o ambos parmetros para acomodar la carga de trabajo, se puede ejecutar el comando schedtune con el usuario root. Los valores modificados hasta que se ejecuta nuevamente el comando schedtune, o hasta el siguiente reinicio del sistema. Los valores por defecto se pueden restaurar con el comando schedtune -D, pero se debe recordar que todos los parmetros del comando schedtune son reiniciados por el comando, incluso los parmetros de control de carga de memoria del VMM. Para realizar un cambio que se mantenga despus del reinicio del sistema, se debe agregar una lnea en el final del archivo /etc/inittab.

e. Sumario del comando schedtune El comando schedtune es utilizado para manipular el scheduler y el swapper. Hay algunas diferencias importantes entre el comando incluido en AIX 4.3.2 y el de AIX 4.3.3. La sintaxis del comando schedtune es:
schedtune [ -D | { [ -d n ] [ -e n ] [ -f n ] [ -h n ] [ -m n ] [ -p n ] [ -r n ] [ -t n ] [ -w n] } ]

4.5.3.2 Los comandos nice y renice El comando nice puede ejecutar un proceso con una prioridad menor a la normal. Con el usuario root se puede ejecutar un proceso con prioridad mayor a la normal. La prioridad del proceso es tambin llamada valor nice, pero mientras que en cada tick del reloj la prioridad de un proceso es recalculada, el valor nice es estable y se manipula con los comandos nice o renice. El valor nice est comprendido entre 0 y 39, siendo 39 el de menor prioridad. Por ejemplo, si un proceso normalmente se ejecuta con un valor nice por defecto igual a 20, incrementando en 5 su valor nice, se ejecutar con menor prioridad, 25, y el proceso deber correr ms lentamente. El valor nice puede verse en la columna NI de la salida del comando ps:
$ ps -lu F S 200001 A 200001 A 200001 A 200001 A thomasc UID PID 15610 5204 15610 15476 15610 15818 15610 16792 PPID C PRI 15476 3 61 12948 1 60 15476 120 126 15476 120 126 NI 20 20 24 24 ADDR SZ TTY TIME CMD a655 344 pts/1 0:00 ps 5029 488 pts/1 0:00 ksh 408b 44 pts/1 0:25 tctest e89e 44 pts/1 0:18 tctest

Dos comando fueron iniciados en background, como muestra el valor nice 24, mientras que el comando ps se ejecuta interactivamente con un valor nice igual a 20. a. Ejecutando un comando con nice Cualquier usuario puede ejecutar un comando con una prioridad menos favorable que la normal utilizando el comando nice. Slo el usuario root puede utilizar el comando nice para ejecutar un comando con una prioridad ms favorable que la normal. Para el usuario root, el rango de valores del comando nice est comprendido entre -20 y 19. Con el comando nice, el usuario especifica un valor para ser sumado o restado al valor nice por defecto. El valor nice modificado es utilizado por los procesos que ejecuta el comando especificaPgina 167 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

do. La prioridad de los procesos es aun no fija; esto es, el valor de prioridad es aun recalculado peridicamente en base al uso de CPU, al valor nice, y en menor medida al valor de prioridad del proceso. El usuario thomasc, que no es root, tiene disponible un rango de valores nice comprendido entre 1 y 19. Obsrvese que cuando se aplica un valor nice a un comando en background, el valor NI es 39 an cuando el valor calculado debera ser 43 (24 + 19), como muestra el siguiente ejemplo:
# id uid=15610(thomasc) gid=0(system) # nice -19 ./tprof.tctestprg & # ps -al|head -1 ; ps -al |grep tctestprg F S UID PID PPID C PRI NI ADDR 200001 A 15610 14740 15490 90 126 39 5888 240001 A 15610 15818 1 90 118 24 408b 240001 A 15610 16792 1 89 118 24 e89e

SZ TTY TIME CMD 44 pts/3 0:58 tctestprg 44 pts/1 51:02 tctestprg 44 pts/1 50:55 tctestprg

El usuario root tiene la posibilidad de disminuir el valor nice. Obsrvese la sintaxis: el primer guin (-) es slo un marcador de opcin, y el otro guin le indica al nice que debe sustraer 15 del valor por defecto de 24 (el proceso es iniciado en background). Por ejemplo:
# nice --15 ./tprof/tctestprg & # ps -al|head -1 ; ps -al |grep tctestprg F S UID PID PPID C PRI NI ADDR 200001 A 15610 14740 15490 91 126 39 5888 240001 A 15610 15818 1 92 119 24 408b 200001 A 0 16304 12948 85 84 9 c0bb 240001 A 15610 16792 1 92 59 -- e89e

SZ 44 44 44 44

TTY TIME CMD pts/3 4:37 tctestprg pts/1 54:41 tctestprg pts/1 0:03 tctestprg pts/1 54:34 tctestprg

Otra forma de ejecutar el comando nice, para obtener los mismos resultados que en el ejemplo anterior, sera con el flag -n, de la siguiente manera:
# nice -n -15 ./tprof/tctestprg &

Es nicamente en este caso, donde root reduce el valor nice, que un cambio significativo es visto en el valor de prioridad. En la salida anterior, los valores nice=39 y nice=24 generan valores de prioridad similares (columna PRI), pero el proceso 16304, iniciado por root con nice=9, tiene una ventaja significativa con un valor de prioridad igual a 84. La salida muestra adems es escenario donde un proceso es ejecutado con una prioridad fija (PID 16792). En la columna PRI, la prioridad fijada es 59, y la columna NI no muestra un valor. Esto puede realizarse con la subrutina setpri. Esta subrutina fija la prioridad de scheduling de todos los threads para que sean constantes.

b. Cambiando el valor nice de un thread en ejecucin El comando renice, que tiene una sintaxis similar al comando nice, permite modificar el valor nice de un proceso en ejecucin. Por ejemplo, sustrayendo 5 del valor actual 9, en el PID 16304:
# renice -n -5 16304 # ps -al|head -1 ; ps -al |grep tctestprg F S UID PID PPID C PRI NI ADDR 200001 A 15610 14740 15490 94 126 39 5888 240001 A 15610 15818 1 94 120 24 408b 200001 A 0 16304 12948 86 76 4 c0bb 240001 A 15610 16792 1 94 120 24 e89e

SZ 44 44 44 44

TTY pts/3 pts/1 pts/1 pts/1

TIME 17:13 67:17 12:37 67:10

CMD tctestprg tctestprg tctestprg tctestprg

El PID es utilizado para identificar qu programa (o ms correctamente qu thread) debe ser manipulado.

Pgina 168 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

c. Sumario de los comando nice y renice Los comandos nice y renice son utilizados para manipular el valor nice de los threads de un proceso. La sintaxis del comando nice es la siguiente:
nice [ - Incremento| -n Incremento ] Comando [ Argumento ... ]

La sintaxis del comando renice es la siguiente:


renice [ -n Incremento ] [ -g | -p | -u ] ID ...

Nota

No se debe manipular el scheduler sin un profundo conocimiento de los mecanismos que lo controlan.

4.5.4 El comando bindprocessor


El comando bindprocessor asigna (bound) o des-asigna (unbound) los threads del kernel de un proceso, o lista los procesadores disponibles. Para asignar o des-asignar threads, requiere dos parmetros:
bindprocessor Proceso NumDeProcesador

El parmetro Proceso es el identificador de proceso del proceso cuyos threads son asignados o des-asignados, y el parmetro NumDeProcesador es el nmero de procesador lgico del procesador a utilizar. Si el NumDeProcesador es omitido, el proceso es asignado a un procesador seleccionado aleatoriamente. Un proceso en s mismo no es asignado, s en cambio sus threads del kernel. Una vez que los threads del kernel son asignados, siempre sern ejecutados en el procesador escogido, a menos que sean des-asignados. Cuando un thread nuevo es creado, tiene las mismas propiedades que su creador. Esto se aplica para el thread inicial en un proceso nuevo creado por la subrutina fork: el thread nuevo hereda las propiedades de asignacin del thread que llam al fork. Cuando es llamada la subrutina exec, las propiedades del thread se mantienen sin modificarse. Para verificar que procesador est disponible, ingrese el siguiente comando:
# bindprocessor -q The available processors are: 0 1 2 3

Para asignar el proceso 16792 al procesador 2, ingrese el siguiente comando:


# bindprocessor 16792 2

Para verificar qu thread del kernel es asignado a cul procesador, observe la columna BND de la salida del comando ps:
# ps -mo USER root root thomasc root THREAD PID PPID 12948 12796 13704 12948 15818 1 16304 12948 TID 7283 19391 16077 17843 ST A S A R A R A R CP 0 0 3 3 79 79 77 77 PRI 60 60 61 61 112 112 72 72 SC 1 1 1 1 0 0 0 0 F 240001 400 200001 0 240001 0 200001 0 TT BND pts/1 pts/1 pts/1 pts/1 COMMAND ksh ps -mo THREAD ./tprof/tctestprg ./tprof/tctestprg -

Pgina 169 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

thomasc -

16792 -

1 -

16357

A R

79 79

112 112

0 240001 pts/1 0 0 -

2 2

./tprof/tctestprg -

4.5.5 El comando vmtune


El comando vmtune cambia parmetros operacionales del Virtual Memory Manager (VMM) y otros componentes del AIX. El comando vmtune se encuentra en el directorio /usr/samples/kernel. Es instalado con el fileset bos.adt.samples. La sintaxis del comando vmtune es la siguiente:
vmtune [ -b numfsbuf ] [ -B numpbuf ] [ -c numclust ] [ -f minfree ] [ -F maxfree ] [ -k npskill ] [ -l lrubucket ] [ -M maxpin ] [ -N pd_npages ] [ -p minperm ] [ -P maxperm ] [ -r minpgahead ] [ -R maxpgahead ] [-u lvm_budcnt] [ -w npswarn ] [-W maxrandwrt]

El siguiente es un ejemplo del comando vmtune ejecutado sin flags:


# /usr/samples/kernel/vmtune vmtune: current values: -p -P -r -R -f -F -N -W minperm maxperm minpgahead maxpgahead minfree maxfree pd_npages maxrandwrt 26007 104028 2 8 120 128 524288 0 -M -w -k -c -b -B -u -l -d maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps 104851 4096 1024 1 93 80 9 131072 1 -s -n -S -h sync_release_ilock nokillroot v_pinshm strict_maxperm 0 0 0 0 number of valid memory pages = 131063 maximum pinable=80.0% of real memory number of file memory pages = 102029 maxperm=79.4% of real memory minperm=19.8% of real memory numperm=77.8% of real memory

El Virtual Memory Manager (VMM) mantiene una lista de frames de pginas de la memoria real libres. Estos frames de pginas estn disponibles para guardar pginas de la memoria virtual necesarias para satisfacer un page fault. Cuando la cantidad de pginas en la lista free es menor que la cantidad especificada por el parmetro minfree, el VMM comienza a robar pginas para agregarlas a la lista free. El VMM contina robando pginas hasta que la lista free tenga al menos la cantidad de pginas especificadas por el parmetro maxfree. Si la cantidad de pginas permanentes en memoria es menor que la cantidad especificada por el parmetro minperm, el VMM roba frames de pginas computacionales o pginas permanentes, sin importar las tasas de repage. Si la cantidad de pginas permanentes es mayor que la cantidad especificada por el parmetro maxperm, el VMM roba nicamente pginas permanentes. El VMM normalmente roba nicamente pginas permanentes, pero si la tasa de repage de las pginas permanentes es mayor que la tasa de repage de pginas computacionales, stas tambin son robadas. Si un proceso parece estar leyendo secuencialmente de un archivo, los valores especificados por el parmetro minpgahead determinan la cantidad de pginas a ser ledas cuando la condicin es detectada por primera vez. El valor especificado por el parmetro maxpgahead indica la cantidad mxima de pginas que sern ledas, sin importar la cantidad de lecturas secuenciales precedentes. El comando vmtune puede ser ejecutado nicamente por root. Los cambios realizados permanecen hasta el siguiente reinicio del sistema. Si es necesario realizar un cambio permanente, el comando vmtune apropiado debe colocarse en el archivo /etc/inittab. Pgina 170 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Estos son los flags y algunas limitaciones: -b numfsbuf Especifica la cantidad de bufstructs de los file systems. El valor por defecto en AIX es 93 porque depende del tamao de los bufstruct. Este valor debe ser mayor a 0. Incrementar este valor mejora el rendimiento para escrituras de gran tamao (en dispositivos que soportan escrituras muy rpidas). Para activar este valor, se deben desmontar los file systems, cambiar el valor, y montar nuevamente los file systems. Controla la cantidad de pbufs disponible para el controlador de dispositivos del LVM. Los pbufs son buffers de memoria pinned utilizados para contener los requerimientos de I/O relativos a un Journaled File System (JFS). En sistemas donde hay gran cantidad de operaciones de I/O secuencial, esto puede resultar en cuellos de botella de requerimientos de I/O en la capa LVM esperando que sean liberados pbufs. En AIX Versin 4, un pubf es utilizado para cada requerimiento de I/O secuencial, sin importar la cantidad de pginas de ese I/O. El valor mximo es 128. Especifica la cantidad de clusters de 16 KB procesados por el algoritmo de escritura retrasada (write-behind algorithm). El valor por defecto es 1. Los valores pueden ser cualquier entero mayor a 0. Gran cantidad de clusters puede resultar en un lento rendimiento de escrituras secuenciales en dispositivos que soportan escrituras muy rpidas (RAID y otros). Configurando como valor un nmero muy alto, como 500000, esencialmente derrota al algoritmo de escritura retrasada. Esto puede ser beneficioso en casos como la creacin de ndices de bases de datos, donde las pginas que fueron escritas son ledas inmediatamente despus; la escritura retrasada puede provocar que el proceso tarde ms tiempo. Una sugerencia es desactivar la escritura retrasada antes de realizar los ndices y activarla una vez que estos estn listos. Por ejemplo, el comando mkpasswd se ejecuta significativamente ms rpido cuando la escritura retrasada es desactivada. Especifica la cantidad mnima de frames en la lista free. Este nmero est comprendido entre 8 y 204800. El valor por defecto depende de la cantidad de RAM en el sistema. El valor por defecto del minfree es la mitad del valor del maxfree: 8. El valor del maxfree es igual al minimum (la cantidad de pginas de memoria divididas por 128). El delta entre minfree y maxfree debe ser siempre igual o mayor al maxpgahead. Especifica la cantidad de frames que deben haber en la lista free para que se detenga el robo de pginas. Este nmero est comprendido entre 16 y 204800, pero debe ser mayor que el valor especificado para el parmetro minfree, por una diferencia al menos igual al valor del maxpgahead. Especifica la cantidad de pginas libres del espacio de paginado que deben haber para que el AIX comience a matar procesos. La frmula para determinar el valor por defecto del npskill en AIX Versin 4 es: MAX(64, cantidad-de-pginas-en-el-espacio-de-paginado/128) El valor npskill debe ser mayor que 0 y menor que la cantidad total de pginas en el espacio de paginado. El valor por defecto es 128. Pgina 171 de 283

-B numpbuf

-c numclust

-f minfree

-F maxfree

-k npskill

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

-l lrubucket

Este parmetro especifica el tamao (en pginas de 4 KB) del bucket de reemplazo de pginas menos utilizadas recientemente (least recently used o LRU). Esta es la cantidad de frames de pginas que sern examinados al mismo tiempo por posibles pageouts cuando un frame libre es necesitado. Un nmero menor provoca una menor latencia cuando se busca un frame libre pero tambin provoca un comportamiento que no es similar al verdadero algoritmo LRU. El valor por defecto es 512 MB y el mnimo es 256 MB. No se recomienda modificar esta opcin. Especifica el porcentaje mximo de memoria real que puede ser pinned. El valor por defecto es 80 por ciento. Si este valor es modificado, el nuevo valor debe asegurar que queden al menos 4 MB de memoria real no pinned para ser utilizados por el kernel. El valor del maxpin debe ser mayor a 1 y menor a 100. El valor bajo maxpin es convertido a porcentaje al final de la salida del vmtune. Especifica la cantidad de pginas que deben ser borradas de una porcin de la RAM cuando un archivo es eliminado. Cambiar este valor beneficiar nicamente a las aplicaciones de tiempo real que borran archivos. Reduciendo el valor de pd_npages, una aplicacin de tiempo real puede obtener un mejor tiempo de respuesta porque ser menor la cantidad de pginas eliminadas antes de que un proceso o thread sea ejecutado. El valor por defecto es el tamao de archivo mayor posible dividido por el tamao de pgina (actualmente 4096); si el tamao de archivo mximo posible es 2 GB, entonces el pd_npages es, por defecto, 524288. Especifica el punto debajo del cual las pginas permanentes son protegidas del algoritmo repage. Este valor es un porcentaje del total de frames de pginas de memoria real en el sistema. El valor especificado debe ser mayor o igual a 5. El valor por defecto del porcentaje minperm es siempre alrededor de un 17-19 por ciento de la memoria. Especifica el punto sobre el cual el algoritmo de robo de pginas roba nicamente pginas permanentes. Este valor est expresado como un porcentaje del total de frames de pginas de memoria real en el sistema. El valor especificado debe ser mayor o igual a 5. El valor por defecto del porcentaje maxperm es siempre alrededor de un 75-80 por ciento de la memoria. Un servidor puramente NFS puede obtener una mejora del rendimiento incrementando el valor del maxperm. Un sistema que accede archivos grandes (por encima del 50-75 por ciento de la cantidad de RAM en el sistema; ver el numperm para observar cunta memoria es utilizada actualmente para el mapeo de archivos) puede beneficiarse incrementando el valor maxperm. Este parmetro puede reducirse en sistemas con grandes requerimientos de almacenamiento de trabajo (la columna AVM del vmstat comparada con el total de frames de pginas reales) para reducir o eliminar el I/O del espacio de paginado. Especifica la cantidad de pginas con las que comienza una lectura secuencial. Este valor est comprendido entre 0 y 4096. Debe ser una potencia de 2. El valor por defecto es 2. Especifica la cantidad mxima de pginas que sern ledas. Este valor est comprendido entre 0 y 4096. Debe ser una potencia de 2 y debe ser mayor Pgina 172 de 283

-M maxpin

-N pd_npages

-p minperm

-P maxperm

-r minpgahead

-R maxpgahead

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

o igual al minpgahead. El valor por defecto es 8. Incrementar este nmero ayudar a mejorar el rendimiento de grandes lecturas secuenciales. Por otras limitaciones en el kernel y el Logical Volume Manager (LVM), el valor mximo no debe ser mayor a 128. El delta entre minfree y maxfree debe se siempre igual o mayor al maxpgahead. -u lvm_bufcnt Especifica la cantidad de buffers del LVM para los requerimientos de I/O raw. El valor por defecto es 9. Los posibles valores estn comprendidos entre 1 y 64. Es beneficioso incrementar este valor si se realizan grandes operaciones de I/O raw (esto es, sin utilizar JFS). Especifica la cantidad de paginas libres en el espacio de paginado en las que el AIX comienza a enviar la seal SIGDANGER a los procesos. La frmula para determinar el valor por defecto es: MAX(512, 4*npskill) El valor de npswarn debe ser mayor a 0 y menor que la cantidad total de pginas en el espacio de paginado del sistema. El valor por defecto es 512. -W maxrandwrt Especifica un umbral (en pginas de 4 KB) de escrituras aleatorias que se deben acumular en RAM, antes que sean sincronizadas a disco utilizando un algoritmo de escritura retrasada. La base de este umbral es por archivo. La opcin W maxrandwrt est disponible a partir de la versin 4.1.3 de AIX y posteriores. El valor por defecto es 0, lo que deshabilita la escritura retrasada aleatoria. Activndola (un valor tpico podra ser 128), las aplicaciones que realizan una gran cantidad de escrituras aleatorias pueden obtener un mejor rendimiento debido a la menor dependencia del daemon sync para forzar las escrituras a disco. Algunas aplicaciones pueden empeorar su rendimiento debido a la escritura retrasada (como creacin de ndices de bases de datos). En estos casos, ser ms beneficioso desactivar la escritura retrasada antes de crea ndices de bases de datos y reactivarla despus de la creacin de los ndices.

-w npswarn

4.5.6 Workload Manager


El Workload Manager le permite al administrador del sistema dividir recursos entre procesos sin tener que particionar el sistema. WLM provee aislamiento entre comunidades de usuarios con muy diferentes comportamientos del sistema, como procesos interactivos o de poco uso de CPU, por cargas de trabajo con otras caractersticas como procesos batch o de gran uso de memoria. La configuracin del WLM es mucho ms simple que el particionamiento donde es requerida la reinstalacin y reconfiguracin. Con WLM, un solo sistema operativo maneja el sistema entero y todos los procesos; por lo tanto, slo es administrado un sistema. WLM maneja porcentajes de tiempo de CPU en vez de CPUs. Esto permite el control sobre los recursos de CPU en un alto nivel de detalle. El tiempo de CPU, memoria y ancho de banda de I/O son manejados separadamente. Por lo tanto, pueden manejarse aplicaciones de diferentes estilos. EL AIX Workload Manager (WLM) es una facilidad del sistema operativo introducida en AIX Versin 4.3.3. Es parte del kernel del sistema operativo sin costo adicional. AIX WLM provee la facilidad bsica de darle a los administradores del sistema ms control sobre cmo el scheduler, el Virtual Memory Manager (VMM), y las llamadas de los controladores de dispositivos asignan CPU, memoria fsica, y ancho de banda de I/O a los usuarios, grupos, path de aplicaciones, tipos de proceso o etiquetas de aplicaciones basados en clases. Pgina 173 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Las clases pueden ser superclases o subclases. El AIX WLM se auto-regula cuando no hay trabajos en una clase o cuando una clase no utiliza todos los recursos que tiene asignados. Los recursos sern distribuidos automticamente a otras clases para cumplir con las polticas del administrador del sistema. Como el scheduling es realizado dentro de un solo sistema operativo AIX, el manejo del sistema es menos complejo. A diferencia del LPAR, el manejo de la carga de trabajo no permite sistemas operativos mltiples, que pueden ser tiles para testing y certificacin en un solo sistema fsico.

4.6 Escenarios de rendimiento


En este captulo se muestra una coleccin de escenarios que permiten un mejor entendimiento de la relacin entre las herramientas, sus salidas, y un problema que es necesario solucionar.

4.6.1 Escenario de rendimiento de CPU


En esta seccin, se muestra un problema de rendimiento bsico relativo a CPU saturada, con conclusiones hechas en base a la salida de comandos previamente analizados.

4.6.1.1 Coleccin de datos El escenario consiste en una F50 de 2 procesadores con 50 clientes Netstation conectados sobre ethernet. Los usuarios utilizan una aplicacin HTML como interfase para una base de datos. Ahora los usuarios se quejan porque los tiempos de respuesta son muy malos. Cuando abren una ventana del navegador en una Netstation, el inicio parece lento. Para verificar esto, el inicio del browser es ejecutado con el comando time:
# time netscape real 0m16.73s user 0m0.83s sys 0m0.63s

Ejecutando time netscape, se puede verificar que el inicio fue lento, el inicio de un browser en el sistema ejemplificado debera ser por debajo de los 10 segundos. En la salida se puede ver que el sistema espera ms de 15 segundos (user + sys =1.46 segundos de un total de 16.73 segundos). En muchos casos los sistemas esperan por I/O, por lo que se debe ejecutar iostat:
tty: tin 0.0 tout 328.5 % tm_act 0.0 0.0 0.0 0.0 0.0 tin 0.0 tout 332.1 % tm_act 0.0 0.0 avg-cpu: % user 100.0 Kbps 0.0 0.0 0.0 0.0 0.0 tps 0.0 0.0 0.0 0.0 0.0 % sys 0.0 % idle 0.0 Kb_wrtn 0 0 0 0 0 % idle 0.0 Kb_wrtn 0 0 % iowait 0.0 % iowait 0.0

Disks: hdisk0 hdisk1 hdisk2 hdisk3 cd0 tty:

Kb_read 0 0 0 0 0 % sys 0.0

avg-cpu: % user 100.0 Kbps 0.0 0.0 tps 0.0 0.0

Disks: hdisk0 hdisk1

Kb_read 0 0

Pgina 174 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

hdisk2 hdisk3 cd0

0.0 0.0 0.0

0.0 0.0 0.0

0.0 0.0 0.0

0 0 0

0 0 0

No hay actividad contra los discos, pero %user muestra 100.0. El problema es probablemente relativo a CPU. El siguiente paso es verificar las colas de ejecucin con el comando vmstat:
# vmstat 2 5 kthr memory page faults ----- ----------- ------------------------ -----------r b avm fre re pi po fr sr cy in sy cs 0 0 17354 15755 0 0 0 0 0 0 101 10 7 5 1 17354 15754 0 0 0 0 0 0 407 2228 101 5 1 17354 15752 0 0 0 0 0 0 413 43 93 5 1 17354 15752 0 0 0 0 0 0 405 43 92 5 1 17354 15752 0 0 0 0 0 0 407 42 90 cpu ----------us sy id wa 63 0 37 0 99 0 0 0 99 0 0 0 99 0 0 0 99 0 0 0

4.6.1.2 Anlisis de datos Cinco procesos en la cola de ejecucin no es un estado normal para este sistema. El siguiente paso ser encontrar cuales procesos estn causando problemas. Esto se puede hacer con el comando ps:
# ps -ef |sort +3 -r UID PID PPID thomasc 15860 12948 thomasc 16312 12948 thomasc 15234 12948 thomasc 16844 12948 thomasc 17420 12948 root 14778 3420 root 17154 3420 root 13676 15080 root 15080 1 root 4980 1 root 16510 3420 root 16022 10872 root 3420 5568 root 12948 12796 |head -15 C STIME 93 10:30:49 93 10:30:39 92 10:31:13 87 10:31:00 31 10:30:26 4 10:51:10 1 10:51:10 0 15:54:12 0 15:54:11 0 15:37:42 0 10:51:10 0 Jun 29 0 Jun 28 0 Jun 28 TTY pts/1 pts/1 pts/1 pts/1 pts/1 pts/3 pts/3 pts/5 pts/3 lft0 pts/3 pts/1 TIME 17:41 20:30 15:21 13:15 14:53 0:00 0:00 0:00 0:00 0:00 0:00 7:05 0:00 0:02 CMD ./tcprg5 ./tcprg3 ./tcprg1 ./tcprg2 ./tcprg4 ps -ef sort +3 -r ksh xterm /usr/lib/errdemon -s 2000000 head -15 topas n ksh ksh

# ps auxwww |head -14 USER PID %CPU %MEM thomasc 16312 25.0 0.0 root 516 24.0 3.0 thomasc 15860 20.7 0.0 thomasc 15234 20.6 0.0 thomasc 16844 18.4 0.0 thomasc 17420 15.7 0.0 root 1032 6.7 3.0 root 1290 3.2 3.0 root 774 3.2 3.0 root 3158 0.0 0.0 root 16022 0.0 0.0 root 2064 0.0 3.0 root 0 0.0 3.0

SZ 44 264 44 44 44 44 264 264 264 356 488 320 268

RSS 64 15396 64 60 64 64 15396 15396 15396 384 640 15452 15400

TTY STAT STIME TIME COMMAND pts/1 A 10:30:39 26:28 ./tcprg3 - A Jun 28 9544:43 kproc pts/1 A 10:30:49 21:49 ./tcprg5 pts/1 A 10:31:13 21:20 ./tcprg1 pts/1 A 10:31:00 19:13 ./tcprg2 pts/1 A 10:30:26 16:44 ./tcprg4 - A Jun 28 2679:27 kproc - A Jun 28 1263:12 kproc - A Jun 28 1258:58 kproc - A Jun 28 8:27 /usr/sbin/syncd 60 lft0 A Jun 29 7:05 topas n - A Jun 28 2:38 kproc - A Jun 28 1:26 swapper

Pgina 175 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Un usuario, thomasc, ha iniciado cinco programas con el prefijo tcprg que han acumulado mucho tiempo de uso de CPU reciente (columna C). Cuando se observa la salida del ps auxwww ejecutado en segundo lugar se observa en la columna %CPU (reporta cuanto tiempo de CPU utiliz el proceso desde su inicio) que esos programas utilizan una cantidad excesiva de CPU.

4.6.1.3 Recomendacin Hay varias formas de revertir la sobrecarga (por ejemplo, kill PID), pero lo ms apropiado es contactar al usuario thomasc y realizarle preguntas como: Qu son esos procesos?, Por qu estn ejecutndose pueden detenerse?, Deben ejecutarse ahora, pueden programarse para otra hora? Para obtener mejores resultados en cuanto al rendimiento, probablemente la mejor opcin ser ejecutar los procesos en un horario con menos actividad de CPU. Si los procesos se pueden ejecutar en otro momento, se puede hacer un scheduling con el comando batch, el at, o por medio del crontab. Se debe tener en cuenta que el inicio de estos procesos no debe interferir con OLTPs. Si los procesos deben ejecutarse s o s en momentos que la CPU est muy activa, y debern ser ejecutados en el futuro en condiciones similares, algunos cambios debern ser realizados para mejorar el balance del rendimiento del sistema. Una recomendacin es mover estos programas de test a un sistema de test, separado del entorno productivo. Otra solucin es agregar ms CPUs, la cual es apropiada si el hardware lo soporta, aunque puede mover el cuello de botella a otro recurso, por ejemplo, memoria. Limitar el uso de recursos puede ser una solucin, y para ello no hay nada mejor que el Workload Manager (WLM).

4.6.2 Escenario de rendimiento de I/O


En este escenario, un usuario informa que el reporte final mensual est tardando mucho tiempo para ejecutarse y el usuario no est seguro sobre cules son las causas. Una razn posible es que cuando el AIX crea un trabajo de impresin, el trabajo es escrito primero en el spooler de impresin. Este archivo de spool es creado en disco en el directorio /var/adm/spool. Si hay un problema de I/O donde el sistema espera para acceder al disco, entonces este archivo puede tardar mucho en generarse, especialmente si es un archivo grande.

4.6.2.1 Coleccin de datos En esta seccin, las salidas del sistema son recolectadas por los comandos vmstat e iostat. La siguiente es la salida del comando iostat:
# iostat 1 2 tty: Disks: hdisk3 hdisk2 hdisk0 hdisk1 cd0 hdisk4 # iostat 1 10 tin 0.0 tout 41.4 % tm_act 0.0 0.1 0.0 0.1 0.0 0.0 avg-cpu: % user 61.1 Kbps 0.3 1.1 0.9 1.5 0.0 0.2 tps 0.0 0.0 0.1 0.0 0.0 0.0 % sys 0.1 % idle 38.9 Kb_wrtn 224266 1658678 725871 1660027 0 40480 % iowait 0.0

Kb_read 258032 258088 746152 974788 0 323080

Pgina 176 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

tty:

tin 0.9

tout 52.6 % tm_act 19.4 49.0 0.0

avg-cpu: % user 2.7 Kbps 350.9 616.6 0.0 tps 32.3 52.9 0.0

% sys 20.1 Kb_read 870967 1267281 0 % sys 12.0 Kb_read 0 1656 0 % sys 6.0 Kb_read 0 672 0 % sys 6.0 Kb_read 4 316 0 % sys 12.0 Kb_read 0 312 0 % sys 6.0 Kb_read 4 188 0 % sys 9.0 Kb_read 0 328 0 % sys 13.0 Kb_read 0 244

% idle 43.3 Kb_wrtn 921096 1881244 0 % idle 0.0 Kb_wrtn 1616 508 0 % idle 0.0 Kb_wrtn 660 436 0 % idle 0.0 Kb_wrtn 204 1236 0 % idle 0.0 Kb_wrtn 232 496 0 % idle 0.0 Kb_wrtn 76 616 0 % idle 0.0 Kb_wrtn 216 588 0 % idle 0.0 Kb_wrtn 184 1484

% iowait 33.9

Disks: hdisk0 hdisk1 cd0 tty: tin 1.0

tout 0.0 % tm_act 29.0 100.0 0.0

avg-cpu: % user 0.0 Kbps 1616.0 2164.0 0.0 tps 101.0 108.0 0.0

% iowait 88.0

Disks: hdisk0 hdisk1 cd0 tty: tin 1.0

tout 58.0 % tm_act 25.0 100.0 0.0

avg-cpu: % user 0.0 Kbps 660.0 1108.0 0.0 tps 50.0 111.0 0.0

% iowait 94.0

Disks: hdisk0 hdisk1 cd0 tty: tin 2.0

tout 58.0 % tm_act 18.0 100.0 0.0

avg-cpu: % user 0.0 Kbps 208.0 1552.0 0.0 tps 21.0 114.0 0.0

% iowait 94.0

Disks: hdisk0 hdisk1 cd0 tty: tin 2.0

tout 94.0 % tm_act 18.0 98.0 0.0

avg-cpu: % user 0.0 Kbps 232.0 808.0 0.0 tps 28.0 111.0 0.0

% iowait 88.0

Disks: hdisk0 hdisk1 cd0 tty: tin 1.0

tout 47.0 % tm_act 12.0 100.0 0.0

avg-cpu: % user 0.0 Kbps 80.0 804.0 0.0 tps 20.0 105.0 0.0

% iowait 94.0

Disks: hdisk0 hdisk1 cd0 tty: tin 2.0

tout 94.0 % tm_act 17.0 100.0 0.0

avg-cpu: % user 0.0 Kbps 216.0 916.0 0.0 tps 21.0 103.0 0.0

% iowait 91.0

Disks: hdisk0 hdisk1 cd0 tty: tin 2.0

tout 48.0 % tm_act 18.0 99.0

avg-cpu: % user 0.0 Kbps 184.0 1728.0 tps 19.0 120.0

% iowait 87.0

Disks: hdisk0 hdisk1

Pgina 177 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

cd0 tty: tin 1.0

0.0 tout 1.0 % tm_act 8.9 100.0 0.0 tin 11.0 tout 11.0 % tm_act 23.0 100.0 0.0

0.0

0.0

0 % sys 20.8 Kb_read 4 136 0 % sys 6.0 Kb_read 0 276 0 % idle 0.0

0 % iowait 79.2

avg-cpu: % user 0.0 Kbps 67.3 3655.4 0.0 tps 13.9 127.7 0.0

Disks: hdisk0 hdisk1 cd0 tty:

Kb_wrtn 64 3556 0 % idle 0.0 Kb_wrtn 200 468 0 % iowait 94.0

avg-cpu: % user 0.0 Kbps 200.0 744.0 0.0 tps 23.0 102.0 0.0

Disks: hdisk0 hdisk1 cd0

La siguiente es la salida del comando vmstat:


# vmstat 1 10 kthr memory page faults cpu ----- ----------- ------------------------- ------------ ----------r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 19776 121 0 1 82 225 594 0 208 658 160 3 20 43 34 0 2 19776 115 0 0 0 408 911 0 338 1160 327 0 9 0 91 0 3 19776 121 0 0 0 410 950 0 329 971 300 0 12 0 88 0 3 19776 121 0 0 0 337 724 0 335 950 360 0 9 0 91 0 3 19776 120 0 0 0 562 1136 0 341 1279 256 0 19 0 81 0 3 19776 119 0 0 0 632 1360 0 349 1230 247 1 11 0 88 0 2 19776 118 0 0 0 641 1366 0 359 1630 281 0 19 0 81 0 3 19776 121 0 0 0 1075 3353 0 362 2147 322 0 23 0 77 0 3 19776 123 0 0 0 761 1700 0 367 1225 376 3 11 0 86 0 3 19776 123 0 0 0 1170 1819 0 435 1374 390 0 21 0 79

4.6.2.2 Anlisis de datos En esta seccin, sern identificados los indicadores clave de la salida y en base a stos, se realizar una explicacin.

a. Anlisis de la salida del comando vmstat A pesar de que el comando vmstat es una herramienta de diagnstico de memoria, muestra una columna de I/O. Se debe observar en la seccin de cpu, la columna wa; el promedio de la salida es de un 85 por ciento (se suma toda la columna, menos la primera lnea y se divide por 9). Si el valor wa es ms alto que un 25 por ciento, indica un problema con el subsistema de disco. El valor alto del wa obliga a revisar dos columnas adicionales. Debajo de kthr, kernel threads, la columna b indica que hay 2-3 threads en espera por segundo. Debajo de memory, la columna fre, indica que la cantidad de frames del buffer disponibles es muy baja.

b. Anlisis de la salida del comando iostat Los valores clave a verificar aqu son el % iowait y el % tm_act. Se debe recordar que la primera salida es el promedio desde el inicio del sistema. El valor %iowait El % iowait es el porcentaje de tiempo de CPU idle esperando una operacin de I/O local. Pgina 178 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

En este ejemplo, el %iowait tiene un promedio del 89.9 por ciento (sumando toda la columna, restando la primera y dividiendo por 9). Si el valor de % iowait es mayor al 25 por ciento, es aconsejable investigar el problema y realizar las acciones correctivas. El valor %tm_act El %tm_act es el porcentaje de tiempo en el que el disco est ocupado. En este ejemplo, el valor % tm_act tiene un promedio del 18.8 por ciento para el hdisk0 y un promedio del 99.7 por ciento para el hdisk1. Si el porcentaje de tiempo en que un disco est activo es muy alto, en un sistema pequeo con pocos discos ser muy notable la degradacin del rendimiento. Para brindar un buen rendimiento, el sistema debe registrar un promedio de actividad de disco menor al 40 por ciento. Sin embargo, esto no es posible con sistemas pequeos con pocos discos.

4.6.2.3 Recomendacin Las siguientes son algunas recomendaciones que ayudan a mejorar el I/O de disco: Se deben buscar discos inactivos en el sistema; si es posible, se deben mover los datos de discos muy activos a discos inactivos, lo que sin dudas mejorar el rendimiento. Se debe verificar la actividad de paginado, ya que puede ser otro factor importante. Es recomendable distribuir el paginado sobre la mayor cantidad de discos posible, para dividir la carga. Si los problemas ocurren ocasionalmente durante fin de mes, se debe revisar que otros procesos estn corriendo y si pueden ejecutarse en otro momento; de esta manera, la carga estar mejor distribuida en el tiempo.

4.6.3 Escenarios de I/O adicionales


Los siguientes escenarios son ejemplos de problemas de rendimiento de I/O. Los reportes de los comandos utilizados ayudarn a realizar una optimizacin del sistema

4.6.3.1 I/O wait de CPU y threads del kernel El siguiente escenario provee la siguiente salida del comando vmstat:
$ /usr/bin/vmstat 120 10 kthr memory page ----- ----------- ------------------------r b avm fre re pi po fr sr cy 0 1 59903 542 0 0 0 0 0 0 0 2 59904 550 0 0 0 0 0 0 0 3 59950 538 0 0 0 0 0 0 0 2 59899 578 0 0 0 0 0 0 0 2 59882 589 0 0 0 0 0 0 0 3 59882 420 0 0 0 0 0 0 0 2 59954 420 0 0 0 0 0 0 0 2 59954 423 0 0 0 0 0 0 0 3 59954 420 0 0 0 0 0 0 0 2 59954 422 0 0 0 0 0 0 faults -----------in sy cs 451 912 478 521 1436 650 344 649 249 467 1829 500 600 1292 705 452 952 372 537 1979 573 618 1413 686 551 938 634 460 1376 496 cpu ----------us sy id wa 43 11 15 31 23 19 4 50 7 7 6 80 12 14 4 70 6 8 3 61 11 8 1 80 13 5 10 72 15 9 6 70 4 2 2 92 14 2 4 80

El reporte del vmstat es tomando durante un perodo de 20 minutos utilizando un intervalo de 120 segundos repetido 10 veces. Los primeros valores interesantes en este reporte son los de cpu (us/sy/id/wa). En estos valores hay algo de tiempo idle (id), pero los valores ms grandes son de I/O wait (wa). El tiempo de I/O wait se incrementaba a lo largo del perodo analizado desde un 50 por ciento Pgina 179 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

hasta un pico del 92 por ciento en la novena medicin. El promedio de tiempo de I/O wait es del 72 %, lo que indica un cuello de botella en I/O. La columna wa especifica el porcentaje de tiempo que la CPU estuvo idle esperando un I/O local a disco. Generalmente, un valor wa superior al 25 por ciento indica que el subsistema de disco puede no estar bien balanceado, o es el resultado de una actividad intensiva de disco. Se debe revisar el valor b en la columna de thread del kernel. La columna b lista el promedio de thread del kernel que fueron puestos en la cola de espera por segundo y debera ser cercana a 0. Estos threads estn esperando recursos o I/O. En este caso, el problema no se puede relacionar con la memoria, ya que los parmetros de paginado estn todos en cero y la lista de pginas de memoria libres (fre) es aceptable. Para obtener ms informacin sobre dnde ocurre el cuello de botella, se debe ejecutar el comando iostat. Este provee informacin sobre cmo el I/O de disco es distribuido entre los volmenes fsicos.

4.6.3.2 Distribucin de I/O Este escenario devuelve las siguientes salidas de los comandos lsps y iostat:
# lsps -a Page Space Physical Volume Volume Group hd6 hdisk0 rootvg # iostat 120 5 ... tty: tin tout avg-cpu: % user 47.8 1394.6 50.3 Disks: hdisk0 hdisk1 hdisk2 tty: tin 47.1 % tm_act 97.0 0.8 0.2 tout 1046.3 % tm_act 98.5 0.6 0.3 tin 39.8 tout 1709.1 % tm_act 98.3 0.2 1.2 tin 32.9 tout 1467.4 % tm_act 99.8 0.6 0.5 tin 33.6 tout 875.5 Kbps 124.4 21.5 0.3 tps 59.3 16.8 0.1 Size 256MB %Used 13 Active yes Auto yes Type lv

% sys 19.6 Kb_read 1924 492 8 % sys 40.0 Kb_read 9260 96 4 % sys 40.0 Kb_read 7144 312 36 % sys 37.4 Kb_read 1364 672 24 % sys 41.1

% idle 25.0 Kb_wrtn 12240 0 12 % idle 4.0 Kb_wrtn 13008 332 32 % idle 10.0 Kb_wrtn 12532 904 100 % idle 22.0 Kb_wrtn 20576 464 48 % idle 10.5

% iowait 5.1

avg-cpu: % user 45.0 Kbps 186.1 23.8 0.6 tps 56.4 18.5 0.1

% iowait 11.0

Disks: hdisk0 hdisk1 hdisk2 tty:

avg-cpu: % user 30.0 Kbps 164.6 36.9 2.3 tps 55.2 26.6 0.5

% iowait 20.0

Disks: hdisk0 hdisk1 hdisk2 tty:

avg-cpu: % user 30.6 Kbps 183.9 35.6 1.2 tps 22.6 16.8 0.3

% iowait 10.0

Disks: hdisk0 hdisk1 hdisk2 tty:

avg-cpu: % user 18.4

% iowait 30.0

Pgina 180 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Disks: hdisk0 hdisk1 hdisk2 ...

% tm_act 98.9 0.2 0.3

Kbps 180.5 15.6 0.7

tps 7.5 2.9 0.2

Kb_read 3132 80 12

Kb_wrtn 18560 808 32

El comando lsps muestra que el espacio de paginado est configurado en el hdisk0. El reporte del iostat es tomado durante un perodo de 10 minutos cada 120 segundos de intervalo. El primer intervalo no es mostrado y se debe ignorar en un anlisis en tiempo real, ya que es el promedio histrico desde el reinicio del sistema. Obsrvese el alto tiempo de I/O wait (% iowait), que aumenta desde un 5.1 por ciento a un 30 por ciento. Generalmente, si el tiempo de I/O wait excede un 25 por ciento, hay un problema relativo al I/O de disco. Hay casos donde el tiempo de I/O wait es del 0 por ciento y sin embargo hay un cuello de botella de I/O. Esto puede ocurrir cuando el sistema est realizando un extenso paginado y el dispositivo de swap est sobrecargado. En el reporte del iostat, la actividad en el hdisk0 es extremadamente alta. El % tm_act, que indica la actividad del disco en porcentajes, se mantiene entre el 97 por ciento y el 99.8 por ciento, lo que indica que est prcticamente activo en forma constante. Esto indica que el cuello de botella de I/O est en el disco hdisk0. Observando el valor Kb_wrtn, vemos que los datos escritos al disco son muy altos en comparacin con los datos ledos. Esto indica que el lmite de I/O del hdisk0 fue alcanzado. Para mejorar el rendimiento de I/O, los otros discos deberan utilizarse ms, moviendo los archivos, file systems y volmenes lgicos ms activos a los discos menos activos. En general, una investigacin ms intuitiva es requerida utilizando otras herramientas como el filemon y el lslv.

4.6.3.3 Fragmentacin de un volumen lgico El comando lslv es utilizado para mostrar los atributos de los volmenes lgicos, como la fragmentacin. La siguiente salida del lspv muestra un volumen lgico fragmentado:
lslv -p hdisk0 lv00 hdisk0:lv00:N/A 0001 0002 0003 0011 0012 0013 0021 0022 0023 0031 0032 0033 0043 0053 0063 USED USED USED USED USED FREE FREE 0068 FREE USED USED USED 0034 0044 0054 0064 USED USED USED USED FREE FREE 0069 0070 USED USED USED 0035 0045 0055 USED USED USED USED FREE FREE 0071 USED USED

0004 0014 0024 0036 0046 0056 USED USED USED USED FREE FREE USED USED USED

0005 0015 0025 0037 0047 0057 USED USED USED USED FREE FREE USED USED USED

0006 0016 0026 0038 0048 0058 USED USED USED USED FREE FREE USED USED USED

0007 0017 0027 0039 0049 0059 USED USED USED USED FREE FREE USED USED USED

0008 0018 0028 0040 0050 0060 USED USED USED FREE FREE 0065 USED USED USED

0009 0019 0029 0041 0051 0061 USED USED USED FREE FREE 0066 USED USED USED

0010 0020 0030 0042 0052 0062 USED USED USED FREE FREE 0067 USED USED USED

1-10 11-20 21-30 31-32 33-42 43-52 53-62 63-64 65-74 75-84 85-94 95-95 96-105 106-115 116-125 126-127 128-137 138-147 148-157 158-159

El volumen lgico conformado por 71 particiones lgicas est fragmentado en cuatro de las cinco secciones de la poltica de asignacin intra. Las secciones borde externo (outer edge) y medio Pgina 181 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

externo (outer middle) estn asignadas entre las particiones lgicas 01-32 y 33-64 respectivamente en similares particiones fsicas contiguas. Las particiones lgicas 65-69 estn asignadas en la seccin medio interno y las ltimas dos particiones lgicas estn asignadas a la seccin borde interno. Esta obvia fragmentacin del volumen lgico lv00 puede inducir una disminucin del rendimiento de I/O debido a mayores tiempos de bsqueda y a los cambios de cabeza del disco para una operacin de lectura/escritura secuencial en la ltima parte del volumen lgico. Como en el volumen fsico hay espacio libre, es posible realizar una reorganizacin del lv00. Se debe utilizar el comando reorgvg con ese fin, y esto ayudar a mejorar el rendimiento del volumen lgico.

4.6.3.4 Monitoreando el escenario utilizando filemon Teniendo en cuenta un sistema con los siguientes discos disponibles:
# lspv hdisk0 hdisk1 000bc6fdc3dc07a7 000bc6fdbff75ee2 rootvg none

La siguiente salida muestra una seccin de un reporte del filemon realizado para monitorear los volmenes lgicos del sistema. El reporte fue realizado con el siguiente comando:
filemon -O lv o filemon.out ... Most Active Logical Volumes -----------------------------------------------------------------------util #rblk #wblk KB/s volume description -----------------------------------------------------------------------0.07 0 2016 64.5 /dev/mirrlv /u/mirrfs 0.84 105792 149280 177.1 /dev/hd1 /home 0.32 0 16800 11.9 /dev/hd8 jfslog 0.03 0 4608 3.2 /dev/hd4 / 0.02 864 55296 5.9 /dev/hd2 /usr 0.02 192 4800 3.5 /dev/hd9var /var 0.01 0 2976 2.1 /dev/hd8 jfslog ...

La salida muestra que el volumen lgico hd1, que contiene el file system /home, tiene por lejos la mayor utilizacin. Como el segundo volumen fsico no es utilizado, como se ve en la salida del lspv, es posible agregar este volumen fsico al rootvg y distribuir el hd1 para que utilice ambos hdsik0 y hdisk1. Esto se puede realizar configurando el volumen lgico con una poltica inter maximum o utilizando la opcin de striping.

4.6.3.5 Asignacin de volumen lgico El siguiente escenario muestra una serie de comandos que muestran el estado de un sistema con un problema de asignacin en un grupo de volmenes dedicado a una base de datos:
# lsps -s Total Paging Space Percent Used 100MB 37% # lsps -a Page Space Physical Volume Volume Group hd6 hdisk0 rootvg

Size %Used Active Auto Type 100MB 38 yes yes lv

Esto muestra que el espacio de paginado est definido en el hdisk0 del rootvg. La siguiente es la informacin del grupo de volmenes: Pgina 182 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# lsvg rootvg datavg # lspv hdisk0 hdisk1 hdisk2 hdisk3

000038744c632197 00002199abf65a1a 00000228b9c5d7da 00002199b40b728c

rootvg datavg datavg datavg

Esto muestra que hay dos grupos de volmenes definidos, rootvg en hdisk0 y datavg en hdisk1, hdisk2, y hdisk3. El hdisk0 contiene los siguientes volmenes lgicos:
# lspv -l hdisk0 hdisk0: LV NAME hd5 hd3 hd2 hd8 hd4 hd9var hd6 hd1 lv00

LPs 2 6 117 1 2 1 128 3 10

PPs 2 6 117 1 2 1 128 3 10

DISTRIBUTION 02..00..00..00..00 02..00..04..00..00 00..47..42..28..00 00..00..01..00..00 00..00..02..00..00 00..00..01..00..00 29..50..49..00..00 00..00..01..02..00 00..00..00..10..00

MOUNT POINT N/A /tmp /usr N/A / /var N/A /home /database

El rootvg en el hdisk0 contiene todos los volmenes lgicos y file systems por defecto y un lv00 adicional que contiene el file system /database. El otro disco contiene:
# lspv -l hdisk1 hdisk1: LV NAME loglv00 lv01 lv02 lv03 # lspv -l hdisk2 hdisk2: LV NAME # lspv -l hdisk3 hdisk3: LV NAME

LPs 1 10 10 10 LPs LPs

PPs 1 10 10 10 PPs PPs

DISTRIBUTION 01..00..00..00..00 00..00..00..00..10 00..00..00..00..10 10..00..00..00..00 DISTRIBUTION DISTRIBUTION

MOUNT POINT N/A /db01 /db02 /db03 MOUNT POINT MOUNT POINT

Los volmenes lgicos del grupo de volmenes datavg estn asignados en el mismo volumen fsico hdisk1, incluso el log de jfs loglv00. Adems se ve que los volmenes fsicos hdisk2 y hdisk3 no son utilizados. Los siguientes son los detalles del volumen lgico datavg:
# lslv lv01 LOGICAL VOLUME: lv01 LV IDENTIFIER: 0000881962b29b51.1 VG STATE: active/complete TYPE: jfs MAX LPs: 512 COPIES: 1 LPs: 1 STALE PPs: 0 INTER-POLICY: minimum INTRA-POLICY: middle MOUNT POINT: /db01 MIRROR WRITE CONSISTENCY: on EACH LP COPY ON A SEPARATE PV ?: yes # lslv lv02 LOGICAL VOLUME: lv02 VOLUME GROUP: datavg PERMISSION: read/write LV STATE: opened/syncd WRITE VERIFY: off PP SIZE: 8 megabyte(s) SCHED POLICY: parallel PPs: 1 BB POLICY: relocatable RELOCATABLE: yes UPPER BOUND: 32 LABEL: /db01

VOLUME GROUP: datavg

Pgina 183 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

LV IDENTIFIER: 0000881962b29b51.3 VG STATE: active/complete TYPE: jfs MAX LPs: 512 COPIES: 1 LPs: 1 STALE PPs: 0 INTER-POLICY: minimum INTRA-POLICY: middle MOUNT POINT: /db02 MIRROR WRITE CONSISTENCY: on EACH LP COPY ON A SEPARATE PV ?: yes # lslv lv03 LOGICAL VOLUME: lv03 LV IDENTIFIER: 0000881962b29b51.4 VG STATE: active/complete TYPE: jfs MAX LPs: 512 COPIES: 1 LPs: 1 STALE PPs: 0 INTER-POLICY: minimum INTRA-POLICY: middle MOUNT POINT: /db03 MIRROR WRITE CONSISTENCY: on EACH LP COPY ON A SEPARATE PV ?: yes

PERMISSION: read/write LV STATE: opened/syncd WRITE VERIFY: off PP SIZE: 8 megabyte(s) SCHED POLICY: parallel PPs: 1 BB POLICY: relocatable RELOCATABLE: yes UPPER BOUND: 32 LABEL: /db02

VOLUME GROUP: datavg PERMISSION: read/write LV STATE: opened/syncd WRITE VERIFY: off PP SIZE: 8 megabyte(s) SCHED POLICY: parallel PPs: 1 BB POLICY: relocatable RELOCATABLE: yes UPPER BOUND: 32 LABEL: /db03

Cuando se generan los volmenes lgicos lv01, lv02, y lv03, el administrador del sistema debera haber dedicado cada uno de ellos en un volumen fsico diferente. Alternativamente, se podra haber definido la poltica inter en maximum y limitando el upper bound en 1. De esta manera, el lv01 y el correspondiente /db01 residira en el hdisk1, el lc02 y /db02 en el hdisk2 y el lv02 y /db02 en el hdisk3. Es posible modificar la situacin actual utilizando el comando migratepv. Adems, para distribuir la carga del jfslog del hdisk1 en los otros discos, se puede crear un jfslog adicional por file system. Definiendo un jfs log dedicado para el /db02 y /db03 se incrementara el rendimiento. De esta manera, los diferentes file systems no incrementan la carga del hdisk1 para utilizar el jfs log.

4.6.4 Escenario de rendimiento del paginado


En esta seccin, se investigar el rendimiento del paginado. Sern descriptos los sntomas de la utilizacin excesiva de memoria y las posibles acciones correctivas.

4.6.4.1 Coleccin de datos Para coleccionar los datos sern utilizados los comandos svmon y vmstat. La siguiente salida fue tomada con el comando vmstat con el sistema inactivo:
# vmstat 1 5 kthr memory page ----- ----------- -----------------------r b avm fre re pi po fr sr cy 0 0 11106 107916 0 0 0 0 0 0 0 0 11106 107915 0 0 0 0 0 0 0 0 11106 107915 0 0 0 0 0 0 0 0 11106 107915 0 0 0 0 0 0 0 0 11106 107915 0 0 0 0 0 0 faults cpu ------------ ----------in sy cs us sy id wa 125 570 66 1 4 88 7 112 397 42 0 0 98 2 107 192 23 0 0 99 0 110 280 28 0 0 99 0 109 174 27 1 0 99 0

La siguiente es la salida del comando vmstat con el sistema sufriendo una alta utilizacin de memoria: Pgina 184 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# vmstat 1 15 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 204340 72 0 0 5 8 25 0 108 249 29 0 1 98 1 3 4 204649 124 0 31 422 449 912 0 347 4796 350 5 95 0 0 1 3 204988 112 0 56 183 464 1379 0 339 14144 382 4 96 0 0 9 0 205292 122 0 24 251 369 988 0 352 598 403 4 94 0 2 3 1 205732 119 0 0 409 520 771 0 313 780 293 1 99 0 0 3 1 206078 123 0 0 445 496 602 0 336 706 298 2 98 0 0 3 1 206460 120 0 0 343 504 1210 0 305 719 271 1 99 0 0 2 1 206897 119 0 0 320 512 981 0 311 660 288 0 99 0 0 3 1 207186 126 0 1 369 504 929 0 331 718 292 1 99 0 0 3 1 207491 120 0 1 428 504 844 0 319 763 262 1 99 0 0 4 0 207964 119 0 0 275 520 791 0 296 632 283 0 99 0 0 4 0 208354 119 0 2 373 513 816 0 328 664 297 1 99 0 0 4 0 208715 87 0 4 383 464 753 0 330 1480 261 4 96 0 0 3 1 209006 4 0 12 282 504 630 0 350 1385 286 2 98 0 0 3 2 209307 10 0 0 316 488 685 0 320 635 287 1 92 0 7

La siguiente salidas realizadas con el comando vmstat sern utilizadas como referencia o comparacin. La siguiente salida corresponde al comando ps:
# ps gv | head -n 1; ps gv | egrep -v "RSS" | sort +6b -7 -n r PID 12478 1032 774 7484 10580 0 516 2076 3622 7740 4994 15434 4564 15808 5686 11402 2622 16114 16236 11982 13934 14462 16412 1 6708 6212 3124 17316 17556 12886 16960 13104 13466 4774 13796 TTY pts/4 pts/5 pts/5 pts/0 pts/2 pts/0 pts/1 pts/0 pts/5 pts/4 pts/2 pts/3 pts/5 pts/0 pts/0 pts/3 pts/0 pts/1 pts/5 pts/5 STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND A 2:05 91 742240 362552 32768 2 4 50.8 69.0 ./tmp/me A 0:56 0 64 6144 xx 0 6088 0.0 1.0 kproc A 0:01 0 16 6104 xx 0 6088 0.0 1.0 kproc A 0:00 6 16 6104 32768 0 6088 0.0 1.0 kproc A 0:00 1 16 6104 32768 0 6088 0.0 1.0 kproc A 0:20 7 12 6100 xx 0 6088 0.0 1.0 swapper A 3920:23 0 8 6096 xx 0 6088 98.7 1.0 kproc A 0:00 0 16 6096 xx 0 6088 0.0 1.0 kproc A 0:00 0 16 6096 xx 0 6088 0.0 1.0 kproc A 0:00 0 16 6096 32768 0 6088 0.0 1.0 kproc A 0:00 24 440 708 32768 198 220 0.0 0.0 ksh /usr/ A 0:00 0 368 396 32768 198 220 0.0 0.0 ksh /usr/ A 0:00 0 308 392 32768 198 220 0.0 0.0 -ksh A 0:00 292 304 388 32768 198 220 0.0 0.0 ksh A 0:00 320 280 348 32768 198 220 0.0 0.0 -ksh A 0:00 225 296 336 32768 198 220 0.0 0.0 -ksh A 0:39 469 3208 324 xx 2170 112 0.0 0.0 /usr/lpp/ A 0:00 0 240 324 32768 52 60 0.0 0.0 ps gv A 0:00 12 360 252 32768 198 220 0.0 0.0 ksh /usr/ A 0:00 160 304 240 32768 198 220 0.0 0.0 -ksh A 0:00 234 304 236 32768 198 220 0.0 0.0 -ksh A 0:00 231 308 232 32768 198 220 0.0 0.0 -ksh A 0:00 129 304 232 32768 198 220 0.0 0.0 -ksh A 0:07 642 760 224 32768 25 36 0.0 0.0 /etc/init A 0:02 394 728 212 32768 337 80 0.0 0.0 /usr/sbin A 0:00 567 644 208 32768 327 64 0.0 0.0 sendmail: A 5:22 340 1152 204 xx 40 0 0.1 0.0 dtgreet A 0:00 71 88 196 32768 43 68 0.0 0.0 svmon -i A 0:00 1 148 196 32768 16 24 0.0 0.0 egrep -v A 1:53 30625 228 192 32768 10 12 9.8 0.0 cp -r /u/ A 0:00 40 132 184 32768 15 20 0.0 0.0 vmstat 1 A 0:00 63 132 156 32768 15 20 0.0 0.0 vmstat 1 A 0:00 0 104 136 32768 2 4 0.0 0.0 /usr/bin/ A 0:00 217 284 124 32768 30 28 0.0 0.0 /usr/sbin A 0:00 4 80 76 32768 18 24 0.0 0.0 dd conv=s

Pgina 185 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

14856 5440 9292 1920 14198 2516 8000 8780 11614 12788 14710 15298 2874 3402 3900 4134 5176 5938 6450 6966 7224 8260 8522 9040 9554 9808 10838 11094

pts/5 0 lft0 -

A A A A A A A A A A A A A A A A A A A A A A A A A A A A

0:01 0 0:00 228 0:00 183 0:50 16272 0:00 274 0:00 0 0:00 51 0:00 19 0:00 9 0:00 102 0:00 350 0:00 0 0:00 29 0:00 5 0:00 442 0:00 26 0:00 44 0:00 37 0:00 99 0:00 52 0:00 56 0:00 1 0:00 13 0:00 3 0:00 5 0:00 12 0:00 17 0:00 13

72 292 128 96 740 656 656 120 180 740 740 740 288 180 460 400 456 280 304 428 500 96 292 36 220 312 372 256

64 60 60 36 20 16 16 16 16 16 16 16 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12

32768 32768 32768 xx 32768 32768 32768 32768 32768 32768 32768 32768 xx xx xx xx 32768 32768 32768 32768 32768 32768 32768 32768 32768 32768 32768 32768

18 25 53 2 313 313 313 3 18 313 313 313 100 34 56 100 31 36 25 190 191 2 21 5 12 64 40 22

24 20 20 4 4 4 4 0 0 4 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

dd conv=s /usr/sbin /usr/sbin /usr/sbin telnetd telnetd telnetd /usr/sbin /usr/lpp/ telnetd telnetd telnetd /usr/dt/b slattach /usr/lib/ dtlogin < /usr/sbin /usr/sbin /usr/sbin /usr/sbin /usr/sbin /usr/sbin /usr/sbin /usr/sbin /usr/sbin /usr/bin/ /usr/sbin /usr/IMNS

La siguiente es la salida del comando svmon:


# svmon -i 5 5 memory pg space pin in use memory pg space pin in use memory pg space pin in use memory pg space pin in use size 131063 131072 work 6955 104809 size 131063 131072 work 6951 105067 size 131063 131072 work 6955 104809 size 131063 131072 work 6951 105067 inuse 130936 106986 pers 0 26127 inuse 130942 108647 pers 0 25875 inuse 130951 110432 pers 0 26127 inuse 130942 108647 pers 0 25875 free pin 127 6946 clnt 0 0 free 121 clnt 0 0 free pin 113 6942 clnt 0 0 free pin 121 6942 clnt 0 0 virtual 206567 virtual 208406 pin 6942 virtual 206567 virtual 204676

Pgina 186 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

memory pg space pin in use

size 131063 131072 work 6951 105127

inuse 130951 110432 pers 0 25824

free pin 113 6942 clnt 0 0

virtual 208406

La siguiente salida del svmon muestra los diez procesos que ms memoria estn utilizando:
# svmon -Pu -t 10 ------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 12478 memory 92498 1259 95911 189707 N N Vsid 7a80 d18a 4358 0 8811 c93 e6ec 5d79 e28c 735e 767c 3e76 634c Esid 5 3 4 0 d 8 7 6 9 a 2 f 1 Type work work work work work work work work work work work work pers Description shmat/mmap shmat/mmap shmat/mmap kernel seg shared library text shmat/mmap shmat/mmap shmat/mmap shmat/mmap shmat/mmap process private shared library data code,/dev/hd3:21 Inuse 52911 31670 4963 1522 274 244 240 234 232 200 4 3 1 Pin Pgsp Virtual Addr Range 0 222 53058 0..65285 0 33881 65535 0..65535 0 60572 65535 0..65535 1258 1076 3897 0..32767 65475..65535 0 24 393 0..65535 0 12 256 0..65288 0 16 256 0..65287 0 22 256 0..65286 0 24 256 0..65289 0 55 255 0..65034 1 3 5 65314..65535 0 4 5 0..709 0 - 0..2

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 13796 dd 2829 1260 1100 4303 N N Vsid 0 dc53 8811 edae 83b0 dbb3 949a ac7d ac5d Esid Type Description 0 work kernel seg - pers /dev/hd3:45 d work shared library text 2 work process private 1 f 3 4 5 pers work work work work code,/dev/hd2:4164 shared library data shmat/mmap shmat/mmap shmat/mmap Inuse 1522 1011 274 8 6 5 1 1 1 Pin 1258 0 0 1 0 0 1 0 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 - 0..1010 24 393 0..65535 0 8 0..20 : 65310..65535 - 0..5 0 2 0..797 0 1 0..0 0 1 0..0 0 1 0..0

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 14856 dd 2826 1260 1100 4301 N N Vsid 0 dc53 8811 83b0 6ce5 5cc3 Esid Type Description 0 work kernel seg d 1 2 pers work pers work /dev/hd3:45 shared library text code,/dev/hd2:4164 process private Inuse 1522 1011 274 6 6 4 Pin 1258 0 0 0 1 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 - 0..1010 24 393 0..65535 - 0..5 0 6 0..19 : 65310..65535 0 2 0..797

f work shared library data

Pgina 187 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

949a ac7d ac5d

3 work shmat/mmap 4 work shmat/mmap 5 work shmat/mmap

1 1 1

1 0 0

0 0 0

1 0..0 1 0..0 1 0..0

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 4994 ksh 1975 1259 1100 4400 N N Vsid 0 8811 7b7c e03c c72a 2865 4b89 Esid Type Description 0 work kernel seg d work shared library text 2 work process private 1 f pers work pers pers code,/dev/hd2:4204 shared library data /dev/hd2:32343 2 /dev/hd2:10340 0 Inuse 1522 274 98 55 24 0 0 Pin 1258 0 1 0 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 24 393 0..65535 0 96 0..115 : 65310..65535 - 0..58 0 14 0..797 - 0..1 - 0..10

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 15434 ksh 1897 1259 1100 4328 N N Vsid 0 8811 e03c 92c3 30f7 2865 536a c91 Esid Type Description 0 work kernel seg d work shared library text 1 pers code,/dev/hd2:4204 2 work process private f work pers pers pers shared library data /dev/hd2:32343 2 /dev/hd2:4522 /dev/hd3:29 Inuse 1522 274 55 29 15 0 0 0 Pin 1258 0 0 1 0 0 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 24 393 0..65535 - 0..58 0 28 0..94 : 65310..65535 0 10 0..797 - 0..1 - 0..7 -

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16728 -ksh 1897 1259 1103 4324 N N Vsid 0 8811 e03c ef7a 8717 2865 a2f4 f96d Esid Type Description 0 work kernel seg d work shared library text 1 pers code,/dev/hd2:4204 2 work process private f work pers pers pers shared library data /dev/hd2:32343 2 /dev/hd4:792 /dev/hd3:40 Inuse 1522 274 55 24 18 0 1 1 Pin 1258 0 0 1 0 0 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 24 393 0..65535 - 0..58 2 23 0..83 : 65310..65535 1 11 0..382 - 0..1 - 0..1 - 0..0

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 15808 ksh 1896 1259 1166 4366 N N Vsid 0 8811 e03c cec9 1752 Esid Type Description 0 work kernel seg d work shared library text 1 pers code,/dev/hd2:4204 2 work process private f work shared library data Inuse 1522 274 55 25 17 Pin 1258 0 0 1 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 24 393 0..65535 - 0..58 54 62 0..91 : 65310..65535 12 14 0..797

Pgina 188 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2865 e35c

- pers /dev/hd2:32343 - pers /dev/hd1:19

0 1

- 0..1 - 0..0

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 2622 X 1888 1268 1889 5132 N N Vsid 0 8811 8971 9172 fa9f 3987 b176 e97d d97b 3186 180 4168 1963 90b2 9092 Esid Type Description 0 work kernel seg d work shared library text 2 work process private 1 3 f pers work work work pers pers work pers pers pers work pers code,/dev/hd2:18475 shmat/mmap shared library data /dev/hd2:20486 0 /dev/hd3:25 /dev/hd2:20485 /dev/hd9var:2079 /dev/hd9var:2078 /dev/hd4:2 0 Inuse 1522 274 52 28 9 2 1 0 0 0 0 0 0 0 0 Pin 1258 0 8 0 0 2 0 0 0 0 0 0 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 24 393 0..65535 712 763 0..825 : 65309..65535 - 0..706 32 32 0..32783 2 4 0..32767 39 39 0..310 - 0..7 2 2 0..32768 - 0..0 - 0..0 - 0..0 2 2 0..32768 - 0..0

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 11402 -ksh 1882 1259 1166 4364 N N Vsid 0 8811 e03c 6b0d 4328 2865 3326 Esid Type Description 0 work kernel seg d work shared library text 1 pers code,/dev/hd2:4204 2 work process private f work shared library data - pers /dev/hd2:32343 2 - pers /dev/hd4:605 Inuse 1522 274 55 18 11 0 0 Pin 1258 0 0 1 0 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 24 393 0..65535 - 0..58 52 59 0..83 : 65310..65535 14 15 0..382 - 0..1 - 0..1

------------------------------------------------------------------------------Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 5686 -ksh 1872 1259 1106 4304 N N Vsid 0 8811 e03c 72ee 6aed 2865 a2f4 Esid Type Description 0 work kernel seg d work shared library text 1 pers code,/dev/hd2:4204 2 work process private f work shared library data - pers /dev/hd2:32343 2 - pers /dev/hd4:792 Inuse 1522 274 55 12 6 0 1 Pin 1258 0 0 1 0 0 Pgsp Virtual Addr Range 1076 3897 0..32767 : 65475..65535 24 393 0..65535 - 0..58 5 12 0..82 : 65310..65535 1 2 0..382 - 0..1 - 0..1

Varias muestras del espacio de paginado en diferentes momentos utilizando el comando lsps -a:
# lsps -a Page Space hd6 Physical Volume hdisk0 Volume Group rootvg Size %Used Active Auto Type 512MB 95 yes yes lv

Pgina 189 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# lsps -a Page Space hd6 # lsps -a Page Space hd6

Physical Volume hdisk0 Physical Volume hdisk0

Volume Group rootvg Volume Group rootvg

Size %Used Active Auto Type 512MB 97 yes yes lv Size %Used Active Auto Type 512MB 9 yes yes lv

Salida del comando vmtune:


# vmtune vmtune: current values: -p -P -r -R -f -F -N -W minperm maxperm minpgahead maxpgahead minFREE maxFREE pd_npages maxrandwrt 26007 104028 2 8 120 128 524288 0 -M -w -k -c -b -B -u -l -d maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps 104851 4096 1024 1 93 80 9 131072 1 -s -n -S -h sync_release_ilock nokillroot v_pinshm strict_maxperm 0 0 0 0 number of valid memory pages = 131063 maximum pinable=80.0% of real memory number of file memory pages = 13516 maxperm=79.4% of real memory minperm=19.8% of real memory numperm=10.3% of real memory

Mostrar la cantidad de procesadores con el comando lsdev:


# lsdev -Ccprocessor proc0 Available 00-00 Processor

Este es un sistema de un slo procesador.

4.6.4.2 Anlisis de los datos Tomando las salidas de la seccin anterior, se pueden investigar los distintos componentes del sistema para determinar que rea est causando problemas de rendimiento. Para esta investigacin, la salida ms utilizada ser la del comando vmstat. Las dems salidas son para informacin y confirmacin. a. La columna kthr (kernel thread) La columna kthr provee informacin sobre el promedio de threads en varias colas. Tanto la columna r como la b estn bajas, indicando que el sistema est ejecutando los threads en forma adecuada. La contencin de los recursos de CPU es baja. b. La columna de memoria La columna de memoria muestra informacin sobre el uso de la memoria real y virtual. El tamao de una pgina es 4096 bytes. En la columna avm se puede ver que el promedio de pginas asignadas aument. El sistema seguir asignando pginas hasta que todo el espacio de paginado disponible (ver el comando lsps -a). Cuando todo el espacio de paginado utilizado alcance un 100%, el sistema comenzar a matar procesos liberando espacio de paginado. La columna fre muestra el promedio de pginas de memoria libres. El valor MINFREE para este sistema es 120, como muestra el comando vmtune. En este ejemplo, la memoria libre ronda el valor MINFREE hasta caer debajo de 100 y Iuego casi 0. Esto es uno de los indicadores de que el sistema est sufriendo trashing. Pgina 190 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

c. La columna page La columna page muestra informacin sobre los page faults y la actividad de paginado. Estos promedios son entregados por segundo. El espacio de paginado es la parte de la memoria virtual que reside en disco. Es utilizado como contendor cuando la memoria es saturada. El paginado consiste en volmenes lgicos de paginado dedicados al almacenamiento de conjuntos de pginas activas que fueron robadas de la memoria real. Cuando un pgina robada es llamada por un proceso, ocurre un page fault y la pgina debe ser movida del espacio de paginado a la memoria real. Siempre que una pgina del almacenamiento activo es robada, es escrita en el espacio de paginado. Si no llamada nuevamente, permanece en el dispositivo de paginado hasta que el proceso termina o libera el espacio. Cuando un proceso termina normalmente, todo el espacio de paginado asignado para el proceso es liberado. La columna re, que indica la cantidad de pginas reclamadas, permanece en completamente en 0. La columna pi vara desde 0 hasta un alto nivel de 56 pginas movidas a memoria desde el espacio de paginado (page in). Aunque un nivel de pi no mayor a 5 es considerado aceptable, niveles mayores a 5 no son necesariamente un indicativo de problemas de rendimiento, debido a que por cada page in, necesariamente debe haber ocurrido un page out. La columna po, que refleja la cantidad de pginas movidas desde memoria al espacio de paginado (page out), se mantiene entre 183 y 445 por segundo. Con una alta tasa de paginado, el sistema debe sufrir cierta degradacin del rendimiento, ya que el espacio de paginado se mantiene en disco y es accedido en forma ms lenta que la RAM. La columna fr indica la cantidad de pginas liberadas por segundo. La columna sr indica la cantidad de pginas revisadas por el algoritmo de reemplazo de pginas. Si la proporcin entre fr:sr es alta, implica limitacin de memoria, por ejemplo, si la proporcin es 1:3, esto significa que por cada pgina liberada, tres deben ser revisadas. En este ejemplo, la proporcin es cercana a 1:2. d. La columna faults La informacin debajo del encabezamiento faults muestra los promedios de traps e interrupciones por segundo. La columna in indica las interrupciones de dispositivos por segundo y siempre es mayor a 100. La columna sy indica la cantidad de llamadas del sistema y es extremadamente difcil determinar un valor apropiado. La columna cs indica la cantidad de context switches. e. La columna cpu La informacin debajo del encabezamiento cpu provee un anlisis del uso de CPU. La columna us indica la cantidad de tiempo utilizado en modo usuario. En este ejemplo, no supera el 5 por ciento. La columna sy indica la cantidad de tiempo utilizado en modo sistema. En este ejemplo, no baja del 92 por ciento. La columna id indica la cantidad de tiempo inactivo. En este ejemplo, la cpu nunca est inactiva. La columna wa indica la cantidad de tiempo inactivo con I/O a disco local pendiente. En este ejemplo, no supera el 7 por ciento.
Nota

En un sistema uni-procesador, si us + sy es mayor al 90 por ciento, el sistema puede ser considerado saturado en CPU.

4.6.4.3 Recomendacin Teniendo en cuenta todos los datos recopilados, las siguientes recomendaciones pueden implementarse para aliviar la situacin: Pgina 191 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Si es posible, una CPU adicional debera agregarse al sistema para intentar bajar el nivel de CPU a menos del 80 por ciento. Aadir espacio de paginado adicional en otro disco interno. Esto es por cuestiones de velocidad y disponibilidad. Siempre es conveniente distribuir el espacio de paginado sobre mltiples discos, ya que esto mejorar el rendimiento.

Si esta situacin ocurre slo en determinados momentos, quizs sea posible reprogramar la ejecucin de los trabajos ms pesados, distribuyndolos en el tiempo, de manera que no haya conflictos entre ellos.

Pgina 192 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

5. Resolucin de problemas de red TCP/IP


El objetivo de este captulo es identificar el origen de los problemas de red y resolverlos. Las determinaciones de problemas son expuestas asumiendo que las redes fueron configuradas de acuerdo a los estndares de red apropiados.

5.1 Identificar un problema genrico de red


Antes de comenzar cualquier investigacin en la red, una serie de preguntas deben ser formuladas para identificar el problema: El problema es en su mquina? En la red fsica? En los dispositivos de red? En las tablas de ruteo? El problema es con el host destino? El problema es con la resolucin de nombres? El problema es con un router?

5.2 Pasos para aislar un problema de red TCP/IP


Los problemas aqu listados son los ms comunes de encontrar. A veces, es muy difcil de determinar exactamente dnde se encuentra el problema, dentro o fuera de la mquina. Para determinar el problema, se deben utilizar herramientas y comandos de monitoreo y un mtodo de descarte. Si ninguno de los siguientes pasos ayuda a resolver el problema, ser necesario contactar al centro de soporte.

5.2.1 Problemas de red en un host determinado


Si la red en forma general funciona, pero no es posible acceder a un host particular, se debe intentar hacer un ping por direccin IP y por nombre de host. Se puede revisar la ruta seguida hasta el host con el siguiente comando:
traceroute <nombre de host>

La salida del traceroute muestra cada gateway que atraviesa el paquete en su intento por encontrar el host destino. Si es posible, se deben examinar las tablas de ruteo de la ltima mquina que muestra el traceroute para verificar si existe una ruta al host destino. La ltima mquina mostrada indica donde se desva del camino el ruteo.

5.2.2 No hay acceso a la red


Esto puede significar que hay un problema con el host utilizado o con la red en general. Primero se debe verificar que los servicios de red estn activos en el servidor:
lssrc s inetd

Pgina 193 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Luego, se debe hacer un ping a un host conocido. Por ejemplo:


ping startrek

Si el ping es satisfactorio, se trata de un problema en un host particular. Si no, se debe intentar utilizar la direccin IP del host en lugar del nombre, por ejemplo:
ping 9.3.45.89

Si el ping por IP funciona y por nombre no, se trata de un problema de resolucin de nombres. Si no se puede hacer un ping a un host externo tanto por direccin IP como por nombre, puede tratarse de un problema de ruteo.

5.2.3 Problemas de resolucin de nombres


Para intentar resolver un nombre de host, los servidores TCP/IP utilizan rutinas de resolucin. Si se piensa que el problema es de resolucin de nombres, primero se debe verificar el orden de la resolucin de nombres y determinar si se est utilizando un servidor de nombres. El orden por defecto para la resolucin de nombres en AIX V4 es: 1. Domain Name Server (DNS) 2. Network Information Service (NIS) 3. Archivo local /etc/hosts El orden puede modificarse en el archivo /etc/netsvc.conf o utilizando la variable de ambiente NSORDER. Si el archivo /etc/resolv.conf contiene una entrada para un servidor de nombres, entonces se est utilizando un DNS. Se debe intentar un ping a la direccin del servidor de nombres. Si es satisfactorio, entonces este funciona y es accesible. Si el archivo /etc/resolv.conf existe pero vaco, se debe eliminar e intentar nuevamente la resolucin de nombres con un ping. Si el servidor de nombres local est funcionando, se debe verificar con el administrador de red que el daemon named est activo en el DNS con el comando lssrc s named (si se usa un AIX como servidor de nombres). Tambin se debe verificar que el host destino est correctamente identificado en la base de datos de la configuracin del DNS. Se debe verificar si se est utilizando Network Information Services (NIS) utilizando el comando ps -ef y buscando los procesos ypserv e ypbind. Utilice el comando ypwhich para mostrar el nombre de los servidores NIS que se estn utilizando. Si se resuelven todos o algunos nombres localmente, se debe verificar que en el archivo /etc/hosts estn correctamente escritos el nombre del host destino y su direccin IP. La resolucin de nombres funciona si se puede traducir el nombre del host a direccin IP y viceversa.

5.2.4 Anlisis de un problema de ruteo


Si no es posible realizar un ping por nombre de host o direccin IP, entonces se est frente a un problema de ruteo. Primero se deben verificar las tablas de ruteo: Utilice el comando netstat -rn para mostrar el contenido de la tabla de ruteo local utilizando direcciones IP Verifique la mscara de red y asegrese que es correcta (al respecto se debe consultar al Pgina 194 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

administrador de la red). Si hay una ruta por defecto, intente hacerle un ping. Si hay ms de una interfase de red, intente determinar si todas las interfases funcionan bien. Si el ping al gateway por defecto no responde, puede ser que est apagado o la conexin a la red local no funcione. Intente hacer un ping a todos los otros gateways listados en la tabla de ruteo para ver si alguna porcin de la red funciona:
# netstat -rn Routing tables Destination

Gateway

Flags

Refs

Use 1656 4642 424 0 0

If tr0 tr0 lo0 en0

PMTU -

Exp -

Groups

Route Tree for Protocol Family 2 (Internet): default 9.185.112.254 UG 1 9.185.112/23 9.185.113.7 U 26 127/8 127.0.0.1 U 5 192.168.1/24 192.168.1.10 U 0 Route Tree for Protocol Family 24 (Internet v6): ::1 ::1 UH 0 #

lo0 16896

Si el ping no responde para ningn host o router, se debe intentar un ping a la interfase loopback local (lo0) con el siguiente comando:
ping localhost

Si el ping es satisfactorio entonces el problema est en el adaptador, en el hardware de la red o es un problema de ruteo. Si el ping no es satisfactorio, es necesario: Asegurarse que el proceso inetd est activo utilizando el comando lssrc -g tcpip. Si no est activo, se debe iniciar con los comandos startsrc -s inetd o startsrc -g tcpip. Verifique el estado de la interfase loopback (lo0) con el comando netstat -i. Si la salida muestra lo0*, verifique que en el archivo /etc/hosts no se encuentre comentada la siguiente lnea:
127.0.0.1 loopback localhost # loopback (lo0) name/address

Un asterisco (*) junto al nombre del la interfase en la salida del comando netstat indica que la interfase est desactivada. Utilice el siguiente comando para reiniciar la interfase lo0:
# ifconfig lo0 inet 127.0.0.1 up

5.2.5 Ruteo esttico o dinmico


Est utilizando ruteo dinmico o esttico? Se est utilizando ruteo dinmico si al ejecutar el comando ps -ef si los programas gated o routed se encuentran corriendo. En el ruteo dinmico, el programa gated se ejecuta en un servidor que publica informacin de ruteo. El programa routed se ejecuta en clientes. Este escucha las publicaciones y actualiza la informacin de ruteo en el cliente. Si se est utilizando ruteo dinmico, se debe verificar que el gateway est listado correctamente en las tablas de ruteo del kernel, ejecutando el comando netstat -r. Pgina 195 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Si se est utilizando ruteo dinmico con el daemon routed: Si el routed no puede identificar la ruta a travs de preguntas, revise el archivo /etc/gateways para verificar que una ruta al host destino est definida y que el host destino est ejecutando el RIP (Routing Information Protocol). . Asegrese que los gateways responsables de enviar los paquetes al host destino se encuentren funcionando y ejecutando el RIP (routed o gated activo). De lo contrario, ser necesario definir una ruta esttica. Ejecute el daemon routed utilizando la opcin de depuracin para registrar en el log informaciones como por ejemplo los paquetes inservibles recibidos. Invoque al daemon utilizando el siguiente comando:
# startsrc -s routed -a "-d"

Ejecute el daemon routed utilizando el flag -t, que provoca que todos los paquetes enviados o recibidos sean escritos en la standard output. Cuando routed se ejecuta en este modo, permanece bajo el control de la terminal donde se inici. Por lo tanto, una interrupcin desde la terminal que lo controla, mata el daemon.

Si se est utilizando ruteo dinmico con el daemon gated: Se debe verificar que el archivo /etc/gated.conf est configurado correctamente y que se estn ejecutando los protocolos correctos. Debe asegurarse que el gateway en la red de origen est utilizando el mismo protocolo que el gateway en la red de destino. Debe asegurarse que la mquina desde la cual se intenta iniciar la comunicacin tiene una ruta de regreso a s misma. Se debe verificar que los nombres de los gateways en el archivo gated.conf correspondan a los nombres de los gateways listados en el archivo /etc/networks.

Si se estn utilizando los protocolos RIP o HELLO, y las rutas al destino no pueden identificarse a travs de consultas de ruteo, se debe revisar el archivo gated.conf para verificar que una ruta al host de destino est definida. Se deben configurar rutas estticas bajo alguna de las siguientes condiciones: Que el host de destino no est ejecutando el mismo protocolo que el host de origen, por lo que no pueden intercambiar informacin de ruteo. Que el host debe ser alcanzado por un gateway distante (un gateway que est en un sistema autnomo diferente al del host de origen). El RIP puede usarse slo contra hosts del mismo sistema autnomo. Si se est utilizando ruteo dinmico, no se deben agregar rutas estticas a la tabla de ruteo utilizando el comando route. Se debe consultar la informacin sobre gated en AIX Version 4 Files Reference, para ver cmo modificar el archivo gated.conf si se quieren agregar rutas estticas. Se debe tener en cuenta que el AIX a partir de la Versin 4.3.2 ejecuta el gated Versin 3.5.9. La sintaxis del archivo gated.conf ha cambiado levemente desde las primeras versiones. Para utilizar la sintaxis correcta se debe leer la documentacin del gated.conf o utilizar el archivo de muestra que es generado en el directorio /usr/samples/tcpip.

Pgina 196 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Como ltimo recurso, se debe limpiar (flush) la tabla de ruteo utilizando el comando route -f, lo que provoca que todas las rutas sean eliminadas y eventualmente remplazadas por los daemons de ruteo. Este debe realizarse en casos excepcionales, ya que cualquier conexin de red que funcionaba, estar temporalmente desactivada una vez que las rutas sean removidas. Cuando el flush se lleva a cabo, se debe tener especial cuidado de no interrumpir la actividad de otros usuarios. Si no se est utilizando ruteo dinmico, probablemente se est utilizando el ruteo esttico por defecto, el que puede tener configuradas algunas rutas directas, pero todas las otras rutas son direccionadas a la mquina gateway que maneja el envo de datos. En este caso, se pueden agregar y borrar rutas manualmente. Si hay rutas en la tabla de ruteo que son obviamente errneas, se deben eliminar con el comando route de la siguiente manera:
route delete <red destino> <direccin de la ruta>

Las rutas pueden ser agregadas de la misma manera:


route add net <red destino> <direccin de la ruta>

Por ejemplo, para agregar una ruta por defecto:


# route add default 129.35.128.1

Para eliminar una ruta por defecto:


# route delete net 9.3.199 9.3.189.45

5.2.6 Problemas con las interfases de red


Si an no se pueden establecer comunicaciones, se debe analizar los problemas que puedan tener las interfases de red.

5.2.6.1 Anlisis genrico de interfases Esta seccin se refiere a todos los tipos de interfases TCP/IP y los pasos a seguir antes de consultar las secciones especficas de cada tipo de interfase. Si la resolucin de nombres no funciona y el ping no responde en ninguna direccin de la tabla de ruteo, la interfase puede ser la culpable. El primer paso debe ser verificar el tipo y estado de adaptadores instalados utilizando los comandos lsdev -Cc adapter y lsdev -Cc if. Si todos los adaptadores e interfases utilizados son listados y disponibles, utilice el comando netstat -i buscando en la salida Ierrs (input errors o errores de entrada), Oerrs (output errors o errores de salida), y Coll (collisions o colisiones). Tambin se deben verificar los Ipkts y Opkts (paquetes de entrada y salida) para verificar si hubo trfico de red satisfactorio desde el ltimo reinicio del sistema. Por ejemplo:
# netstat -in Name Mtu Network Address Ipkts lo0 16896 link#1 2107 0 lo0 16896 127 127.0.0.1 2107 lo0 16896 ::1 2107 en0* 1500 link#2 2.60.8c.2e.e1.c9 0 0 en0* 1500 192.168.1 192.168.1.10 0 tr0 1492 link#3 10.0.5a.a8.70.67 1102168 0 tr0 1492 9.185.112 9.185.113.7 1102168 at0 9180 link#4 8.0.5a.75.20.f6 2788 0 at0 9180 192.168.84 192.15.15.2 2788 Ierrs Opkts 2109 0 0 2109 0 2109 9 0 0 9 84137 406 0 84137 2661 0 0 2661 Oerrs 0 0 0 0 0 0 406 0 0 Coll 0 0 0 0 0

Pgina 197 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Se debe verificar que todas las interfases listadas tengan direcciones de red nicas, y si es as, se debe utilizar el comando ifconfig para verificar el estado de todas las interfases que tengan un asterisco junto a su nombre. En el ejemplo anterior, el comando ifconfig en0 mostrar en0 con estado down. Tambin se debe verificar el estado de la interfase con el comando ifconfig <interfase>, y si aparece en estado down, hacer un detach, luego activarla y verificar el estado nuevamente, como se muestra en el siguiente ejemplo:
# ifconfig en0 en0: flags=e080862<BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT> inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255 # ifconfig en0 detach # ifconfig en0 inet 192.168.1.10 up # ifconfig en0 en0: flags=e080863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT> inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255

Si la interfase muestra las palabras UP y RUNNING, intente hacer un ping a la interfase nuevamente. Si funciona bien, intente hacer un ping a otra direccin en la misma sub red. Si el ping falla, significa que es un problema de red externo. Si la interfase no muestra las palabras UP y RUNNING, o el ping a la interfase falla, ser necesario ejecutar los diagnsticos contra el adaptador para verificar que funciona bien antes de proceder. Adems, se debe verificar que los parmetros del adaptador estn configurados de acuerdo a la red y que todos los cables tengan los terminadores adecuados y se encuentren bien conectados al sistema y a la red.

5.2.6.2 Problemas de interfase ethernet Algunos adaptadores ethernet pueden ser usados con el transceiver (transmisor-receptor) que se encuentra integrado a la tarjeta o un transceiver externo. Las tarjetas riser de los adaptadores ethernet que se encuentran en algunas mquinas MCA (marcadas con la sigla 2-8), tienen jumpers para especificar que interfase fsica de la tarjeta ser utilizada. Verifique que los jumpers estn correctamente configurados (para obtener instrucciones se debe consultar el manual del adaptador). El resto simplemente es verificar que el tipo de conector sea configurado correctamente. Para esto se debe verificar que se est usando el tipo de conector apropiado (fino es BNC; grueso es DIX). Si hace falta cambiar el tipo de conector, se puede utilizar el men rpido del Administrador del sistema basado en Web, wsm devices, o el men rpido de SMIT, smit chgenet, para configurar el campo Apply Change to Database Only. (El campo debe ser marcado en el Administrador del sistema basado en Web o configurado en yes en SMIT.) Reinicie la mquina para aplicar los cambios.
Nota

Si un sistema microchannel con una red Ethernet previamente operativa falla despus del reinicio, se debe verificar el tipo de conector utilizando SMIT como se detalla ms arriba. 5.2.6.3 Problemas de interfase token-ring Si no es posible la comunicacin con alguna de las maquinas en la red, an despus de inicializar la interfase, las direcciones son correctamente especificadas, y la tarjeta de red fue verificada satisfactoriamente, entonces se debe realizar lo siguiente: Se debe verificar que los hosts con los que no es posible la comunicacin estn en un anillo diferente. Si es as, utilice el men rpido del Administrador del sistema basado en Pgina 198 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Web, wsm devices, o el men rpido de SMIT, smit chinet, para verificar el campo Confine BROADCAST to Local Token-Ring. El campo no debe estar marcado en el Administrador basado en Web, y debe estar configurado en no en SMIT. Se debe verificar si el adaptador token-ring est configurado para funcionar a la velocidad correcta del anillo. Si est configurado incorrectamente, se debe modificar el atributo de la velocidad del anillo del adaptador. Cuando TCP/IP es reiniciado, el adaptador tokenring tendr la misma velocidad que el resto de la red.
Nota

Si una mquina funciona con la velocidad de anillo equivocada provocar problemas a todas las mquinas en el mismo anillo.

5.2.6.4 Problemas con interfases ATM o ATMLE Si se presentan problemas de comunicacin con algn dispositivo de red a travs de una interfase ATM: Verifique en las interfases la presencia de la emulacin ATM LAN y las interfases IP clsicas con el comando netstat -in. Si ambas estn configuradas y son necesarias, se debe verificar que cada interfase configurada tenga una nica direccin IP. Un problema comn es que los usuarios configuren la interfase at0 y las interfases en0 o tr0 con la misma direccin. Si se est utilizando un switch ATM, se debe verificar que haya una apropiada conexin con el switch (normalmente indicada por la luz de un puerto del switch). Para identificar problemas en los cables, se deben buscar fallas de cableado en el log de errores con el comando errpt |grep atm. Si los conectores de los cables de fibra no estn sellados o conectados con un protector plstico, intente invertir los conectores en una de las puntas. Verifique la configuracin del switch (si se est utilizando uno) con el administrador del switch dado que gran variedad de problemas ocurren cuando el switch est mal configurado. Asegrese que el ltimo fileset PTF para ATM y ATMLE est instalado en el cliente RS/6000, ya que muchos problemas de ping del switch son defectos y pueden ser solucionados levantando el nivel de los filesets con los ltimos niveles de PTF. Los filesets son: el controlador de dispositivo ATM, el controlador de dispositivo ATMLE LAN y los filesets comunes de ATM.

Pasos para depurar un problema de emulacin ATM LAN

Si no es posible hacer un ping al switch o a un host ATMLE local, ejecute los comandos entstat d entx o tokstat -d tokx. Estos comandos verifican si la interfase ATMLE fue registrada con el switch ATM y cules Emulated LAN Name (ELAN) y MAC Address estn siendo utilizados. En la seccin General Statistics de las salidas de los comandos entstat o tokstat, se debe verificar el campo Driver Flags para una correcta operacin: El campo Driver Flags debe ser similar al siguiente:
Driver Flags: Up Broadcast Running Simplex AlternateAddress 64BitSupport

Si no estn los flags Up o Running, entonces no hay contacto con el switch ATM. Si el flag Limbo est presente, significa que el cliente perdi el contacto con uno o ms servidores ATMLE y est intentando reconectarse. Pgina 199 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Si el flag Dead est presente, indica que ocurri una falla a nivel hardware, y el cliente ATMLE no se encuentra operacional. Verifique el log de errores para obtener mensajes de error adicionales. Los siguientes ejemplos muestran las salidas del comando entstat tanto para una falla en el registrado como para un registro satisfactorio en el switch. El siguiente ejemplo es la salida del comando entstat -d ent0 con mensajes de error provocados por el cliente ATMLE RS/6000 al fallar el registro en el switch ATM:
ATM LAN Emulation Specific Statistics: -------------------------------------Emulated LAN Name: ZTrans_Lab_Eth Local ATM Device Name: atm0 Local LAN MAC Address: 08.00.5a.99.89.c4 Local ATM Address: 47.00.91.81.00.00.00.00.00.04.15.00.00.40.00.00.03.75.43.00 Auto Config With LECS: Yes LECS ATM Address: 00.00.00.11.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00 LES ATM Address: 00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00 General Errors: 287 Address Deregistrations: 0 Control Timeout (sec): 120 LE_ARP Rsp Timeout (sec): 1 Max Unknown Frame Count: 1 Flush Timeout (sec): 4 Max Unknown Frame Time (sec): 1 Path Switch Delay (sec): 6 VCC Activity Timeout (sec): 1200 VCC Avg Rate (Kbps): 25600

Las siguientes direcciones ATM deben ser listadas: Direccin ATM local (Local ATM Address) del cliente ATMLE RS/6000. Desde el byte 14 hasta el 19 contiene la MAC address que fue ingresada a travs de SMIT. La Lan Emulation Configuration Server (LECS) ATM Address si se est utilizando Auto Config. Esta contendr tanto la direccin ATM con un prefijo del switch diferente (desde el byte 1 al 13), o puede contener la siguiente direccin ATM universal definida por el Forum ATM:
47.00.79.00.00.00.00.00.00.00.00.00.00.00.A0.3E.00.00.01.00

La Lan Emulation Server (LES) ATM Address. El prefijo de trece bytes (desde el byte 1 al 13) debe coincidir con la direccin ATM local que es asignada al RS/6000 Lan Emulation Client (LEC). Si la Local ATM Address y/o la LES ATM Address contienen en su mayor parte ceros, el registro en el switch ATM ha fallado como en el ejemplo del entstat anterior. La falla al registrar puede ser provocada por las siguientes causas: La versin UNI del adaptador ATM no coincide con la del switch. El tamao PDU del adaptador ATM es diferente al del switch. La interfase RS/6000 que conecta con el switch ATM est daada. La LES/LECS ATM Address es falsa o ingresada incorrectamente, o si fue usada la direccin universal (el campo de la direccin ATM est en blanco), ya que el switch ATM no soporta la direccin universal. El Emulated LAN Name no es reconocido en el switch ATM o no se ingres el Emulated LAN Name en el men de SMIT Add ATM LE Client, y el switch lo est esperando. El siguiente es un ejemplo de la salida del comando entstat -d ent0 como resultado de un registro satisfactorio del cliente RS/6000 ATMLE en el switch ATM:
ATM LAN Emulation Specific Statistics: --------------------------------------

Pgina 200 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Emulated LAN Name: ZTrans_Lab_Eth Local ATM Device Name: atm0 Local LAN MAC Address: e0.00.5a.99.89.c4 Local ATM Address: 47.00.05.80.ff.e1.00.00.00.f2.0f.28.f7.08.00.5a.99.89.c4.00 Auto Config With LECS: Yes LECS ATM Address: 47.00.79.00.00.00.00.00.00.00.00.00.00.00.a0.3e.00.00.01.00 LES ATM Address: 47.00.05.80.ff.e1.00.00.00.f2.0f.28.f7.00.20.48.0f.28.f7.e0

Si el cliente ATMLE se registra, pero falla al hacer un ping: Se debe verificar que el nombre ELAN que es listado por los comandos entstat o tokstat coincida con la direccin de red correcta. Este problema puede ocurrir si el nombre ELAN es reconocido por el switch ATM que permite que el cliente se registre, pero el nombre es asignado a una sub red diferente. Los nombres ELAN son listados en los LECS/LES dependiendo cmo implementa el switch ATM la configuracin ATMLE. Si hay otro cliente ATLML en la misma sub red, mediante un ping se debe verificar si el nombre ELAN es diferente al del cliente ATMLE problemtico. Se deben verificar en la tabla ARP las direcciones IP remotas y la MAC address. Intente hacer un ping al puerto del switch en vez de hacerlo al cliente ATMLE. Si responde, el switch puede tener algn problema. Verifique que el adaptador ATM y el controlador de dispositivo estn funcionando de la siguiente manera:
# atmstat -d atm0 > /tmp/atmstat.out

Espere 10 segundos, y ejecute el comando nuevamente, direccionando la salida al mismo archivo:


# atmstat -d atm0 >> /tmp/atmstat.out

Verifique en el archivo /tmp/atmstat.out los siguientes parmetros bajo la columna Receive Statistics: Packets received y Cells received Estos dos parmetros deben mostrar un incremento en el segundo atmstat, lo que implicara que el adaptador y el manejador de dispositivo estn funcionando. Si no se verifica un incremento en estos parmetros significa que el adaptador no puede recibir cells ATM. Esto puede deberse a que el adaptador y/o el manejador de dispositivo estn fallando. Si es posible, se debe apagar y reiniciar el servidor, para intentar corregir la falla.

Pgina 201 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Pasos para depurar un problema de IP clsico de ATM

Los pasos para analizar un problema IP clsico dependen si la conexin es Permanent Virtual Circuit (PVC) o Switched Virtual Circuit (SVC). Para conexiones PVC, se debe verificar que se est utilizando el par Virtual Path Indicator (VPI):Virtual Channel Indicator (VCI), VPI:VCI, correcto, con el men rpido smit lsatmpvc. Para conexiones SVC, se debe verificar que la direccin del servidor ARP est ingresada correctamente para el cliente ARP. Los tres ejemplos siguientes del comando arp -t atm a muestran tpicas fallas de registro de un servidor ARP y la salida de un registro satisfactorio. La primera lnea en la salida del arp es la direccin IP del at0 local y es una direccin ATM de 20 bytes. La direccin IP debe corresponder con la at0 y la direccin ATM debe contener la MAC address del atm0 (o atmx) desde el byte 14 al 19. Si la MAC address, la direccin ATM completa, o la direccin IP son ceros o incorrectas, el registro con el switch no ser posible. Verifique la configuracin de la at0 con el men rpido smit chinet y asegrese que la direccin ATM no est ingresada incorrectamente. La segunda entrada en la salida del arp es la direccin IP y la direccin ATM del servidor ARP. Ejemplo 1: El cliente ATM no se registra con el switch.
# arp -t atm -a at0(198.179.228.31) 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IP Addr VPI:VCI Handle ATM Address ?(198.179.228.6) N/A N/A 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 #

Las causas posibles de una falla al registrar son: hardware, direccin ATM mal ingresada o errnea, o la configuracin del switch. Ejemplo 2: El cliente ATM puede registrarse con el switch, pero no puede contactar al servidor ARP.
# arp -t atm -a at0(146.146.75.239) 39.9.85.11.11.11.11.11.11.11.11.1.1.0.4.ac.ad.28.6a.0 IP Addr VPI:VCI Handle ATM Address ?(0.0.0.0) N/A N/A 39.9.85.11.11.11.11.11.11.11.11.1.1.0.20.35.99.7.33.0 #

Las causas posibles de no poder contactar al servidor ARP son: versin UNI incorrecta o servidor ARP que no reconoce el auto-detect, el servidor ARP cado o con problemas, o tamaos diferentes de PDU. Ejemplo 3: El cliente ATM pude registrarse con el switch e hizo contacto con el servidor ARP.
# arp -t atm -a at0(9.3.35.157) 47.0.5.80.ff.e1.0.0.0.f2.f.28.f7.8.0.5a.99.89.c4.0 IP Addr VPI:VCI Handle ATM Address flute.austin.ibm.com(9.3.35.150) 0:41 3 47.0.5.80.ff.e1.0.0.0.f2.f.28.f7.0.20.48.f.28.f7.0 horn.austin.ibm.com(9.3.35.154) 0:43 4 47.0.5.80.ff.e1.0.0.0.f2.f.28.f7.8.0.5a.99.88.cc.0

Si se obtiene una salida similar a la del ejemplo 3, intente en un Puerto diferente en el servidor ARP o en el switch ATM (verifique el LED en el puerto); tambin debe verificar la versin UNI y el Pgina 202 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

tamao de PDU utilizando smit chg_atm para asegurarse que correspondan con los del switch. Si el host remoto puede hacer un ping al cliente ATM RS/6000 a travs del servidor ARP, intente agregar manualmente la entrada para el cliente ARP remoto en la tabla ARP como se muestra debajo. Para clientes SVC:
arp -t atm -s svc <20 byte atm address of remote host>

Si la salida del comando arp en el cliente ATM contina mostrando que falla el registro o que no hay contacto con el servidor ARP, ejecute el comando atmstat de la siguiente manera para verificar el adaptador y el manejador de dispositivo:
# atmstat -d atm0 > /tmp/atmstat.out

Espere 10 segundos, y ejecute el comando nuevamente, direccionando la salida al mismo archivo:


# atmstat -d atm0 >> /tmp/atmstat.out

Verifique en el archivo /tmp/atmstat.out los siguientes parmetros bajo la columna Receive


Statistics:

Packets received y Cells received Estos dos parmetros deben mostrar un incremento en el segundo atmstat, lo que implicara que el adaptador y el manejador de dispositivo estn funcionando. Si no se verifica un incremento en estos parmetros significa que el adaptador no puede recibir cells ATM. Esto puede deberse a que el adaptador y/o el manejador de dispositivo estn fallando. Si es posible, se debe apagar y reiniciar el servidor, para intentar corregir la falla. Si el problema no puede ser determinado en este punto, ser necesario escalar el problema o llamar al centro de soporte.

5.2.6.5 Problemas con interfases X.25 Esta seccin contiene informacin til para resolver problemas especficos de interfases X.25 TCP/IP, asumiendo que fueron realizados los procedimientos de las secciones Anlisis genrico de Interfases y Anlisis de un problema de ruteo. Para simplificar la determinacin de problemas de X.25 TCP/IP, se puede encontrar til desactivar toda resolucin de nombres externa y suprimir todos los gateways por defecto. Esto evitar cualquier discrepancia que pueda haber con el /etc/hosts. Se debe tener en cuenta que el /etc/hosts siempre es utilizado por el comando x25ip cuando es ejecutado por el /etc/rc.net durante la inicializacin del sistema, an si hay un servidor de nombres. Si no funciona un ping a un host X.25 remoto, se deben seguir los siguientes pasos: 1. Utilice el comando lsx25 para ver si la interfase TCP/IP X.25 (xs0) y el puerto X.25 (sx25a0) estn configurados y disponibles. Si no es as, ser necesario configurarlos. Si el puerto o la interfase no pueden ser configurados, se debe utilizar el Redbook AIXLink/X.25 LPP Cookbook, SG24-4475, en la seccin X.25 Problem Determination para obtener ms informacin sobre la depuracin de problemas de X.25 LPP. 2. Verifique con smit chinetsx25 que la entrada para el host remoto en la tabla de traduccin IP-to-NUA es correcta, luego haga la misma verificacin en el host remoto. 3. Refresque la tabla de traduccin de X.25/IP utilizando el comando x25ip sin argumentos, luego ejecute el comando ping nuevamente. Si el ping no es satisfactorio, ser necesario asegurarse que existan rutas para la interfase X.25 (por ejemplo, xs0). Si las rutas parecen correctas, ser necesario monitorear el flujo del nivel de Pgina 203 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

paquetes utilizando el comando x25mon de la siguiente manera:


# x25mon -f -p -n sx25a0

En otra ventana o sesin, hacer un ping al host remoto. Si no se obtienen los resultados esperados, hay cuatro posibles escenarios: 1. No hay mensajes de error, nada transmitido. Hay un gateway que el ping utiliza para enviar paquetes. Verifique con netstat -r (no con ifconfig) que la conexin X.25 est activa. Examine nuevamente las rutas estticas y, si es necesario, elimine y remplace las rutas X.25 que tengan un flag G en la salida del netstat. 2. Mensaje de error, nada transmitido. Si el mensaje de error es:
sendto: Network is unreachable o sendto: No route for this host

entonces hay un problema con la definicin adjunta o con la ruta. Si el mensaje de error es:
ping: sendto: Can't assign requested address Sendto: The socket name is not available

entonces hay un problema con la tabla de traduccin x25ip. Se puede modificar con smit chinetsx25 o agregar una entrada correcta si es necesario con smit mksx25. 3. No hay mensaje de error, el trace muestra intentos para establecer un circuito virtual. Si se ven en el trace una serie de paquetes de llamados mostrando intentos fallidos para abrir un circuito virtual, entonces hay un problema del protocolo X.25. Se debe consultar la documentacin de X.25 LPP o el Redbook AIXLink/X.25 LPP Cookbook, SG24-4475, en la seccin X.25 Protocol Problems. Si el llamado entrante es rechazado por el sistema remoto con el diagnstico 241, calling address missing, la direccin llamada no est en la tabla de traduccin. Se debe agregar y utilizar x25ip en el host remoto para regenerarla. 4. No hay mensaje de error, datos transmitidos pero ninguno recibido. En este caso, un circuito virtual es establecido y paquetes de datos son enviados al host remoto, pero el host remoto no contesta. Los paquetes son transmitidos correctamente al host remoto, pero la direccin IP del host remoto que ellos llevan no coincide con la direccin IP actual del host remoto. Cambie la direccin IP del host remoto de manera que sea igual a la que est en el host local.

5.3 Problemas de TCP/IP ms comunes


Las siguientes secciones contienen algunos de los problemas ms comunes que ocurren con TCP/IP y otros protocolos relacionados.

5.3.1 LED 581


Durante el reinicio de la mquina, el LED 581 es mostrado mientras el Configuration Manager configura TCP/IP y ejecuta el /etc/rc.net para configurar adaptadores, interfases y el nombre del host. Pgina 204 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El problema puede ser provocado por otro sistema o la red, y ocurre porque el TCP/IP espera respuestas sobre algunas interfases (token ring, por ejemplo). Si no hay respuestas, eventualmente espera un tiempo determinado y marca la interfase como desactivada. Este tiempo de espera vara y est comprendido entre tres minutos hasta un perodo indefinido. El siguiente procedimiento de determinacin de problemas es utilizado para verificar que los mtodos y procedimientos ejecutados por el /etc/rc.net estn provocando la detencin en el LED 581: 1. Reinicie la mquina en Modo Servicio. 2. Mueva el archivo /etc/rc.net:
mv /etc/rc.net /etc/rc.net.save

3. Reinicie en Modo Normal para verificar que el sistema no se detenga en el LED 581 y permita el log in.
Nota

En los pasos anteriores se asume que no han sido configurados DNS o NIS. Si se determina que algn procedimiento en el /etc/rc.net est provocando la detencin, entonces el sistema continu pasando el LED 581 luego de seguir los pasos anteriores, y el problema puede ser alguno de los siguientes: Problemas de hardware ethernet o token-ring Ejecute diagnsticos y verifique el log de errores. Ruta por defecto inexistente o incorrecta La red no es accesible Verifique que los gateways, servidores de nombres, y/o masters NIS estn activos y disponibles. Direcciones IP o mscaras errneas Utilice los comandos iptrace e ipreport para la determinacin de problemas. ODM corrupta Remueva y regenere los dispositivos de red Resolucin de direccin IP o nombre prematura Tanto el named, ypbind/ypserv, o /etc/hosts necesita alguna correccin. Espacios de ms al final de las lneas en los archivos de configuracin. Utilice el editor vi con el subcomando set list para verificar los archivos, como el archivo /etc/filesystems. LPPs daados Reinstale el LPP. Un caso especfico de detencin en el LED 581 ocurre cuando ATMLE es utilizado con un DNS. Si se est experimentando este problema, se puede solucionar el problema agregando la lnea host=local,bind en el archivo /etc/netsvc.conf o agregando las siguientes lneas en el archivo /etc/rc.net de la siguiente manera:
################################################################## # Part III - Miscellaneous Commands. ################################################################## # Set the hostid and uname to `hostname`, where hostname has been # set via ODM in Part I, or directly in Part II. # (Note it is not required that hostname, hostid and uname all be # the same). export NSORDER="local" <<===========LINEA NUEVA /usr/sbin/hostid `hostname` >>$LOGFILE 2>&1 /bin/uname -S`hostname|sed 's/\..*$//'` >>$LOGFILE 2>&1 unset NSORDER <<===========LINEA NUEVA ##################################################################

Pgina 205 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

5.3.2 Problemas con telnet


Si el ping entre el sistema origen y el destino funciona correctamente en ambos sentidos, pero no as el telnet o rlogin, se deben seguir los siguientes pasos: 1. Asegrese que la resolucin de nombres funciona tanto en el cliente como en el servidor de telnet, utilizando el comando host de la siguiente manera:
# host <telnet server system host name> # host <IP address returned from previous command>

Si ambos comandos devuelven una salida idntica, ejecute los comandos desde el servidor al cliente. Si hay discrepancias en el par de salidas, el problema es la resolucin de nombres. 2. Verifique que exista la siguiente lnea en el archivo /etc/inetd.conf:
telnet stream tcp6 nowait root /usr/sbin/telnetd telnetd -a Nota

La palabra tcp6 en la lnea del archivo /etc/inetd.conf aparece en AIX V4.3.0 y superiores. 3. Verifique que exista la siguiente lnea en el archivo /etc/services:
telnet 23/tcp

4. Verifique que inetd est funcionando de la siguiente manera:


# ps -ef | grep inetd | grep -v grep root 7746 5714 0 04:56:38 - 0:00 /usr/sbin/inetd

Si el inetd no est corriendo, se debe iniciar con el comando startsrc -s inetd. 5. Ejecute el telnet a un puerto diferente:
# telnet <hostname> chargen

Si la conexin al puerto chargen es satisfactoria, se observar una salida similar a la siguiente:


vwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ wxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ xyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` yz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a z{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab {|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc |}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd }~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde ~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl &'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm

Para finalizar el telnet utilizar la secuencia de teclas Ctrl-C.

Pgina 206 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

5.3.3 Retrasos del login en sistemas AIX 4.3.x


Si la red est utilizando un DNS que funciona sobre AIX 4.2.1 o anterior (o no es un sistema AIX), y se experimentan retrasos del login de alrededor de dos minutos cuando se establecen sesiones remotas, por ejemplo telnet o ftp, desde un sistema AIX 4.3.x, el problema es con la resolucin de nombres. AIX 4.3.2 intenta utilizar IPv6 por defecto para la resolucin de nombres; por lo tanto, si se experimenta el problema mencionado, ser necesario seleccionar IPv4 para la bsqueda de nombres en el DNS. Esto se puede realizar de las siguientes dos maneras: Crear un archivo llamado /etc/netsvc.conf que contenga la siguiente lnea:
hosts=local,bind4

Exportar la variable de korn shell NSORDER de la siguiente manera:


export NSORDER=local,bind4

Estos ejemplos muestran simplemente el uso del parmetro bind4 para forzar el uso del protocolo IPv4, el orden de la resolucin de nombres puede variar respecto al orden utilizado en el ejemplo.

5.3.4 Problemas de DHCP (Dynamic Host Configuration Protocol)


Si los clientes no pueden obtener una direccin IP u otros parmetros de configuracin: Verifique que se haya especificado una interfase para que sea configurada. Esto se puede realizar a travs de la aplicacin de red del Administrador del Sistema basado en Web, editando el archivo /etc/dhcpcd.ini, o con el men rpido de SMIT smit dhcp. Verifique que hay un servidor en la red local o un agente repetidor configurado para llevar los requerimientos fuera de la red local. Verifique que el daemon dhcpcd est corriendo. Si no es as, utilice el comando startsrc -s dhcpcd. Si el daemon dhcpsd no est ejecutndose: Este error es comn cuando el bootp es ejecutado bajo inetd; bootpd y dhcpsd no puede ejecutarse al mismo tiempo. El proceso dhcpsd utiliza el mismo puerto de servicio que el bootpd; sin embargo, el dhcpsd no es un sub servidor de inetd y es iniciado con el archivo /etc/rc.tcpip en lugar del /etc/inetd.conf. La lnea del bootps en el /etc/inetd.conf debe ser comentada con #, y el inetd refrescado con el siguiente comando:
refresh -s inetd

La lnea del bootps en el /etc/services permanece tal como est:


bootps 67/udp # bootp server port

5.3.5 Las teclas de funcin de X.25 no funcionan correctamente


Cuando se utiliza telnet o rlogin sobre X.25, el sistema remoto no siempre responde correctamente al utilizar las teclas de funcin, especialmente si se utiliza Esc-1 en lugar de F1. La variable de ambiente ESCDELAY controla el tiempo de espera despus del cual la terminal que controla las aplicaciones considerar la tecla Esc separada del posterior 1. La variable ESCDELAY slo funciona si la aplicacin est escrita para aceptar secuencias con la tecla Esc. Cuando se trabaja sobre X.25, la tecla Esc es colocada por IP en un paquete de datos Pgina 207 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

separado de la siguiente tecla. El espacio entre los dos paquetes de datos en el sistema receptor es normalmente mayor que el tiempo de espera por defecto. El valor por defecto de ESCDELAY (o si no fue configurada) es 500. Para ver si esta es la razn por la que las teclas de funcin no son reconocidas, configure ESCDELAY con un valor muy alto, de la siguiente manera: 1. Inserte la siguiente lnea en el archivo /etc/environment:
ESCDELAY=5000

2. Finalice la sesin completamente e ingrese nuevamente al sistema para asegurarse que el nuevo valor de la variable ESCDELAY est correctamente asignado. 3. Verifquelo de la siguiente manera:
echo $ESCDELAY

Despus de concluida la verificacin, se debe configurar un valor ms razonable (entre 1000 y 2000) o, si el problema no es resuelto, eliminar completamente la lnea del archivo /etc/environment. Si el problema no es resuelto aumentando el valor del parmetro ESCDELAY, entonces la aplicacin debe ser modificada para que espere una secuencia de escape completa. Por ejemplo, el SMIT de AIX est escrito para que soporte las secuencias de escape y funciona en una red lenta sin utilizar ESCDELAY porque fue escrito para que espere indefinidamente las secuencias de escape. De esta manera, aunque la salida del comando iptrace muestre claramente la separacin de la tecla Esc y el resto de la secuencia del escape, las combinaciones con la tecla Escape siempre funcionarn correctamente en SMIT.

5.4 Asuntos de configuracin de TCP/IP


En esta seccin se mencionan algunos temas relativos a la configuracin que pueden tener efecto en el rendimiento de red.

5.4.1 Maximum Transmission Unit (MTU)


Cada dispositivo tiene un MTU (unidad mxima de transmisin) y no podr transmitir paquetes ms grandes que ste sin fragmentarlos. Por ejemplo: Si los paquetes son ms grandes que el MTU, sern fragmentados antes de ser enviados. Los paquetes que atraviesan un router deben ser fragmentados para la red destino. Las mquinas con diferentes tamaos MTU pueden tener dificultades para comunicarse. Si el trfico es en su mayor parte local, utilice el MTU ms grande soportado por el tipo de LAN. Esto minimiza la fragmentacin de paquetes, que es costosa en trminos de rendimiento. El tamao mayor para Ethernet es 1500 bytes. TCP establece un tamao mximo de segmento (Maximum Segment Size o MSS) que los dos host aceptan durante el proceso de comunicacin. Este MSS no ser mayor al MTU ms pequeo, y por defecto es de 512 bytes (el valor tcp_mssdflt pude verse en la opciones de red).

5.4.2 Mbufs
Para verificar que haya suficiente memoria (mbufs) disponible para actividades de red, utilice los comandos netstat -m y netstat -i: Un valor de requests for mbufs denied distinto de cero en la salida del netstat -m indica una Pgina 208 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

posible falta de memoria para red; utilice el comando no para incrementar el valor thewall. Algunas causas posibles para un valor diferente a cero en este campo son: Actividad pesada de red, paquetes rechazados. Una aplicacin de red con mucho consumo de memoria puede agotar el suministro de mbufs. Es necesario asignar ms memoria para mbufs o hace falta ms memoria en el sistema. Verifique en la salida del comando netstat -i la columna Oerrs: Si el nmero en la columna Oerrs es mayor al 1 por ciento del nmero en la columna Opkts, debe ser incrementado el tamao de la cola TRANSMIT (xmt_que_size) del adaptador. Si la cantidad de Oerrs es mayor al 1 por ciento de los Ipkts, utilice el comando netstat -m para verificar un posible exceso de consumo de memoria. El parmetro thewall especifica la cantidad mxima de memoria que puede ser asignada para los buffers de red mbufs y mclusters.

5.5 Comandos para identificar un problema de TCP/IP


Los siguientes comandos son herramientas bsicas que se deben utilizar en la determinacin de problemas de TCP/IP.

5.5.1 ping
El comando ping es utilizado para investigar problemas bsicos de conectividad punto a punto, confirmando si el host remoto est conectado a la red, y si la red entre los hosts es confiable. Adicionalmente, el ping puede indicar si el nombre y la direccin IP de un host son consistentes a travs de varias mquinas. El siguiente es un ejemplo del comando ping:
ping <host name> or <address> # ping bern PING bern: (89.86.41.183): 56 data bytes 64 bytes from 89.86.41.183: icmp_seq=0 ttl=255 time=1 ms 64 bytes from 89.86.41.183: icmp_seq=1 ttl=255 time=2 ms ^C ----bern PING Statistics---4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 1/1/2 ms ping -R muestra el camino que atraviesa el paquete, se debe usar en paralelo con el comando traceroute. ping -c <n> enva n paquetes. Se puede controlar el tamao de los paquetes enviados con ping <host> <tamao>. El comando ping enva normalmente 56 bytes de datos ms el encabezamiento IP, lo que suma un

total de 64 bytes. Utilizando diferentes valores se puede determinar si hay problemas con la fragmentacin. Se deben utilizar valores apenas menores, iguales, y mayores que el tamao MTU. El comando ping utiliza mensajes ICMP para los pedidos y respuestas, que es una parte de la capa IP, en la porcin de datos de los datagramas IP. Los mensajes ICMP son usados tambin para indicar si el destino de un paquete es inalcanzable, si el paquete debe ser redireccionado a otro router (para un ruteo ms eficiente llamado redireccionamiento ICMP), y tambin puede indicar otro tipo de errores.

Pgina 209 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

5.5.2 rup
El comando rup consulta a un servidor cunto tiempo hace que est levantado. El comando rup: Utiliza por defecto la difusin de mensajes en todas las interfases. Utiliza RPC sobre UDP. El comando rup es til para encontrar si el servicio de nombres e interfases funcionan en un comando. Adems, indica cuanto tiempo hace que estn levantados y si estn ocupados. Un servidor remoto responde slo si est corriendo el daemon rstatd, que est definido en el archivo /etc/inetd.conf y es iniciado con el daemon inetd.

5.5.3 netstat
El comando netstat con varios flags es til para depurar la mayora de los problemas de red. El netstat recolecta y muestra una gran cantidad de estadsticas relativas a la red e informacin de configuracin, que incluye: Sockets activos Los muestra con el comando netstat -f <familia>. Donde familia es: inet para sockets de Internet unix para sockets Unix ns para sockets Xerox Network System El formato de la salida es especfico a cada familia. La salida por defecto (sin flags) muestra los sockets activos para todas las familias. Interfases El comando netstat -i muestra el estado y uso de todas las interfases configuradas, como muestra el siguiente ejemplo:
# netstat -i Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll lo0 16896 link#1 8114 0 8116 0 0 lo0 16896 127 loopback 8114 0 8116 0 0 lo0 16896 ::1 8114 0 8116 0 0 en0 1500 link#2 2.60.8c.2e.e1.c9 0 0 19 0 0 en0 1500 192.168.1 jumbuck 0 0 19 0 0 tr0 1492 link#3 10.0.5a.a8.70.67 3340825 0 202253 0 0 tr0 1492 9.185.112 msahanc.au.ibm.co 3340825 0 202253 0 0 sl2* 1006 link#4 0 0 0 0 0 sl2* 1006 130.130.130 130.130.130.1 0 0 0 0 0 #

Para cada interfase, netstat -i muestra: Name: Nombre de la interfase (Nombre* indica que la interfase est cada) MTU Network: direccin de la capa link (<lnea link#>) Network: red IP Address: direccin IP o nombre Ipkts, Ierrs: Paquetes de entrada y errores Opkts, Oerrs: Paquetes de salida y errores Tablas de ruteo Son mostradas con el comando netstat -r como en el siguiente ejemplo: Pgina 210 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# netstat -r Routing tables Destination Gateway Route Tree for default 9.185.112/23 127/8 130.130.130.2 192.168.1/24 Protocol Family 2 9.185.112.254 msahanc.au.ibm.co loopback 130.130.130.1 jumbuck

Flags Refs

Use

If tr0 tr0 lo0 sl2 en0

PMTU Exp Groups -

(Internet): UG 2 124847 U 29 82305 U 5 2011 UH 0 0 U 0 62 0

Route Tree for Protocol Family 24 (Internet v6): ::1 ::1 UH 0 #

lo0 16896

Es mostrado el rbol de rutas para cada protocolo. Estadsticas de protocolos El comando netstat -s muestra estadsticas de los protocolos IP, ICMP, IGMP, TCP, y UDP. Los datos presentados incluyen informacin de errores, fragmentacin, redireccionamientos, paquetes enviados y recibidos, y paquetes perdidos y descartados. Adems, muestra las conexiones TCP establecidas, los tiempos de espera, y los datagramas UDP recibidos y enviados. Para mostrar slo un protocolo, utilice netstat -p <protocolo> como muestra el siguiente ejemplo:
# netstat -p udp udp: 2507220 datagrams received 0 incomplete headers 0 bad data length fields 1 bad checksum 297 dropped due to no socket 2498325 broadcast/multicast datagrams dropped due to no socket 0 socket buffer overflows 8597 delivered 3233 datagrams output

Estadsticas de los controladores de dispositivo de adaptadores de red (device drivers) El comando netstat -v muestra las estadsticas de los controladores de dispositivo de todos los adaptadores de red instalados. Si slo se requiere la salida para un tipo de adaptador especfico, utilice los comandos stat en lugar de netstat v. Estadsticas del uso de memoria de red Con el comando netstat -m se puede ver la memoria de red utilizada. AIX V4.1 aument considerablemente la coleccin de estadsticas de uso de la memoria de red. Para disminuir la carga innecesaria del sistema, AIX V4.3.2 defini nuevamente como una opcin configurable la coleccin extendida de estadsticas de servicios de memoria de red. Por defecto, la coleccin extendida de estadsticas est desactivada. Para activarla, utilice el siguiente comando:
/usr/sbin/no -o extendednetstats=1

Para que este cambio se mantenga despus de un reinicio del sistema, se deben descomentar las siguientes lneas en el archivo /etc/rc.net:
################################################################## #if [ -f /usr/sbin/no ] ; then # /usr/sbin/no -o extendednetstats=1 >>/dev/null 2>&1 #fi

Pgina 211 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Direcciones Protocol Control Block (PCB) El comando netstat -A es utilizado para mostrar las direcciones de cualquier PCB asociado con los sockets. El flag -A es normalmente utilizado con propsitos de depuracin a bajo nivel.

5.5.4 arp
Address Resolution Protocol (ARP) mapea direcciones IP a las direcciones de hardware. Por ejemplo: Utilice el comando arp -a para mostrar el cache de transacciones ARP de la mquina local. Las direcciones IP slo tienen significado para IP. El nivel de enlace de datos de la capa de red Internet utiliza la direccin de hardware del mismo adaptador. Cada direccin de hardware es nica. Las tablas ARP traducen las direcciones IP a direcciones de hardware y viceversa. Esto funciona utilizando un mecanismo de publicacin que enva un llamado preguntando por el propietario de una direccin IP particular.

5.5.5 iptrace e ipreport


El comando iptrace rastrea todos los paquetes que salen y entran a un sistema. Por ejemplo: Este comando genera una salida detallada que puede verse utilizando el comando ipreport. Esta puede ser una herramienta sumamente til para encontrar errores de comunicacin de bajo nivel necesarios para una depuracin detallada de problemas de red. No es realmente necesaria para un uso general dado que la interpretacin de la salida requiere un conocimiento minucioso de TCP/IP. Para limitar el problema, especifique el host origen y el destino con los flags -s <origen> y -d <destino>. Los siguientes flags son tiles para reducir la cantidad de datos capturados, simplificando bastante el anlisis de la salida: -a excluye los paquetes ARP. -P <protocolo> recolecta datos slo para un protocolo especificado. -i <interfase> recolecta datos slo para una interfase especificada. El siguiente ejemplo ilustra cmo rastrear todo el trfico enviado al host columbia a travs de la interfase en0 y direcciona la salida formateada en un archivo:
# iptrace -i en0 -d columbia /tmp/trace.raw

Reproduce el problema:
# ps -ef | grep iptrace # kill <iptrace PID> # ipreport -rns /tmp/trace.raw > /tmp/trace.out

5.5.6 tcpdump

Pgina 212 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El comando tcpdump muestra detalladamente los encabezamientos de los paquetes para TCP: Permite un anlisis muy detallado, nuevamente til para una depuracin de red avanzada. Permite especificar un patrn de bsqueda para limitar la informacin mostrada. El siguiente ejemplo mostrar todos los paquetes que arriben o partan del host firefly:
# tcpdump host firefly

5.5.7 no (Network Options)


El comando no cambia o muestra las opciones de red: El comando no -a muestra los valores de todos los parmetros de red definidos en el sistema. El comando no -o permite modificar los parmetros deseados. Permite que los cambios tengan efecto inmediatamente pero los cambios slo permanecen hasta el siguiente reinicio del sistema. Por ejemplo, para cambiar el valor thewall a 64 MB, se debe utilizar la siguiente sintaxis del comando:
# no -o thewall=65536

Para mantener los cambios despus de los reinicios del sistema, los comandos no especficos deben ser aadidos al archivo /etc/rc.net de la siguiente manera:
########################################################### if [ -f /usr/sbin/no ] ; then /usr/sbin/no -o tcp_sendspace = 16384 /usr/sbin/no -o tcp_recvspace = 16384 /usr/sbin/no -o thewall=32768 fi

Los valores del sistema deben ser modificados nicamente despus de observar la informacin sobre optimizacin en la documentacin de AIX o bajo la direccin del personal de soporte.

5.5.8 Comandos stat


En lugar de utilizar el comando netstat -v, para una interfase particular se puede usar un comando stat. Estos comandos estn en el directorio /usr/sbin e incluyen los siguientes: entstat <ent#> tokstat <tok#> atmstat <at#>
Nota

Utilice el flag d obtener datos especficos del dispositivo ms detallados.

5.6 Resolucin de problemas de NIS (Network Information Services)


En esta seccin se vern las herramientas y mtodos utilizados para resolver problemas de NIS.

5.6.1 Herramientas para la resolucin de problemas de NIS

Pgina 213 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

La siguientes secciones contienen una seleccin de comandos de red que pueden ser utilizados como herramientas para la resolucin de problemas de NIS.

5.6.1.1 ping El comando ping es una herramienta de uso general utilizada para investigar problemas de conectividad punto a punto. Si el comando ping no responde o tiene tiempos de respuesta muy grandes, entonces hay un problema de conectividad de bajo nivel. Esto debe ser resuelto antes de comenzar una investigacin en el entorno NIS.

5.6.1.2 rpcinfo El comando rpcinfo es una analoga del ping, que busca los servidores RPC y su registro con el portmapper, y por lo tanto verifica que la mquina remota es capaz de responder a un requerimiento RPC. El comando rpcinfo puede ser usado para detectar: Servidores cados o que no responden debido a configuracin inadecuada o a la falla de un daemon. El nmero de versin del programa RPC es diferente entre el cliente y el servidor. Servidores RPC renegados (Servidores NIS que no tienen mapas vlidos para el dominio que atienden) Problemas relacionados con broadcast. El comando rpcinfo -p toma un nombre de host remoto y busca el portmapper en el host para todos los servicios RPC registrados: La salida del comando rpcinfo muestra el programa RPC y su versin, los protocolos soportados, los puertos IP utilizados por el servidor RPC, y el nombre del servicio RPC. Los nombres de los servicios salen del mapa NIS rpc.bynumber. Si no es impreso ningn nombre inmediatamente despus de la informacin de registro, el nmero de programa RPC no aparece en el mapa. Si faltan nombres de servicios RPC es posible que el mapa NIS rpc.bynumber est corrupto o incompleto. Cuando se trabaja diagnosticando cualquier programa relacionado con RPC, se debe verificar que el portmapper remoto est vivo y devuelva registros RPC vlidos. Si el portmapper en la mquina remota est cado o no acepta conexiones por alguna razn, el rpcinfo cancela por tiempo intentando alcanzarlo y reporta el error. Esto indica un problema de bajo nivel en la red. Si se est investigando en un entorno heterogneo y se ejecutan mltiples versiones de cada servicio RPC, es posible obtener errores de incompatibilidad en los nmeros de versin RPC. Estos problemas afectan el NIS y el booteo de clientes sin discos; esto puede ser evitado utilizando el comando rpcinfo para emular un llamado RPC y observando las respuestas del servidor. Por ejemplo, realizar un broadcast y luego observar el orden en que las respuestas son recibidas. El comando rpcinfo -b enva un requerimiento broadcast al programa RPC y versin especificados:
# rpcinfo -b ypserv 1 89.86.41.194 austin

Pgina 214 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

89.86.41.195 newyork 89.86.41.196 boston

En este ejemplo, todos los servidores NIS en la red local contestan el requerimiento broadcast del rpcinfo al procedimiento nulo del daemon ypserv. Si austin no es el servidor NIS y los clientes se vincularan a l, la red estara propensa a sufrir perodos de fallas intermitentes. Un servidor NIS renegado puede ser el primero que conteste un broadcast ypbind de servicio NIS. Su falta de informacin sobre el dominio hace que la mquina cliente sea inutilizable. Este problema lo puede causar alguna falla que saque de servicio a un host como servidor NIS (dejando vaco el mapa de directorios NIS, por ejemplo). El comando rpcinfo ayuda a determinar por qu un cliente particular no puede iniciar el servicio NIS. Si ningn host contesta a los requerimientos del comando rpcinfo, entonces el paquete de broadcast no llega a ningn servidor NIS. Si el nombre de dominio NIS y la direccin de broadcast son correctos, entonces ser necesario sobrescribir la bsqueda basada en broadcast y darle al ypbind el nombre y direccin de un servidor NIS vlido, utilizando el comando ypset. A veces, observando la lista de servidores que responden a un requerimiento, se puede intuir un problema si se detecta que uno de los servidores no debera contestar el broadcast. Como el ping, el comando rpcinfo provee una medicin de la conectividad bsica en la capa de sesin del conjunto de protocolos de red. Un ping satisfactorio a una mquina remota asegura que la red fsica funciona bien y que la direccin IP utilizada es correcta: utilizando el comando rpcinfo para realizar una prueba similar se verifica que la mquina remota es capaz de contestar un requerimiento RPC. Esto incluye la validacin de la integridad de la red y que hay un servicio RPC registrado en la otra mquina.

5.6.1.3 ypmatch Como una herramienta de diagnstico, el comando ypmatch puede ser utilizado para ver si una modificacin en un mapa ha tenido efecto y para identificar los mapas NIS que estn fuera de sincronizacin despus de que una transferencia de mapas ha sido requerida o programada. Generalmente, al crear un mapa nuevo, se fuerza el cambio en los otros servidores con el comando yppush. Para verificar la consistencia de un mapa, utilice el comando ypmatch en varios clientes y luego en el servidor. Verifique que se obtengan los mismos resultados. Si no es as, existe una inconsistencia de mapas. Intente forzar el cambio de los mapas en los servidores con el comando yppush. A menudo, los cambios en los mapas NIS no son propagados tan rpido como es deseado, an si el cambio fue forzado con el comando yppush.

5.6.1.4 ypwhich El comando ypwhich es utilizado para verificar el servidor NIS de un cliente, como se ve en el siguiente ejemplo:
# ypwhich godzilla

Si se pasa como parmetro un nombre de host, el comando ypwhich consulta cul es la vinculacin actual del host mencionado. Si el ypwhich no puede resolver la direccin IP del nombre del servidor, reporta un error como el siguiente:
# ypwhich kingkong ypwhich: can't find kingkong Nota

Una direccin IP puede ser utilizada en lugar del nombre de host. Pgina 215 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El comando ypwhich -x muestra la tabla de apodos:


stepiii $ ypwhich -x Use passwd for map passwd.byname Use group for map group.byname Use networks for map networks.byaddr Use hosts for map hosts.byaddr Use protocols for map protocols.bynumber Use services for map services.byname Use aliases for map mail.aliases Use ethers for map ethers.byname

El comando ypwhich -m examina el nombre del servidor master NIS existente en el archivo del DBM (Database Manager) de los mapas NIS:
# ypwhich -m auto.master stargate auto.src stargate rpc.bynumber stargate protocols.bynumber stargate auto.projects stargate auto.mail stargate auto.home stargate

Si se tiene conocimiento sobre datos que desaparecen de los mapas NIS, vuelque el mapa entero (incluyendo las claves) utilizando el comando makedbm -u:
stargate $ /usr/etc/yp/makedbm -u ypservers stargate lazerus delli YP_LAST_MODIFIED 0706832572 YP_MASTER_NAME stargate stargate $

La informacin del mapa master es til si se cambiaron los servidores master NIS y es necesario verificar que los mapas de los clientes fueron correctamente generados y sincronizados con el nuevo servidor. Consultando las vinculaciones de los clientes individualmente es til para depurar problemas de los clientes. Adems de proveer informacin sobre la vinculacin a servidores NIS, el comando ypwhich examina la informacin de los mapas NIS, el servidor master de un mapa, la lista de todos los mapas, y la traduccin de los apodos de un mapa.

5.6.2 Ejemplos de resolucin de problemas con NIS


Cuando se investiga un problema de red: Se debe pensar sobre las causas potenciales del problema. Se debe investigar en todas las capas de protocolos para asegurarse que no se deje de lado un posible problema de bajo nivel, que se presenta como una falla de alto nivel. Por ejemplo, si los intentos de vinculacin a un servidor NIS estn fallando: Verifique la red con el comando ping. Verifique los procesos ypserv con el comando rpcinfo. Finalmente, verifique la vinculacin a s mismo con los comandos ypset o ypwhich.

Pgina 216 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

5.6.2.1 yppush falla al crear mapas nuevos Si el comando yppush falla al agregar nuevos mapas NIS despus de que los mapas iniciales fueron transferidos a un servidor esclavo, ser necesario: 1. Crear los mapas nuevos con la opcin NOPUSH en 1.
make NOPUSH=1 <nombre_del_mapa_nuevo>

La falla al utilizar la opcin NOPUSH provocar que el comando no responda. 2. Actualice los servidores esclavos ejecutando ypxfr en cada uno. Esto se realiza si el mapa nuevo no existe en el servidor esclavo.

5.6.2.2 Los broadcast de clientes no vinculan El problema ms comn que ocurre en un nodo cliente NIS es que un comando no responda. A veces un comando parece no responder, y un mensaje como el siguiente aparece en la consola:
NIS: server not responding for domain <wigwam>. Still trying

Este error indica que el daemon ypbind en la mquina local no puede comunicarse con el daemon ypserv que sirve al dominio wigwam. Normalmente esta condicin es temporal; el mensaje desaparece cuando la mquina del servidor NIS reinicia y es levantado el daemon ypserv, o cuando disminuye la carga en el servidor NIS y en la red. Si se obtiene el mensaje server not responding for domain, puede existir una de las siguientes situaciones: El nombre de dominio en la mquina cliente NIS no est configurado o es incorrecto. Los clientes deben utilizar un nombre de dominio que los servidores NIS conozcan. La red local puede no tener un servidor NIS. En esta circunstancia, todos los clientes NIS en la red local sufrirn el mismo problema o similar. El servidor NIS no est encendido o en funcionamiento, o est sobrecargado. Si no hay un servidor de respaldo en la sub red de broadcast, todos los clientes no obtendrn respuesta a los requerimientos NIS hasta que el servidor funcione o reduzca la carga. La mascara de broadcast puede estar configurada incorrectamente. Errores al configurar la red o la mscara de broadcast pueden evitar los broadcast que el ypbind utiliza para alcanzar un servidor. Si un servidor es inaccesible debido a una falla catastrfica, ser necesario iniciar un servidor nuevo para el dominio, de manera que los clientes puedan ser ingresados con logins.

5.6.2.3 El comando ypwhich es inconsistente Cuando se utiliza el comando ypwhich repetidamente en el mismo nodo cliente, la respuesta vara

Pgina 217 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

porque el estado del servidor NIS cambia. Esto es normal. La vinculacin de los clientes NIS a los servidores NIS cambia con el tiempo en una red cargada. Cuando es posible, el sistema se estabiliza y todos los clientes obtienen de los servidores NIS tiempos de respuesta aceptables. El origen de un servicio NIS no es importante porque un servidor NIS a menudo obtiene sus servicios NIS de otro servidor NIS de la red. Es comn la inquietud cuando un servidor NIS, que es adems un cliente NIS, est vinculado a algn otro servidor. Parece intuitivo que la mquina se vincule a si misma, pero normalmente no es as. El cliente no discrimina en lo que se refiere a dnde est vinculado el servidor.

5.6.2.4 Mapas muy largos no son soportados La arquitectura NIS no es muy escalable. El tamao mximo de los mapas es 2 GB. Las bases de datos DBM muy grandes son lentas e ineficientes. Cuando el tamao de los mapas se acerca a 2 GB, las rutinas DBM pueden fallar con errores fseek() y la creacin de los mapas falla. Antes de alcanzar ese tamao, el rendimiento normalmente se degrada al punto que la utilizacin de los mapas es imposible.

5.6.2.5 Routers, dispositivos de red, y vinculacin NIS La vinculacin NIS normalmente es realizada a travs de broadcasts. De esta forma los clientes NIS se vinculan a un servidor y los esclavos NIS se vinculan a un master para realizar transferencias de mapas. Si los clientes fallan al vincularse, y hay puentes o routers entre las mquinas que intentan vincularse, el problema puede ser que el hardware no puede pasar los paquetes de broadcast necesarios para la vinculacin. El comando ypset puede ayudar a solucionar esto, pero tiene la desventaja de que es poco confiable e inseguro. Para situaciones as, las mejores soluciones consisten en tener una mquina servidor que haga de puente entre las dos redes o en dividir la red en dos dominios separados (quizs un duplicado de una a otra).

5.6.2.6 Grupos incorrectos por cambios en un grupo nuevo Normalmente, este problema ocurre porque el mapa netid es incorrecto. Como contiene un mapeo de grupos por usuario, el mapa netid producir resultados incorrectos si no es reconstruido siempre que los mapas passwd y group son modificados. Para evitar este problema, no se debe generar el mapa por s solo.

5.6.2.7 mkdbm falla para entradas de mapas NIS muy grandes El diseo del DBM limita las entradas a 1024 bytes o menos de la siguiente manera: La suma de la clave DBM + datos debe ser < = 1024 bytes. El problema ms comn provocado por esto, es cuando una entrada en un grupo grande es rechazada por DBM porque hay muchos usuarios en el grupo, causando que el mkdbm falle. El problema ocurre normalmente en las entradas de los mapas de grupos y hay dos alternativas: Hacer dos o ms grupos con el mismo gid. Pgina 218 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Agregar usuarios con el grupo grande como grupo primario y luego eliminar los usuarios de la entrada de grupo en /etc/group.

5.7 Resolucin de problemas de NFS


Antes de comenzar con la investigacin en NFS, es necesario asegurarse que la red funcione correctamente. Es muy importante tambin asegurarse que la resolucin de nombres sea funcional y consistente en toda la red y que el ruteo sea correcto en ambos sentidos.

5.7.1 Pasos generales para solucionar un problema de NFS


Los pasos generales para solucionar un problema de NFS son los siguientes: 1. Verificar la correcta conectividad y configuracin de la red. 2. Verificar los contenidos y permisos de los siguientes archivos de configuracin de NFS en el cliente y en el servidor: /etc/exports (servidores nicamente) /etc/rc.tcpip /etc/rc.nfs /etc/filesystems (clientes nicamente) /etc/inittab 3. Verifique que los siguientes daemons NFS estn activos en el cliente y en el servidor. Daemons requeridos en el servidor NFS: portmap biod nfsd rpc.mountd rpc.statd rpc.lockd Daemons del cliente NFS requeridos: portmap biod (estos son creados dinmicamente en AIX Versin 4.2.1 y superiores) rpc.statd rpc.lockd 4. Iniciar un iptrace (cliente, servidor o red), reproducir el problema, luego ver la salida del ipreport para determinar donde est el problema.

5.7.2 Problemas de montaje en NFS


Los problemas de montaje caen dentro de alguna de las siguientes categoras: File system no exportado, o no exportado para un cliente especfico. Lista de exportacin correcta (/etc/exports) Resolucin de nombres diferente del nombre en la lista de exportacin. Normalmente se Pgina 219 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

debe a una de las siguientes causas: La lista de exportacin utiliza un nombre largo, pero el nombre del host cliente es resuelto sin el dominio de red. Los nombres largos no pueden ser resueltos, el permiso de montaje es denegado. Normalmente, esto ocurre despus de un actividad de upgrade y puede ser solucionado exportando con las dos formas del nombre (con y sin dominio). El cliente tiene dos adaptadores y dos nombres diferentes para los dos adaptadores y el export slo especifica uno. Este problema puede ser solucionado exportando ambos nombres. El servidor no puede hacer una bsqueda por nombre o por direccin en el cliente. Para resolverlo, se debe verificar que los siguientes comandos resuelvan coherentemente: host <name> host <ip_addr> El file system fue montado en el servidor luego de que se ejecut el exportfs. En este caso, el comando exportfs est exportando el punto de montaje y no el file system. Para corregir este problema, se debe ejecutar:
/usr/etc/exportfs -ua; /usr/etc/exportfs a

Luego corrija el archivo /etc/filesystems para que se monte el file system en el reinicio del sistema, de manera que se encuentre montado cuando el NFS es iniciado Cambios inesperados en la lista de exportacin, en los montajes, o en algn otro punto, a veces pueden provocar que el mountd quede confundido. Esto ocurre normalmente despus de un montaje, una exportacin, o por un conflictivo punto de montaje, etc. Para corregir esta condicin, el mountd debe ser reiniciado:
# stopsrc -s rpc.mountd # startsrc -s rpc.mountd

Otro motivo que genera problemas de montaje es que la fecha y hora del sistema sean errneas en una de las dos mquinas. Para solucionar esto se debe corregir la fecha y la hora y luego reiniciar el sistema. Los montajes son lentos desde clientes con AIX V4.2.1 o superior (NFS Version 3) a servidores con AIX V4.1.5 o anterior y otros servidores no AIX (con NFS Version 2). La Versin 3 de NFS utiliza TCP por defecto mientras que la Versin 2 de NFS utiliza nicamente UDP. Esto significa que el requerimiento de montaje inicial del cliente utilizando TCP fallar. Para proveer compatibilidad hacia atrs, el montaje es reintentado utilizando UDP, pero esto ocurre despus de un tiempo de espera de algunos minutos. Para evitar este problema, NFS V3 provee los parmetros proto y vers con el comando mount. Estos parmetros son utilizados con el flag -o para unificar el protocolo y la versin de un montaje especfico. En el siguiente ejemplo se fuerza la utilizacin de UDP y NFS V2 para el requerimiento de montaje:
# mount -o proto=udp,vers=2,soft,retry=1 platypus:/test /mnt Nota

Si el proto y el vers no coinciden con el servidor, el montaje fallar completamente.

Pgina 220 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Clientes no AIX antiguos pueden sufrir problemas de montaje. Si en el entorno hay este tipo de clientes, ser necesario iniciar el mountd con la opcin -n:
# stopsrc -s rpc.mountd # startsrc -s rpc.mountd -n

Otro problema de montaje que puede ocurrir con clientes no AIX antiguos es cuando un usuario que solicita un montaje est en ms de ocho grupos. La nica alternativa para este problema es disminuir la cantidad de grupos en los que est el usuario o realizar el montaje con un usuario diferente.

5.7.2.1 Montajes soft y montajes hard Cuando la red o el servidor tienen problemas, los programas que acceden a file systems remotos montados de manera hard fallan de forma diferente que los que acceden a file systems remotos montados de manera soft. Si un servidor falla y no responde al requerimiento de un montaje hard, el NFS muestra el siguiente mensaje:
NFS server <hostname> not responding, still trying

Los file systems remotos montados de manera hard provocan que los programas se detengan hasta que el servidor responda, porque el cliente reintenta el requerimiento hasta que sucede. Se debe utilizar el flag -bg con el comando mount cuando se realiza un montaje hard, de manera que si el servidor no responde, el cliente reintente el montaje en background. Si un servidor no responde al requerimiento de un montaje soft, el NFS muestra el siguiente mensaje:
Connection timed out

Los file systems remotos montados de manera soft devuelven un error despus de algunos intentos insatisfactorios. Desafortunadamente, muchos programas no verifican las condiciones de retorno en las operaciones con file systems, por lo que este error no se podr ver cuando se acceden archivos de montajes soft. Sin embargo, este error NFS aparecer en la consola.

5.7.3 Problemas de rendimiento de NFS


Lo primero que se determina cuando hay problemas de rendimiento de NFS es si es un problema de recursos insuficientes o de demasiados recursos. Las siguientes preguntas deben responderse para comenzar la determinacin: Cual es la carga del proceso en el cliente y/o servidor? Hay muchos usuarios o procesos utilizando NFS? Hay muchas operaciones de lectura/escritura simultneas sobre NFS? Si una o ambas preguntas es verdadera, la causa probable es que la mquina sufre falta de recursos en alguna parte. Hay otras mquinas en la misma sub red sufriendo problemas? Si todos los clientes en una cierta sub red sufren problemas, y el servidor est en otra sub red, los probables sospechosos sern el hardware de la red y las configuraciones entre las sub redes. Pgina 221 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Hay otras mquinas que no estn en la misma sub red sufriendo problemas? El dedo acusador apunta al servidor en este caso, pero esto puede ser tambin un problema de red como en el punto anterior. El servidor tiene problemas? Si la mquina slo ejecuta una prueba que copia un archivo y la copia tarda ms de lo que debera, lo ms probable es que algo est saturado tanto en la red como en el servidor. Cuando se sospecha que la mquina est saturando una recurso de la red o del servidor, a veces es recomendable ejecutar la prueba de un biod. Para AIX 4.2.1 y superiores, la prueba puede realizarse desmontando y montando el file system utilizando el comando mount -o biods=1. Para sistema anteriores, simplemente ejecute el comando stopsrc -s biod; esto deja slo un kbio corriendo. Si la prueba funciona ms rpidamente con slo un biod o kbio, algo est siendo saturado. Si el montaje utiliza UDP, intente utilizar un montaje TCP. Por defecto, en AIX V4.3.0 y superiores, los montajes son TCP. Si en los pasos anteriores se determina que es necesaria una optimizacin del sistema para proveer ms recursos para un rendimiento de NFS adecuado, el siguiente paso es poner en el lugar un entorno controlado para evaluar qu efectos tienen las operaciones de optimizacin en el sistema. Este entorno de prueba debe ser los ms parecido posible al entorno productivo, ya que las variaciones en el sistema o en la red pueden invalidar completamente los resultados. Es necesario crear una prueba fcilmente repetible, que muestre el problema. Por ejemplo, si el problema es el rendimiento de las lecturas y escrituras, la mejor manera de probar es simplemente utilizar el comando cp para copiar un archivo sobre NFS. Si se copia un archivo al cliente (probando lecturas), es mejor copiarlo al /dev/null para eliminar el tiempo de escritura a disco. Cuando se establece una prueba para evaluar el rendimiento, es necesario evaluar como la optimizacin del rendimiento afecta al sistema. El mtodo ms simple es calcular el tiempo que tarda en com-pletarse la prueba. El criterio simple es que si funciona ms rpido, la optimizacin ayud, y si funciona ms lento, algo se hizo mal. El mtodo ms fcil para medir el tiempo de ejecucin es utilizar el comando time como muestra el siguiente ejemplo:
time cp /servera/testdir/1MBfile /dev/null

Otra forma de monitorear los resultados de la prueba es utilizar el comando nfsstat y observar los paquetes rechazados de la siguiente manera: 1. Utilice el comando nfsstat -z para poner en cero las estadsticas. 2. Ejecute la prueba. 3. Utilice el comando nfsstat -cr para ver cuntos paquetes fueron rechazados. El siguiente ejemplo muestra que doce paquetes fueron rechazados en algn punto durante un montaje UDP. A menudo, los valores retrans y timeout no son iguales, dado que todos los timeouts no necesariamente provoquen una retransmisin.
# nfsstat -cr Client rpc: Connection oriented calls badcalls 61663 0 nomem cantconn 0 0

badxids 0 interrupts 0

timeouts 0

newcreds 0

badverfs 0

timers 0

Pgina 222 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Connectionless calls badcalls 2851 0 timers nomem 0 0 #

retrans 12 cantsend 0

badxids 0

timeouts 12

newcreds 0

badverfs 0

En general, se podr observar que as como la cantidad de paquetes rechazados baja, el tiempo de finalizacin de la prueba disminuye. Se debe tener en cuenta que en AIX V4.2.1 y posteriores, hace falta observar las estadsticas de Connectionless (UDP) y Connection oriented (TCP) para verificar los tiempos de espera y las retransmisiones. Si hay paquetes rechazados, primero se debe asegurar que no haya problemas de recursos en el cliente. Esto se realiza verificando la salida del comando netstat. Si no hay paquetes rechazados, se deben sospechar problemas con la aplicacin, o son necesarios ms biods. El comando nfsstat permite monitorear las estadsticas de funcionamiento y rendimiento de NFS y RPC. Para encontrar dnde son rechazados los paquetes, utilice el comando con varias opciones como se muestra en los siguientes ejemplos: Verifique los Oerrs en la salida del comando netstat -in:
# netstat -in Name Mtu Network lo0 16896 link#1 lo0 16896 127 lo0 16896 ::1 en0 1500 link#2 en0 1500 192.168.1 tr0 1492 link#3 tr0 1492 9.185.112 # Address 127.0.0.1 2.60.8c.2e.e1.c9 192.168.1.10 10.0.5a.a8.70.67 9.185.113.7 Ipkts Ierrs 2107 0 2107 0 2107 0 24068 0 24068 0 1102168 0 1102168 0 Opkts Oerrs Coll 2109 0 0 2109 0 0 2109 0 0 819 0 0 819 0 0 84137 406 0 84137 406 0

Los Oerrs indican normalmente que es necesario incrementar el tamao de la cola de transmisin del dispositivo. En el caso del ejemplo anterior, como hay Oerrs en la interfase tr0, ser necesario cambiar el parmetro xmt_que_size del tok0 utilizando la siguiente sintaxis del comando chdev:
# chdev -P -l tok0 -a xmt_que_size=120

Verifique en la salida del netstat -s los valores diferentes a cero: El comando netstat -s reporta todas las estadsticas de red para IP, UDP, TCP, ICMP, etc. Hay unos pocos contadores que pueden ayudar a determinar si hay algn problema de configuracin de la red o de un dispositivo que pueda provocar un problema de rendimiento. En la seccin de estadsticas IP, stos son los contadores bad header checksums y fragments dropped. En la seccin de estadsticas UDP, los contadores bad checksum y dropped due to no socket son los que se debe revisar si son distintos a cero. Para mostrar slo las estadsticas distintas a cero de la seccin IP, utilice el comando netstat -s -s de la siguiente forma:
# netstat -s -s -p ip

Verifique la salida de los siguientes campos: bad header checksums (problemas de red) fragments dropped (colas del manejador de dispositivos no suficientePgina 223 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

mente grandes) Para mostrar slo las estadsticas distintas a cero de la seccin UDP, utilice el comando netstat -s -s de la siguiente forma: :
# netstat -s -s -p udp

Verifique la salida de los siguientes campos: bad checksums (problemas de red) dropped due to no socket (espacio para recibir insuficiente) Valores diferentes a cero en los campos mencionados puede ser un indicador de paquetes rechazados.
Nota

Utilizando la forma netstat -s -s reduce considerablemente el volumen de la salida mostrando nicamente los contadores de estadsticas con valores distintos a cero. Verifique en la salida del comando netstat -v las estadsticas de las interfases de red. El comando netstat -s reporta estadsticas para el nivel IP y superiores. Para estadsticas especficas de dispositivos de red, puede utilizarse el comando netstat -v. Para determinar si una interfase de red especfica est rechazando paquetes, se deben observar si las siguientes estadsticas son distintas a cero: transmit/receive errors transmit/receive packets dropped Valores diferentes a cero en los campos mencionados indican que el tamao de las colas es muy pequeo o problemas en el adaptador de red. Las estadsticas Max Packets on S/W Transmit Queue y S/W Transmit Queue Overflow pueden ser tiles para determinar el tamao apropiado de las colas para cada configuracin en particular. Verifique en la salida del comando netstat -m el uso de memoria de red y mbufs. Hay una limitada cantidad de mbufs o memoria asignada para ser utilizada por el subsistema de red. Si el sistema tiene poca de esta memoria y se reciben paquetes, es posible que estos paquetes sean rechazados porque no hay suficiente espacio para ellos. El comando netstat m reporta estas fallas en el contador requests for memory denied. Valores diferentes a cero en requests for mbufs denied o en el contador failed de la seccin Kernel malloc statistics pueden indicar una situacin provocada por el rechazo de paquetes. Si la salida del netstat -m muestra valores diferentes a cero en requests for mbufs denied, el comando no puede ser utilizado para incrementar la memoria asignada para ser usada por mbufs. Si luego de realizar los pasos anteriores no hay indicios de paquetes rechazados, se puede intentar incrementar la cantidad de procesos biod cliente. No hay un conjunto de reglas a cerca de cuantos biods deben ejecutarse; normalmente, los valores por defecto entregan un rendimiento adecuado. Sin embargo, hay situaciones donde varios biods/kbios pueden ser consumidos en leer un archivo. Si este es el caso, y es probable que el sistema vaya a tener mltiples lecturas y escrituras en forma concurrente, el rendimiento debe ser mejorado incrementado la cantidad de biods respecto la valor por defecto. Pgina 224 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

La cantidad por defecto de kbios o biods permitidos en un file system vara dependiendo de los niveles de AIX y NFS: NFS V2 en versiones de AIX anteriores a 4.2.1 tienen seis biods. AIX Versin 4.2.1 y posteriores tienen seis kbios en NFS V2 y cuatro en V3. Cualquier incremento en la cantidad de biods/kbios debe ser realizado y monitoreado en forma de prueba y error. Se debe incrementar la cantidad de biods hasta que la performance se nivele completamente o los paquetes comiencen a ser rechazados: Para incrementar a 16 la cantidad de daemons biod en el cliente cuando se utiliza AIX Versin 4.2.0 y anteriores, utilice la siguiente sintaxis del comando:
# /usr/sbin/chnfs -b 16 -B

Para incrementar a 16 la cantidad de threads kbio en el punto de montaje de un cliente cuando se utiliza AIX Versin 4.2.1 y posteriores, se debe incluir -o biods=16 en el comando mount:
# mount -o rw,intr,bg,timeo=2,biods=16 thor:/usr/tools /usr/tools Nota

Si usted ve paquetes perdidos en la mquina, incrementar la cantidad de biods probablemente provoque una dramtica degradacin del rendimiento.

5.7.3.1 Empeorando el rendimiento del cliente para redes o servidores lentos Cuando el comando nfsstat muestra que la mquina debe retransmitir paquetes, y se sospecha que la mquina est sobrecargando un recurso de red o del servidor, hay dos cosas que se deben observar inicialmente: 1. Si el montaje es a travs de UDP, intente utilizar TCP si tanto el servidor como el cliente lo soportan. 2. Si no funciona, a veces es til intentar la prueba de un biod. Para realizarla en versiones de AIX anteriores a V4.2.1, se debe ejecutar el comando stopsrc s biod. Esto dejar un kproc biod corriendo y lentificar la velocidad de lectura/escritura del cliente. Para AIX V4.2.1 y posteriores, se debe desmontar el file system remoto y montarlo nuevamente utilizando la opcin -o biods=1 en el comando mount. Si cuando esto se realiza, el rendimiento del NFS aumenta, se est frente a un problema donde la mquina est configurada para correr demasiado rpido en relacin a la red o al servidor. A veces, esto puede solucionarse detectando el problema (dispositivo de red o servidor) y corrigindolo. La solucin ptima no es empeorar el rendimiento del cliente, sino arreglar cualquier cosa que sea el cuello de botella, tanto en la red o en el servidor NFS. Si esto no puede realizarse, entonces hay dos formas de empeorar el rendimiento del cliente: 1. La primera es reducir la cantidad de biods, como se hace en la prueba de un biod. 2. La segunda es reducir el tamao de las lecturas/escrituras. Ambas opciones reducirn la carga en el servidor y la red, pero hay algunas diferencias sutiles. La primera opcin puede realizarse disminuyendo la cantidad de biods disponible para correr en cada uno de los file systems, y de esta manera limitar la cantidad que puede trabajar con cada archivo. La cantidad permitida por file system es modificada utilizando el comando mount con la opcin biods=X en el/los file system(s) en cuestin. Pgina 225 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

A menudo, es mejor opcin cambiar el tamao de las lecturas/escrituras que cambiar la cantidad de biods. El tamao por defecto de una lectura o escritura NFS en NFS Versin 2 es 8192 bytes por requerimiento de lectura/escritura RPC. Por lo tanto, cuando 8 Kb de datos de lectura o escritura es enviado por la red, con un MTU tpico de alrededor de 1500 bytes, la lectura o escritura ser fragmentada en seis paquetes. En NFS V3 el problema es magnificado porque el tamao de las lecturas/escrituras es de 32 K y la cantidad de paquetes crece a 23. La prdida de un slo paquete genera tiempos de espera y la retransmisin, provocando que todos los paquetes sean reenviados. La idea detrs de cambiar los tamaos de lectura/escritura es reducir la cantidad de paquetes necesaria para satisfacer un requerimiento de lectura o escritura e incrementar las chances de xito en el primer intento. Los tamaos de lectura/escritura son especificados por el comando mount para el file system en cuestin. En general, la mejor estrategia es comenzar con dos o tres kbios y tamaos de lectura/escritura de 1024 bytes. Luego los nmeros pueden ser ajustados hacia arriba o abajo para obtener el mejor rendimiento.

5.7.4 Fallas de locking


Utilice la siguiente lista de comprobacin para investigar problemas de locking de NFS: Verifique la resolucin de nombres. Utilice el comando rpcinfo para asegurarse que los daemons estn funcionando. Inicie el daemon lock con depuracin activada. Esto normalmente se debe realizar bajo la direccin del personal de soporte.

5.7.4.1 Iniciando el rpc.lockd con depuracin El mtodo para capturar la salida de la depuracin del lockd cambi a partir de AIX 4.2.1. Anteriormente, la salida era dirigida directamente a la consola del sistema. Para AIX 4.2.1 y posteriores, la salida del lockd es capturada con syslogd, por lo tanto, syslog debe ser configurado modificando el archivo /etc/syslog.conf para que la salida de la depuracin a un archivo. El archivo /etc/syslog.conf necesita una lnea similar a la siguiente:
*.debug /tmp/cons.out

Esto enviar todos los mensajes de depuracin severa al archivo /tmp/cons.out. Este archivo debe existir primero, porque el syslogd no lo crear. Se debe refrescar el syslog para que reinicie utilizando el nuevo archivo con el comando:
# refresh -s syslogd

Una vez que se refresca el syslogd, se debe reiniciar el lockd con el flag -d1 utilizando uno de los siguientes comandos y ste comenzar a guardar los mensajes de depuracin en el archivo cons.out.
# rpc.lockd -d1 # startsrc -s rpc.lockd -a -d1 Nota

El flag -d no est documentado. Valores entre 1 y 5 otorgan una adecuada informacin de depuracin.

Pgina 226 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

5.7.5 Un cliente NFS se detiene durante el reinicio del sistema


Cuando un cliente NFS se detiene durante el reinicio del sistema, es probable que haya especificado en el archivo /etc/filesystems un montaje automtico que no se est realizando en background. Si se experimentan problemas de este tipo durante el reinicio del sistema, se deben verificar las secciones de NFS en el archivo /etc/filesystems para asegurarse que la opcin bg sea especificada con el comando mount. Todos los montajes de NFS, aquellos que son realizados automticamente en el inicio del sistema, tanto en el /etc/filesystems como en scripts de arranque, deben tener configurada la opcin background. El siguiente ejemplo muestra un montaje automtico incorrectamente configurado que ocasionar que el sistema se detenga durante el reinicio:
# vi /etc/filesystems /usr/local: dev = /usr/local vfs = nfs nodename = thor mount = true type = bsd options = hard,intr,fg

La lnea mount = true indica un montaje automtico; por lo tanto, las opciones deben ser modificadas por: options = hard,intr,bg

5.8 Depuracin de SLIP (Serial Line Internet Protocol)


El primer paso en cualquier depuracin de SLIP es verificar el enlace fsico. Esto se puede realizar utilizando los comandos ate o cu; El comando ate necesita que est instalado el fileset bos.net.ate. Para una verificacin utilizando ate: 1. Conecte fsicamente los modems o conecte los cables directamente en los puertos serie de ambos sistemas. 2. Se deben crear ttys en los mencionados puertos, configure Enable LOGIN en disable en el puerto que llama y en enable el puerto llamado, y FLOW CONTROL to be used en rts. 3. Ingrese el comando ate en el sistema que llama, luego: a. En el men principal de Unconnected, seleccione el subcomando Alter. Configure Rate segn el baud rate del modem y Device con la tty utilizada. b. En el men principal de Unconnected, seleccione el subcomando Connect. Cuando ATE pide un nmero telefnico, ingrese el nmero telefnico del sistema a llamar y presione Enter (para conexin directa slo presione Enter). c. En este punto, debera recibirse un login. Si es as, presione Ctrl-v para retornar a la pantalla conectada, presione t para logout, y presione q para salir del ATE.
Nota

Si no se recibe un login, se debe volver al comienzo de esta seccin y verificar que la configuracin sea correcta. No se debe continuar con la investigacin de SLIP hasta que no se obtenga el login del sistema remoto. 4. Utilice smit chgtty para cambiar la configuracin Enable LOGIN a disable en la tty del Pgina 227 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

sistema remoto. Cuando se verifica que la conexin es buena, es necesario verificar la informacin de tty en el archivo /etc/uucp/Devices en ambos sistemas para asegurarse que refleja la tty y los detalles de conexin correctos. El siguiente ejemplo muestra la informacin requerida para una conexin de 9600 baud en tty1:
Direct tty1 - 9600 direct

Es necesario utilizar el men rpido smit chinet para verificar los detalles de la red SLIP en ambos sistemas. Se debe poner atencin en los siguientes campos: Direcciones Internet de ambos sistemas Baud rates seleccionados Verifique en el archivo /etc/hosts las direcciones mencionadas y los nombres de las interfases. Si se est utilizando sliplogin, debe asegurarse que el usuario exista en el archivo de configuracin /etc/slip.hosts y que las direcciones IP y la mscara de red sean correctas. Si se est llamando a un servidor sliplogin, intente utilizar el script de ejemplo /usr/sbin/slipcall para llamar y establecer la conexin SLIP. Se puede obtener informacin muy til utilizando el parmetro Debug_Level con el comando slattach. Para producir la salida se deben utilizar niveles de depuracin comprendidos entre 0 y 9.

5.9 Depuracin de PPP (Point-to-Point Protocol) asincrnico


Esta seccin contiene informacin sobre cliente y servidor de conexiones AIX PPP.

5.9.1 AIX como cliente PPP (llamadas salientes)


Para hacer llamados con PPP, debe haber una tty definida para el puerto del modem con Enable LOGIN configurado en disable y FLOW CONTROL to be used en rts. Para verificar la tty, primero se debe asegurar que las utilidades BNU estn instaladas, verificando el fileset bos.net.uucp, y luego ejecutar el comando cu -ml ttyXX. El siguiente ejemplo del cu muestra el flujo de la sesin:
john@rios:/home/john > cu -ml tty8 Connected at OK ~[rios]. The connection is ended. Nota

No se debe continuar la investigacin sobre PPP hasta que el modem responda como en el ejemplo anterior. Si hace falta una depuracin adicional, se puede utilizar el comando cu -dml ttyXX. Otra herramienta til en la investigacin sobre PPP es syslogd. Si no fue configurada como parte de la configuracin inicial de PPP, ser necesario configurarla ahora. El siguiente ejemplo puede utilizarse como gua: 1. Agregar la siguiente lnea en el archivo /etc/syslog.conf:
*.debug /tmp/ppp

Pgina 228 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

2. Crear el archivo /tmp/ppp y agregarle permiso de escritura:


>/tmp/ppp chmod +w /tmp/ppp

3. Advertirle al syslogd que el archivo /etc/syslog.conf fue modificado. Ejecute el siguiente comando:
refresh -s syslogd

Adems se debe verificar que el archivo /etc/uucp/Devices contenga la siguiente lnea:


Direct tty## - baud_rate direct

Donde tty## es la tty creada anteriormente y baud_rate es el baud rate configurado para la tty. Intente iniciar el subsistema PPP con smit o ejecutando el siguiente comando:
startsrc -s pppcontrold Nota

Cualquier cambio en la configuracin requiere que el subsistema PPP (pppcontrold) sea detenido y reiniciado. Utilice SMIT o stopsrc -cs pppcontrold para detener el subsistema. Utilice los siguientes comandos para verificar que el subsistema PPP ha iniciado: netstat -in (para verificar si las interfases de red pp# fueron creadas). Antes de que se establezca la conexin, la direccin IP de las interfases PPP ser 0.0.0.0. lssrc -s pppcontrold (para verificar si PPP est corriendo) Si PPP no est corriendo, puede haber problemas en la configuracin (verifquelo con smit ppp), o es necesaria la actualizacin de los filesets PPP. Para obtener informacin de depuracin ms detallada del comando pppcontrold, se puede enviar la seal 30 de la siguiente manera:
lssrc -s pppcontrold

Anote el ID del proceso (PID):


kill -30 <pppcontrold_PID>

Donde pppcontrold_PID es el nmero PID del pppcontrold retornado por el comando lssrc. Esto abrir un mensaje indicando que la depuracin fue activada para el archivo /tmp/ppp que fue creado con la configuracin del syslogd. La informacin de diagnstico puede ser desactivada ms tarde utilizando el comando kill -31 <pppcontrold_PID>. Si el la conexin no es establecida cuando se ejecuta el comando pppattachd: Verifique las tablas de ruteo en ambos sistemas Asegrese que el contenido del script de conversacin (Chat Script) coincide con los requerimientos del modem. El comando pppattachd llama al programa pppdial que utiliza el script de conversacin para realizar el llamado. El siguiente es un ejemplo de un comando que realiza un llamado:
/usr/sbin/pppattachd client tty8 connect "/usr/sbin/pppdial -v -f CHAT_SCRIPT_FILE"

Pgina 229 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Luego de ejecutar el comando pppattachd, el progreso del llamado puede ser observado ejecutando el siguiente comando:
tail -f /tmp/ppp

Donde /tmp/ppp es el archivo creado en la configuracin del syslogd al que fue direccionada la informacin de depuracin. Los siguientes archivos de configuracin tambin contienen datos tiles para la determinacin de problemas de conexin: /etc/ppp/if_conf Contiene la configuracin de la interfase PPP IP. /etc/ppp/lcp.conf Contiene la informacin de configuracin de los paneles de configuracin LCP. /etc/ppp/if_link.map Contiene la correlacin de interfases con bloques de conexin de red LCP. /etc/ppp/attXXX.pid Contiene archivos de los ID de procesos para los attachments asincrnicos.

5.9.1.1 Chat scripts (scripts de conversacin) El programa pppdial llamado por el comando pppattachd utiliza una conversacin UUCP para establecer la conexin con el sistema remoto. El siguiente ejemplo muestra un script de conversacin con notas explicativas para asistir a la resolucin de problemas de PPP:
'' ATDT555-5555 CONNECT '' in: myuserid word: mypassword

Lnea a lnea, el significado del script es el siguiente: Espera nada. Enva al ATDT555-5555 (para que el modem disque este nmero). Espera CONNECT del modem. Enva nada. Espera [log]in: (el login enviado por el sistema remoto). Enva el userid. Espera [pass]word: (el requerimiento de password enviado por el sistema remoto). Enva la passwd.

5.9.1.2 Problemas de autenticacin La razn especfica de una falla en la autenticacin, cuando se utilizan los protocolos de autenticacin PAP o CHAP, es normalmente mostrada en el archivo de log del syslogd (/tmp/ppp en los ejemplos utilizados). Pgina 230 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Si se est utilizando autenticacin CHAP, se debe tener en cuenta que Microsoft utiliza un algoritmo CHAP diferente del de AIX. El protocolo CHAP de Windows 95/Windows NT es incompatible con AIX. Si se utiliza PAP, use el siguiente procedimiento de configuracin simplificado para verificar que la autenticacin funcione. En el panel de SMIT de Autenticacin PAP: El nombre del host remoto es el nombre del autenticador desde la perspectiva del par. A * como nombre del host remoto indica cualquier autenticador. En la mquina servidor:
smitty ppp PAP Authentication Add a User User name Remote host name Password

[david] [*] [david]

Para verificar que el usuario pap fue creado:


vi /etc/ppp/pap-secrets

Busque david * david en el archivo:


cd /home/goliath

Donde goliath es el usuario creado para ingresar al servidor


vi .profile

Agregue la siguiente lnea:


exec /usr/sbin/pppattachd server authenticate pap 2>/dev/null

En la mquina cliente:
smitty ppp PAP Authentication Add a User User name Remote host name Password

[david] [*] [david]

Utilice el siguiente comando para conectarse como cliente:


/usr/sbin/pppattachd client /dev/tty# peer pap USERNAME connect "/usr/sbin/pppdial -v -f CHAT_SCRIPT_FILE"

Donde USERNAME es el nombre del usuario PAP y CHAT_SCRIPT_FILE es el nombre completo del script de conversacin. Disque desde el cliente, establezca la conexin, y la autenticacin debera funcionar. Si no es as, verifique el archivo de salida del syslog.

5.9.2 AIX como servidor PPP (llamadas entrantes)


Para aceptar llamadas entrantes con PPP, debe haber una tty definida para el puerto del modem con Enable LOGIN configurado en enable, delay, o share, y FLOW CONTROL to be used en rts. Adems, se debe configurar syslogd de la misma forma que en la seccin de cliente. Verifique que el subsistema PPP est activo en este servidor con los siguientes comandos: Pgina 231 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

lssrc -s pppcontrold Esto debera mostrarlo activo. ps ef | grep ppp Debe haber un proceso pppcontrold corriendo. ifconfig pp0 La interfase pp0 debera mostrar la direccin IP correcta. Si no es posible el login despus de establecer la conexin, verifique que el usuario es miembro del grupo UUCP. Adems, se debe verificar que la primera lnea del .profile del usuario sea la siguiente (para ksh):
exec /usr/sbin/pppattachd server 2>/dev/null

Pgina 232 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6. Resolucin de problemas de impresin


El objetivo de este captulo es proveer al administrador de algunas herramientas y recomendaciones que lo ayuden a convertir el arte de la resolucin de problemas en una ciencia. Los problemas de impresin pueden ser menores como pequeas manchas en la hoja o mayores como comprobar que la impresin no se realiz. Dnde buscar los problemas depende de factores como el tipo de impresora, el tipo de archivo a imprimir, y la forma en que la impresora est conectada al servidor. Este captulo se divide en tres secciones: Tcnicas para resolver problemas comunes Resolucin de problemas especficos del subsistema System V Resolucin de problemas especficos del subsistema PowerPC El procedimiento para determinar el problema puede ser reducido a unos pocos pasos: 1. Aislar el problema - Determine el sistema y el subsistema donde existe el problema. - Determine si el problema es de hardware o software. - Determine si el problema es local o remoto. - Llegan los datos a la impresora? 2. Identificar la causa del problema - La impresora est conectada correctamente? - Los datos estn formateados correctamente por los filtros adecuados? - Se estn utilizando los flags adecuados? - La impresora est configurada correctamente? 3. Mejorar la situacin - Pruebe con una impresora, un adaptador o un cable diferentes. - Use una impresora virtual o un tipo de impresora mas apropiado. - Use flags de impresin diferentes. 4. Pruebe la solucin - Pruebe con otros archivos de impresin. - Que otros usuarios intenten imprimir. - Asegrese de que no cre nuevos problemas. El resto del captulo lista algunos de los problemas de impresin ms comunes, y provee informacin que ayuda a aislar el problema, identificar el problema, mejorar la situacin y probar la solucin.

Pgina 233 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.1 Pasos a seguir para resolver problemas comunes


En esta seccin se detallan problemas que ocurren tpicamente cuando se intenta imprimir documentos. En cada caso, sern exploradas las reas comunes para ambos subsistemas de impresin.

6.1.1 Pasos a seguir en problemas de impresin local


La siguiente lista es un resumen de cosas que se pueden verificar si los trabajos no son impresos en impresoras locales: La impresora est lista? - La impresora est encendida? - La impresora tiene mensajes en la pantalla o luces parpadeantes? - Puede imprimir una pgina de prueba? - Se puede imprimir desde otros sistemas? - Los cables estn ajustados, son del tipo correcto y del largo correcto? - El cable est bien? Verifquelo en otro sistema. Es correcta la configuracin del dispositivo? - Redireccione la salida directamente al archivo del dispositivo. - En una conexin serial Son correctos el baud rate, la comunicacin y el nmero de puerto? - Intente en un puerto diferente del ordenador. La impresora o impresora virtual est configurada correctamente? - La impresora corresponde con el data stream y los tipos definidos en la configuracin de la impresora o cola de impresin? - La impresora apunta al dispositivo correcto? - El usuario tiene permitido imprimir en la impresora? (System V) - Son vlidos los flags de impresin para la impresora virtual o el script de la interfase? - La impresora est activada y aceptando trabajos? Use lpstat con los flags correctos. - El nombre de la impresora est escrito correctamente en el comando de impresin? - Se obtienen mensajes en la lnea de comandos, por correo, o en el log de errores? El qdaemon (PowerPC) o lpsched (System V) est corriendo? Para verificarlo, utilice: - System V: lpstat -r - PowerPC: lssrc -s qdaemon

6.1.2 Pasos a seguir en problemas de impresin remota


La siguiente lista es un resumen de cosas que se pueden verificar si los trabajos no son impresos en impresoras remotas: lpd o lpNet estn corriendo en el servidor? Para verificarlo, utilice: - System V: lpstat -r - PowerPC: lssrc -s lpd

Pgina 234 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El cliente tiene correctamente especificados el nombre del servidor y de la cola remota? Existen el nombre del servidor y del cliente en un DNS o en los respectivos archivos /etc/hosts? El cliente tiene permiso para imprimir en el servidor? - System V: Verifique el archivo Systems en el cliente y el servidor. - PowerPC: Verifique el nombre del sistema en el archivo /etc/hosts.lpd del servidor. - En nombre en este archivo coincide con el del DNS? Verifique la direccin IP, y los nombres cortos y largos (nombre + dominio). El usuario en el cliente tiene permiso para imprimir en la impresora? System V: Verifique el archivo users.allow o use lpstat -p printer l para ver los permisos correctos. Use all!all para todos los usuarios remotos. PowerPC: Use rembak y las funciones de depuracin de lpd. System V: Verifique el log /etc/lp/logs/lpNet. Use iptrace para ver como viaja un trabajo a travs de la red. Desactive la cola del servidor - Asegrese que el trabajo est encolado en el servidor mientras la cola est desactivada. - Revise el JDF (Job Description File) o el log del requerimiento para ver los flags de la lnea de comandos. Si es encolado, pero no se imprime cuando la cola es activada: - Haga una copia del archivo y utilice procedimientos locales. - Utilice los flags en el JDF o en el log del requerimiento para imprimir.

6.1.3 Revise lo obvio


Revise lo obvio: Asegrese que la impresora est encendida y en lnea. Asegrese que el cable est conectado a la impresora y al ordenador. Asegrese que los cables LAN estn conectados en el servidor de impresin y en la impresora, y que la red est funcionando correctamente.

6.1.4 Nada se imprime en impresoras locales


Una de las cosas ms frustrantes es imprimir un trabajo, ir hasta la impresora, y encontrar que no sali la impresin. Qu se debe hacer?

6.1.4.1 Mi trabajo se perdi, pero otros son impresos El problema puede no estar relacionado con la impresora. Alguien puede haber tomado accidentalmente el papel impreso. Esto ocurre muy a menudo cuando no se utilizan banners, o cuando el Pgina 235 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

banner es del mismo color que las impresiones. Colas mltiples con una desactivada o cada Es posible que la cola est retrasada con una gran cantidad de trabajos, o un solo trabajo muy grande? A veces un trabajo grande provocar que la cola se caiga, o se desactive. Cuando se configuran colas o impresoras virtuales mltiples para que impriman en la misma impresora, es posible que una de esas colas sea deshabilitada mientras otras siguen imprimiendo. Se est imprimiendo texto en una impresora PostScript? Mientras algunas impresoras pueden intuir el tipo de data stream y automticamente seleccionan el mecanismo interno de impresin adecuado, muchas veces si se le dice a una impresora que el trabajo es PostScript, y se le enva un archivo de texto ASCII o un trabajo PostScript que no est formateado apropiadamente, no imprime absolutamente nada. Verifique la impresora para ver que los archivos que son impresos son trabajos PostScript vlidos. Qu tan grande es el trabajo que falla? Si el trabajo que no se imprime es mucho ms grande que los trabajos que s se imprimen, puede haber varias razones por las que el trabajo falla. Algunas de estas razones son: El trabajo fue puesto en el spool de impresin, y en ste no hay suficiente espacio. El trabajo fue enviado a un servidor de impresin de red que no tiene un buffer suficientemente grande. Si se est utilizando un dispositivo para impresin en red, como Axis, HP JetDirectEX, o Intel NetPort, el espacio de buffer interno de estos dispositivos puede limitar el tamao del archivo que se quiere imprimir. Verifique si el trabajo puede imprimirse en una impresora conectada a un puerto paralelo o serie local. Si se determina que el trabajo es muy grande, se debe intentar imprimirlo por partes. La memoria de la impresora no es suficientemente grande para manejar el trabajo de impresin. Si el file system del AIX es suficientemente grande y se pueden imprimir trabajos pequeos, el problema debe estar en la impresora. Verifique si se puede dividir el trabajo en partes ms pequeas. Intente establecer los lmites de la impresora probando con archivos de tamaos diferentes. Puede que sea posible agregar ms memoria a la impresora. El trabajo es accesible para el servicio de impresin? Los archivos de impresin AFS/DFS que son accesibles para el usuario, a veces no son accesibles para el servicio de impresin. Si se intenta imprimir archivos que estn en un file system remoto y no se imprimen an si archivos similares que estn en el sistema local se imprimen correctamente, intente mover los archivos al /tmp e imprimirlos desde ah. Si funciona, se deber realizar siempre de esta manera, o se debern modificar los permisos al ser exportados por el servidor. Se envi el trabajo a la cola o impresora correcta? A veces, los nombres de las impresoras pueden confundir y ser parecidos entre s. Asegrese que est imprimiendo en la cola correcta y que la impresora est ubicada fsicamente en donde se buscan las impresiones.

6.1.4.2 Nada se imprime, pero las luces en la impresora parpadean o cambian. Con este sntoma, se puede asegurar que algo llega a la impresora, pero por alguna razn, rechaza los trabajos.

Pgina 236 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

La impresora soporta el data stream del archivo de impresin? Como se mencion anteriormente, una de las causas ms comunes por las que se presenta este problema, es imprimir archivos de texto ASCII en una cola de impresin PostScript. Muchos usuarios tienen el concepto errneo de que las impresoras lser pueden imprimir automticamente cualquier tipo de archivo que se les enva. El trabajo de impresin es muy grande para la impresora? Este caso fue mencionado anteriormente; sin embargo, es posible que el trabajo est en el primer lugar de la cola, y bloquee todos los otros trabajos. Si se configur la cola para que reintente automticamente, se podr ver al spooler intentar una y otra vez enviar el trabajo a la impresora sin xito. Est daado el cable de la impresora? A veces, un cable daado deja pasar algunas seales a la impresora. En alguno de estos casos los cables son muy largos, o alguno de los cables no deja pasar alguna seal necesaria para una comunicacin perfecta. Los puertos estn configurados correctamente? Las impresoras que estn conectadas a travs de cables serie pueden provocar problemas que son difciles de detectar cuando la configuracin del puerto serial del ordenador y del puerto serial de la impresora no coincide completamente. Parmetros tpicos son el baud rate, la cantidad de bits de datos, la paridad, y la cantidad de bits de detencin. A menudo, cuando el baud rate es errneo, se obtiene basura como signos de pregunta impresos, y a veces no se imprime nada. Algunas impresoras, como las impresoras Printronix y la serie IBM 6400, tienen una llave en la impresora para determinar el significado de algunas de las lneas seriales. En estas impresoras: Se debe verificar que RTS (Ready To Send) sea siempre TRUE. Se debe verificar que DTR (Data Terminal Ready) sea controlado por BUFFER FULL.

6.1.4.3 Nada llega a la impresora Hay situaciones donde no hay evidencia de que el trabajo de impresin haya llegado a la impresora. Para impresoras conectadas localmente, esto puede ser difcil de determinar, porque algunas impresoras no dan indicios de que no pueden manejar el trabajo de impresin cuando este arriba. Para impresoras de red, siempre se debe utilizar alguna tcnica de rastreo de la red. El trabajo an est en la cola de impresin? Si lpstat muestra que los trabajos estn an en la cola de impresin, hay normalmente dos posibilidades: 1. El trabajo es el primero de la lista, pero la cola est cada, desactivada, corriendo, o en un estado de espera. Si la cola o impresora est cada o desactivada, esto indica que el sistema de impresin tiene problemas para enviar el trabajo a la impresora. Las causas comunes son: - Cable mal conectado. - Permisos errneos en archivos o directorios. - Incompatibilidad en protocolos de red. - Archivos a imprimir muy grandes. - La impresora est apagada, o fuera de lnea. - No se especific el tamao de papel adecuado. Los pasos a seguir para diagnosticar los sntomas son: - Verifique si puede copiar el archivo directamente al dispositivo o impresora de Pgina 237 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

red. Esto separa si el problema es del dispositivo o del spooler. Si encuentra que el problema est en el dispositivo o en la conexin de red, entonces no hace falta que realice el resto de los pasos de diagnstico listados aqu. Se debe continuar la investigacin reparando el cable, el dispositivo o los problemas que tenga la impresora. - Verifique si root puede imprimir el archivo. Esto prueba algunos problemas de permisos, pero no todos. Si root puede imprimir, entonces ser necesario revisar los permisos de archivos. Utilice tcbck, pero se debe tener cuidado de no utilizar el flag de reparacin automtica, ya que puede generar ms problemas que los que soluciona. - Asegrese que el servidor de impresin remoto est utilizando los mismos nmeros de puerto. Un error comn es configurar una impresora de red utilizando el protocolo JetDirect cuando sta espera el protocolo remoto LPR/LPD. Otro problema puede ser utilizar el nmero de puerto equivocado para un servidor de terminales que acepta trabajos de impresin. Un truco para impresoras que soportan el protocolo JetDirect es hacer un telnet al puerto 9100 y tipear datos para ver si estos se imprimen cuando se hace un exit presionando los caracteres correspondientes (generalmente Ctrl-]). - Verifique el tamao del archivo y el tamao del file system utilizando df y ls -l. 2. El trabajo no es el primero en la lista. Es posible que otro trabajo est causando el problema. En este caso, utilice el mismo procedimiento, pero probando con el trabajo que provoca el problema. La impresora est conectada apropiadamente al ordenador? Primero, asegrese que la impresora y el ordenador estn conectados por un cable. Asegrese que el mismo tipo de interfase es utilizado en el ordenador y en la impresora. Un error muy comn es asumir que como la impresora y la caja de salida del ordenador (como un RAN de 128 puertos) tienen conectores RJ-45 se pueden conectar entre si directamente. Desafortunadamente, el RJ-45 de la impresora usualmente es un conector ethernet, mientras que el del RAN es un conector serial, y entre ellos no pueden comunicarse. El mismo error se suele cometer conectando cables serie y paralelos. Qu tipo de cable se est utilizando? Como muchos edificios son cableados con cables de red CAT 5, se asume en general que pueden ser utilizados para conectar impresoras serie. El estndar RS/232 dice que se deben utilizar cables blindados de par trenzado para las comunicaciones serie; los cables CAT 5 no cumplen con este requerimiento. Si se insiste en utilizar estos cables, se debe asegurar que los pares de cables apropiados son trenzados juntos para evitar interferencias. Esto se refiere especialmente a las seales de tierra con las seales de datos. Obtener los pines de salida apropiados es un ejercicio muy frustrante. Por ejemplo, el adaptador IBM de 64 puertos, el adaptador de 128 puertos, y el servidor de terminales 7318 utilizan conectores RJ-45, pero cada uno de ellos utilizando diferentes pines de salida. Se debe verificar que se estn utilizando los pines de salida apropiados consultando las guas de referencia del dispositivo. Algunas impresoras usan la lnea SSD (el pin 11 en un conector db25 en modo DTE) para realizar el control de flujo por hardware. Esta lnea debe ser conectada a DCD en el puerto adaptador del RS/6000. Algunas impresoras (por ejemplo, Epson FX1050, HP Laserjet 4M, HP LaserJet 4plus, y HP DeskJet) tratan la seal RTS como seal de control de flujo. Esta seal normalmente es conectada a la lnea CTS de los RS/6000 o pSeries. AIX requiere que la seal CTS sea un signo de que la impresora est encendida y funcional. Si esta seal se vuelve falsa cuando se est imprimiendo, la cola PowerPC se caer. Para estas impresoras, son necesarios cables especiales para llevar la seal RTS al CTS del ordenador. El largo y la calidad del cable tendrn un gran efecto en la capacidad de imprimir. Si la impresora y el adaptador soportan RS/232D, entonces un cable de buena calidad puede permitir que la impresora est a ms de 60 metros del ordenador. Si en cambio, slo soportan RS/232C, entonces la Pgina 238 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

distancia estar limitada a 15 metros. Para impresin paralela, el estndar recomienda cables de 2 metros como mximo. Se debe tener en cuenta que los cables comercializados pueden exceder el estndar. Los parmetros del puerto son correctos? Los parmetros del puerto, como baud rate, bits de datos, bits de detencin, y mtodo de control de flujo, pueden ser modificados durante la configuracin de la impresora y el dispositivo del ordenador. Se debe verificar que los parmetros coincidan en ambos lados. Existe el dispositivo de la impresora? Si por alguna razn el dispositivo de la impresora es eliminado, a veces un archivo comn puede ser creado en el directorio /dev. Cuando esto ocurre, los trabajos de impresin pueden ir llenando el archivo en lugar de ser direccionados a la impresora. Para ver si este es el caso, utilice el comando ls -l /dev/lp* para verificar que los permisos de cada archivo comiencen con el carcter c, de dispositivo especial. Para identificar el archivo de dispositivo especial que est asociado con una cola de impresin tradicional en AIX, utilice el comando lsque para encontrar el nombre del dispositivo de la cola y el comando lsquedev para encontrar el archivo especial asociado. Luego utilice el comando ls -l en el archivo, de la siguiente manera:
$ lsque -q asc asc: device = lp0 $ lsquedev -q asc -d lp0 lp0: file = /dev/lp0 header = never trailer = never access = both backend = /usr/lib/lpd/piobe $ ls -l /dev/lp0 crw-rw-rw- 1 root system 24, 0 Oct 19 09:56 /dev/lp0

Si el listado del archivo no comienza con crw, entonces se puede estar seguro que el dispositivo no est creado apropiadamente. Esto requerir borrar el archivo y recrear el dispositivo. Para la impresora de un subsistema System V, utilice el comando lpstat con el flag -t:
$ lpstat -t | grep ps1 device for ps1: /dev/lp0 $ls -l /dev/lp0 crw-rw-rw- 1 root system 24, 0 Oct 19 09:56 /dev/lp0

El siguiente es un ejemplo de una situacin incorrecta con un archivo normal en lugar del archivo especial del dispositivo:
-rw-rw-rw 1 lp lp 53455 Oct 19 09:57 /dev/lp1

La impresora est conectada al dispositivo correcto? En la ltima seccin, pudo encontrar el dispositivo conectado a la cola o impresora. Es importante asegurarse que el dispositivo est en el adaptador y puerto correctos. Para encontrar la ubicacin de un dispositivo, utilice el comando lsdev, de la siguiente manera:
# lsdev -Cc printer lp0 Available 01-D0-00-00 Lexmark Optra laser printer lp1 Available 00-00-0P-00 HP LaserJet 4m $ lsque -q asc asc: device = lp0

Pgina 239 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

En este caso, el nmero de ubicacin del lp0 comienza con 01. Esto indica que el dispositivo es uno de los que estn en bus 01 del ordenador. El dispositivo de impresin lp1 indica que est conectado al puerto paralelo principal. El cdigo de ubicacin vara entre los modelos, pero puede ser utilizado siempre para encontrar la ubicacin del adaptador y el puerto. Se debe verificar que la impresora est en el puerto correcto. En algunos casos, se puede encontrar que la salida de la impresin fue a la pantalla de la terminal de otro usuario o a una impresora diferente. Esto puede ocurrir cuando se restaura un mksysb en un sistema con adaptadores de 128 puertos y las RANS son asignadas en distinto orden. En este caso, la mejor solucin es borrar y reconfigurar los adaptadores uno a uno. Se puede imprimir directamente al dispositivo de impresin? Una forma de separar el problema entre el servicio de impresin y el lado del hardware es hacer un copy o un cat del archivo directamente al archivo del dispositivo. Si la impresora es de texto ASCII o PCL, redirecione el comando lptest a la impresora de la siguiente manera:
# splp -p+ lp0 # lptest 10 10 > /dev/lp0

Si la impresora es una PostScript, utilice el comando cat con un archivo PostScript pequeo que sea correcto. Nuestra sugerencia es que se utilice uno de los archivos de encabezamiento, como el H.ps:
# cat /usr/lib/lpd/pio/burst/H.ps > /dev/lp0

Si esto imprime, significa que el problema est en el servicio de impresin. Si el comando demora unos instantes y luego devuelve el siguiente mensaje, entonces presione Ctrl-C:
ksh: /dev/lp0: 0403-005 cant create the specified file

Esto indica que la impresora no est encendida o que hay un problema en el cable. Con impresoras seriales, esto indica que no hay seal de la impresora en el pin CTS del ordenador.

6.1.4.4 Hay espacio suficiente en el file system del spool? Para verificar si hay espacio suficiente en el file system del spool, se debe verificar que el archivo sea ms pequeo que el espacio libre en el /var. Si no es suficiente el espacio, se debe incrementar el file system utilizando el men rpido smitty chjfs. Los comandos para verificar el tamao del file system y del archivo son:
# df -k # ls -l full-path-name-to-file

El asunto del espacio es muy importante en dos casos: 1. Cuando se envan archivos al spool de impresin. Cuando esto ocurre, se realiza una copia del archivo antes de enviarlo a la impresora. Para el subsistema PowerPC, los archivos son copiados en /var/spool/lpq/qdaemon, mientras que para el subsistema System V, son copiados en /var/spool/lp/tmp. Si se esperan muchos archivos grandes, es recomendable que se genere un file system separado y se haga un link al directorio de spool. Esto otorga la ventaja de que reducir el tamao de ese file system es mucho ms fcil que reducir el tamao del /var. 2. Cuando el servidor recibe archivos de un cliente remoto. Los archivos recibidos por el daemon lpd en un subsistema PowerPC son recibidos en el /var/spool/lpd y almacenados hasta que son impresos. Si se reciben muchos archiPgina 240 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

vos, o si estos son muy grandes, se puede acabar el espacio libre en este directorio. En este caso es ms difcil hacer un link, ya que el subsistema PowerPC guarda sus archivos permanentes en subdirectorios que pertenecen a este directorio.

6.1.4.5 Nada se imprime, pero se obtiene un mensaje de error Los mensajes de error que se obtienen del comando de impresin normalmente son diferentes en los dos subsistemas de impresin. Para continuar la investigacin, se debe consultar la seccin correspondiente a cada uno.

6.1.5 La salida es basura o est incompleta


El objetivo de esta seccin es ayudar a solucionar problemas una vez que hay algo de tinta en el papel. Esto es, tanto cuando hay texto legible y hay pequeos detalles de formato, como cuando hay unos pocos caracteres basura en la pgina.

6.1.5.1 Los parmetros del puerto son correctos? Si todo lo que se ven son unos pocos signos de pregunta y otros caracteres que poco tienen que ver con el texto real, quiere decir que el baud rate est mal especificado si es una conexin serie. Se debe verificar que el baud rate sea el correcto en la impresora y en el ordenador. Si se atraviesa un modem o un multiplexer, entonces se deber verificar tambin el baud rate con estos dispositivos.

6.1.5.2 Los tabuladores estn configurados correctamente? Este problema se observa ms a menudo en documentos de texto con tablas. Se puede confirmar este problema creando un par de lneas de texto con columnas de diferente ancho separadas por tabulaciones. Si la impresin no es correcta, entonces se puede cambiar la configuracin de los tabuladores de la impresora virtual, o de la impresora fsica. En algunas impresoras seriales, ser necesario utilizar el comando stty -tabs.

6.1.5.3 Se imprime nicamente la primera lnea o lneas escalonadas? Este problema ocurre ms a menudo cuando se configura para imprimir PCL o texto en modo directo (passthrough) y ni la impresora ni el subsistema de impresin estn configurados para aadir los retornos de carro a los avances de lnea. Para probar si este es el problema, utilice el comando lptest para generar un pequeo archivo y enviarlo al comando de impresin.
# lptest 5 5 | lp -d text01 !"#$% "#$%& #$%&' $%&'( %&'()

Si la salida es escalonada como en el ejemplo anterior, entonces ser necesario configurar el spooler de impresin, el filtro, o la impresora para que aadan los retornos de carro. Con la impresora virtual se puede estar seguro que el comando que fija el control de carro le dice a la impresora que aada los retornos de carro. Las lneas en la parte superior de la pgina o en zig-zag hacia abajo indican que no hay retornos Pgina 241 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

de carro al final de la lnea. Normalmente esto significa que el archivo fue impreso sin formato o utilizando el modo directo. Para impresoras PCL, la solucin ms rpida es agregar el comando a la configuracin para que le diga a la impresora que aada sus propios retornos de carro. En el subsistema PowerPC configure lo siguiente con el atributo de la impresora virtual:
ct=/033&k2g

En el subsistema System V configure lo siguiente en el script de la interfase:


echo \033*k2g

La mejor respuesta para impresoras PCL es configurar la impresora con tipo de contenido pcl (contents=pcl), y utilizar el /usr/lib/lp/bin/pcl. Registre la impresora con:
# lpfilter -f pcl -F /etc/lp/fd/pcl.fd

Una vez que se hace esto, el filtro pcl aadir el retorno de carro a los avances de lnea.

6.1.5.4 La impresora funciona bien por un tiempo y luego mal? Hay dos casos donde se ver a la impresora imprimir bien por un tiempo, luego saltear algunas pginas y luego imprimir bien nuevamente por un tiempo. El primer caso es cuando el flujo de control no est configurado apropiadamente entre el ordenador y la impresora. Este es un problema nicamente con las impresoras conectadas por RS/232, ya que por RS/422, paralelo e impresin remota, todo el flujo de control est dentro del protocolo o el hardware. Para las impresoras conectadas por RS/232, es recomendable utilizar flujo de control por hardware siempre que sea posible. Con control de flujo por hardware, cuando el buffer de impresin en la impresora alcanza el lmite mximo, la seal de la impresora en una lnea tal como DTR cae. Cuando esto ocurre, si esta lnea de seal est conectada a la seal DCD del AIX, el ordenador suspender el envo de datos hasta que la lnea se levante nuevamente. Como esto es manejado por hardware, el envo de impresiones se detiene inmediatamente. Tan rpido como la impresora vaca el buffer (imprimiendo su contenido) hasta un lmite determinado, la seal DTR se levanta y el AIX comienza a enviar datos nuevamente. La consideracin importante en el control de flujo por hardware es reconocer qu lnea de seal es utilizada por la impresora para indicar el nivel del buffer y asegurarse que la lnea est conectada a la lnea DCD en el lado del AIX. En casos raros cuando se configura una impresora como dispositivo TTY, debe utilizarse el flujo de control RTSCTS. Cuando el ordenador y la impresora son configurados con control de flujo por software (tambin llamado control de flujo XON/XOFF), la impresora seala que el buffer alcanz el lmite mximo enviando un carcter XOFF en la lnea TxD de la impresora, que es recibida en la lnea RxD del ordenador. El ordenador debe continuar enviando de a un carcter por vez hasta que recibe una cantidad de caracteres XOFF antes de detener el flujo de datos. Una vez que el buffer de la impresora es vaciado hasta el lmite mnimo, la impresora enva una seal XON para decirle al ordenador que contine el envo de datos. Este procedimiento tiene un retraso interno, y con impresoras lentas se pueden provocar saturaciones del buffer y prdida de datos. Se pueden cambiar el tamao del buffer de salida de la impresora en el controlador de dispositivos o cambiar los parmetros para reducir el retraso en la respuesta del XOFF, pero es recomendable que se cambie a control de flujo por hardware si es posible. Para cambiar la cantidad de caracteres XOFF que el manejador espera, se debe utilizar el men rpido smitty devices y cambiar el parmetro RECEIVE trigger level de la impresora de 3 a 1 El segundo caso se da cuando el retraso est mal para impresoras paralelas, o el tamao del Pgina 242 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

buffer del controlador de dispositivos es muy grande para la impresora. Para plotters e impresoras paralelas lentas, hay un parmetro llamado Microseconds to delay between characters que puede ayudar a evitar este tipo de problemas. Para cambiar el tamao del buffer de transmisin de una impresora serial, utilice smitty devices y modifique el TRANSMIT buffer count de la impresora.

6.1.5.5 Hay problemas imprimiendo grficos? Si se est intentando imprimir archivos de grficos directamente, ser necesario encontrar un filtro que convierta los grficos a PCL o PostScript, o utilizar un programa como un navegador o xv para visualizar el grfico e imprimirlo desde ah. Esta es una buena solucin para imprimir en impresoras PostScript. Si los grficos estn en un documento PostScript, entonces es probable que el problema sea una incompatibilidad entre la aplicacin que cre los datos y la impresora, o se pas el archivo PostScript a travs de un filtro de texto ASCII que dividi el archivo en base al ancho o agreg caracteres extra. Si el archivo es un PCL formateado, el problema ms comn es que cuando el archivo es impreso a travs de una cola de texto ASCII, el ancho de lnea sea truncado por el filtro de texto. Es importante imprimir estos archivos en modo directo y decirle a la impresora que aada los retornos de carro a los avances de lnea.

6.1.5.6 El tipo de impresora es el correcto? Imprimir con el tipo de impresora errneo para el data stream puede causar varios diferencias. Es un error comn creer que todas las impresoras lser son impresoras PostScript. No es as. PostScript es generalmente una opcin para una impresora lser o de otro tipo. La impresin PostScript es similar al archivo visto por pantalla? Si la salida en la impresora es similar al archivo visto con los comandos pg o more, entonces el problema es que la impresora no soporta PostScript, o se envi un archivo PostScript a una impresora o cola de impresin ASCII, que a su vez le envi a la impresora comandos para que imprima texto. Se puede solucionar el primer caso utilizando una impresora PostScript, o en algunos casos, utilizar un filtro como GhostScript para convertir PostScript a PCL u otro formato. En el segundo caso, se puede solucionar creando una cola PostScript para trabajos de impresin PostScript. Hay smbolos inesperados en la salida? En este caso, la mayor parte de la impresin es correcta, pero hay caracteres de control en el principio o a lo largo del texto. Los caracteres de control para una impresora pueden ser impresos como smbolos en otra impresora. Un buen ejemplo sera imprimir un archivo creado para una impresora Epson injet en un impresora HP injet. Esto es especialmente verdadero si el archivo fue creado en una aplicacin Windows donde a veces los caracteres son impresos como grficos. En archivos creados en AIX, si se utiliza una impresora virtual equivocada en un subsistema PowerPC, o el tipo de impresora equivocado en un subsistema System V, los caracteres de control definidos para inicializar la impresora pueden exhibir este comportamiento.

6.1.6 El espaciado es incorrecto


La salida contiene el texto esperado y puede ser legible, pero el texto aparece en un formato inesperado, como:

Pgina 243 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Espaciado doble Sin margen izquierdo

6.1.6.1 Espaciado doble Si la salida tiene espaciado doble, esto indicar que se imprimi un archivo que contiene retornos de carro en una impresora virtual o impresora de System V que aade los retornos de carro en los avances de lnea. La solucin es imprimir en modo directo, o utilizar un filtro para quitar los retornos de carro antes de encolar el trabajo para que sea impreso. 6.1.6.2 Sin margen izquierdo Si se imprime un archivo que comienza con tabulados al principio de algunas lneas, pero estas lneas son impresas en el margen izquierdo, entonces los tabulados no son convertidos a espacios o no son manejados apropiadamente por la impresora. Este problema es improbable que ocurra en un subsistema PowerPC, porque por defecto convierte los tabulados en ocho espacios. En un subsistema System V, si los tabulados de la impresora no son correctos, deben ser fijados cada ocho espacios. Se puede forzar que el servicio de impresin de System V no enve los tabulados, utilizando la opcin -tabs stty de la siguiente manera:
# lpadmin -p printer-name -o stty=-tabs

6.1.7 La impresin con una fuente incorrecta


El tamao y tipo de fuente depende de varios puntos: El archivo es PostScript o PCL formateado? Cual es la fuente por defecto de la impresora? Que fuentes estn instaladas en la impresora? El programa interfase o el backend de impresin fijan la fuente? Como est configurada la variable LANG?

6.1.7.1 El archivo es PostScript o PCL formateado? Con archivos PostScript o PCL formateados, las fuentes son especificadas dentro del documento. Es posible que la fuente requerida no est disponible en la impresora. Las alternativas son cambiar la fuente en el documento, bajando la fuente a la memoria flash en forma semi-permanente, o bajar la fuente con el trabajo de impresin. Para fuentes PostScript, la fuente es especificada de la siguiente manera:
/Times-BoldItalic findfont

Como los archivos PostScript contienen slo texto ASCII, se pueden cambiar con un editor por la fuente disponible en la impresora.

6.1.7.2 Cul es la fuente por defecto de la impresora? Si el programa interfase o el backend de impresin no fijan la fuente, entonces ser utilizada la fuente por defecto de la impresora. El mtodo para ver la fuente por defecto difiere segn la impresora. Se debe revisar el manual de referencia de la impresora para ms detalles. Otra opcin es agregar un comando para fijar la fuente en el script interfase o en el programa backend. Cuando se utiliza el subsistema System V, esto se puede realizar con comandos echo en el script interfase, Pgina 244 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

similares a los siguientes:


echo \033(s3T echo \033(s15H

Para el subsistema de impresin PowerPC, cuando se utilizan impresoras virtuales, la configuracin de la fuente es una parte de la configuracin de la impresora virtual. Normalmente, hay una seleccin limitada de fuentes disponibles. Para impresoras PCL, las fuentes disponibles son utilizadas definidas por el atributo mU, eP, o eT de la impresora virtual. Siempre es posible aadir un comando de fuente al final del atributo de inicializacin de la impresora ci.

6.1.7.3 Qu fuentes estn instaladas en la impresora? En las secuencias de configuracin o prueba de la mayora de las impresoras, hay un mtodo para imprimir las fuentes disponibles. En las impresoras actuales, hay normalmente una gran seleccin de ms de 60 fuentes disponibles, y cubren la mayora de las necesidades. Cuando una fuente requerida no est disponible en la impresora, se debe usar alguno de los mtodos para bajar fuentes, segn el subsistema de impresin utilizado.

6.1.7.4 El programa interfase o el backend de impresin fijan la fuente? En los subsistemas de impresin de UNIX, los conjuntos de caracteres, estilos y fuentes pueden ser fijados una vez al comienzo por el programa interfase o el backend de impresin. En System V, las fuentes son fijadas por el script interfase. Para el script interfase estndar, la variable de ambiente CHARSET es utilizada para determinar el conjunto de caracteres requerido. Si CHARSET es activada, es pasada al filtro lp.set como el quinto parmetro. El lp.set verifica si el conjunto de caracteres existe en la base de datos terminfo de la impresora, y si est, enviar desde la base de datos el comando para inicializar la impresora. Esto slo funcionar con tipos TERM donde el conjunto de caracteres es definido. Cuando se utilizan scripts o interfases del fabricante de la impresora basadas en el script /usr/lib/hpnp/hpnpIS.model, el conjunto de caracteres es elegido haciendo un echo de una secuencia de comandos. Por ejemplo, en el script hpnpIS.model, las siguientes lneas seleccionan el conjunto de caracteres:
echo \033)0B\c

El comando utilizado para fijar el pitch (cantidad de caracteres por pulgada) en 12 es:
echo \033(s12H\033)s12H\c

Para realizar cambios en los conjuntos de caracteres no soportados por el script, se debern agregar cambios al script interfase. En este caso, el usuario elige el pitch con el comando lp -o pitch=condensed o similar. En las impresoras virtuales PowerPC, la impresora es inicializada por las secuencias del atributo ci. Estas son fijadas desde SMIT, desde el Administrador del Sistema basado en Web, o con el comando lsvirprt. Los usuarios pueden seleccionar el estilo y pitch de la impresin con qprt -s estilo p pitch. Para que soporte tamaos o estilos de fuente no soportados por la impresora virtual hace falta una adaptacin especial. Para impresoras PCL, esto se hace con el atributo mU.

6.1.7.5 Qu fija la variable LANG? Para el subsistema de impresin PowerPC utilizando impresoras virtuales, la variable de instalacin LANG fijar la tabla de traduccin de entrada para una impresora virtual en particular. Esto muestra el contenido del atributo _X: Pgina 245 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

# lsvirprt -q asc -d lp0 -a X Name Description Value _X CODE PAGE of print file ISO8859-1

El cdigo de pgina por defecto para Estados Unidos es ISO8859-1. Uno de los problemas que se experimenta es que los archivos con caracteres de lneas no se imprimen correctamente cuando se utiliza este cdigo de pgina. Para imprimir archivos ASCII de texto que contienen caracteres que dibujan lneas, especifique el cdigo de pgina IBM850 para cambiar el atributo X, o utilice el siguiente comando:
$ qprt -XIBM850 -Ptext /tmp/testfile

6.1.8 El trabajo de impresin pide un tamao de papel equivocado


Para impresoras PCL u otras impresoras ASCII, se debe revisar que el tamao del papel por defecto sea fijado correctamente en la impresora virtual o en el script interfase. Luego, se debe verificar que el comando para el tamao del papel no est incluido en el archivo. Para archivos PostScript, el tamao del papel a menudo es definido dentro del archivo de impresin, y poco se puede hacer en la impresora virtual o script interfase para cambiarlo. Se debe volver a la aplicacin que gener el archivo.

6.1.9 El trabajo de impresin por red falla


Cuando se imprime por servidores de impresin de red e impresoras de red, el objetivo en la resolucin de problemas es aislar el problema entre el cliente y el servidor y luego realizar una determinacin de problema local.

6.1.9.1 Los trabajos de impresin quedan encolados en la cola local Como el trabajo est an encolado en la cola local (cliente), se puede asumir que el trabajo fue rechazado por el sistema remoto (servidor), o que el trabajo no lleg. El cliente puede comunicarse con el servidor? Antes de buscar problemas especficos de impresin, se debe verificar que hay una buena conexin de red entre el cliente y el servidor. Se debe poder hacer un ping al servidor desde el cliente por direccin IP y por nombre. Si el ping no es satisfactorio por direccin y nombre, entonces la impresora no funcionar. Si el ping no responde siquiera por direccin, entonces se debe solucionar el problema de red o asegurarse que el cliente y el servidor estn encendidos y conectados a la red. Hay problemas de resolucin de nombre? Como el cliente rembak y el servidor lpd pueden hacer un llamado por nombre, es importante que tanto el cliente como el servidor puedan reconocer al otro no slo por direccin IP sino tambin por nombre. Si se est utilizando DNS, entonces use el comando nslookup para verificar la resolucin por direccin y por IP. Si no se est utilizando DNS, entonces se debe usar el comando host en lugar del nslookup. Si los resultados no son apropiados, o si no se obtiene una respuesta, entonces se debe cambiar o aadir los nombres al DNS o al archivo /etc/hosts. El daemon lpd est activo en el servidor? Si el servidor es un sistema AIX utilizando un subsistema de impresin PowerPC, entonces se Pgina 246 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

puede verificar que el lpd est activo utilizando el siguiente comando:


# lssrc -s lpd

Si no est activo, se puede iniciar con:


# startsrc -s lpd

o desde el men de SMIT para manejo de subsistemas de impresin remota. Si el servidor es un sistema AIX utilizando un subsistema de impresin System V, entonces verifique primero que el scheduler est activo con el comando lpstat:
# lpstat -r

Si est activo, entonces utilice el comando ps de la siguiente manera:


# ps -ef | grep lpNet

En otros servidores, se debe revisar que el servidor lpd acepte trabajos. El cliente tiene permisos para imprimir en el servidor? Para servidores PowerPC, esto significa que el archivo /etc/hosts.lpd en el servidor contiene un lnea para el cliente, o tiene el smbolo + para permitir todos los clientes. Para otros servidores de impresin, verifique el manual del servidor para configurar los permisos de clientes. Para los subsistemas PowerPC, el allow=all slo permite usuarios locales. Para permitir todos los usuarios remotos, configure el valor allow con all!all. Coinciden los protocolos de red? Si el servidor es una impresora de red, se debe verificar que soporte impresin LPD, o que se est utilizando el tipo de impresin en AIX que soporte el protocolo que conversa con la impresora. Recolecte mensajes de error y logs Se deben buscar mensajes de error que indiquen un problema. En el subsistema de impresin PowerPC se puede activar el log con rastreo remoto (logging with remote computing) para ayudar a solucionar estos problemas. Se puede hacer un trace en la red para ver si hay algn mensaje de error identificable en la salida. Los flags son compatibles? Algunos servidores de impresin pueden soportar flags adicionales como el flag o y otros no. Los subsistemas PowerPC de impresin remota utilizan una cantidad de flags no-estndar que pueden ser ignorados, rechazados o utilizados incorrectamente por otros servidores de impresin. Es importante fijar el tupo de servidor a BSD o ATT si no se utiliza un servidor de impresin remota AIX PowerPC. Para imprimir desde PowerPC a System V, utilice el valor ATT.

Verifique si el usuario recibi un correo electrnico o un mensaje El texto del correo a menudo contiene la informacin necesaria para diagnosticar el problema. El archivo de control es enviado en el orden correcto? En AIX 4.3, el sistema de impresin introduce la capacidad de enviar el archivo de control LPD antes del trabajo de impresin. Esta capacidad no es soportada por todos los servidores, pero puede ayudar con la velocidad de impresin de alguno de ellos. Cuando se configura una impresora remota, se debe verificar que este valor este fijado correctamente. Hay suficiente espacio en el servidor? Pgina 247 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Algunos trabajos son rechazados por el servidor porque no hay suficiente lugar para almacenar el archivo. En este caso, el archivo puede ser tan grande que un trace es casi imposible. Este problema es fcilmente identificable si slo los trabajos de impresin muy grandes no son movidos al servidor remoto. Los permisos para LPD son correctos en el servidor? Ocurre a menudo que los permisos del daemon lpd o del directorio de spool son cambiados por error y el daemon no puede guardar archivos. Verifique el usuario que ejecuta el lpd, y los permisos de archivo en el daemon y el directorio /var/spool/lpd. iptrace muestra mensajes de error? A veces el servidor devuelve un mensaje de error, que puede ser visto en el archivo iptrace y que ayudar a identificar la causa del problema. El iptrace muestra mensajes de aceptacin negativos? Despus de cada requerimiento del cliente, el servidor debe devolver un byte con un valor cero. Esto puede ser visto en la salida del iptrace. Si este valor es distinto a cero, entonces el servidor est enviando un mensaje de error, a veces llamado aceptacin negativa (negative acknowledgement o NACK), al cliente. El subsistema de impresin PowerPC asume que el servidor no est listo, y cambiar el estado a DOWN. El subsistema System V reintentar despus de un perodo de espera especificado, una cantidad de veces segn los valor fijados en el archivo Systems.

6.1.9.2 Est configurado el tiempo de espera para la impresin remota con System V? Cuando se utiliza la impresin remota con el subsistema de impresin System V, se debe verificar que est configurado el tiempo de espera (timeout) para el sistema en el que se est imprimiendo con el comando psystem. Para fijar el timeout en 2 minutos:
# lpsystem -T 2 -p printer-name

6.1.9.3 Los trabajos de impresin quedan en la cola remota Si los trabajos de impresin quedan en la cola remota, entonces la conexin entre el cliente y el servidor fue satisfactoria. En este caso, se debe buscar un problema local en el sistema servidor.

6.1.9.4 Los trabajos de impresin desaparecen Quizs el problema ms frustrante es cuando el trabajo parece simplemente desaparecer. Esto puede ser causado por flags que son aceptados por el lpd del sistema remoto, pero son incompatibles con la impresora o la impresora virtual en el servidor, o un archivo que es incompatible con la impresora en el servidor. Desactivar la cola en el sistema remoto Desactivando la cola en el sistema remoto, se puede descubrir algunas cosas. Primero se debe verificar que el trabajo de impresin fue encolado en el servidor. Si no es as, entonces se puede utilizar iptrace para verificar que haya salido del cliente. Si fue transferido, pero no qued encolado, entonces el daemon lpd tiene algunos problemas pasando el trabajo al subsistema de impresin. Si el rastreo muestra que el trabajo nunca sali del cliente, entonces el problema queda limitado al cliente. Si el archivo es encolado en el servidor, entonces se puede verificar si los flags pasados al servidor son vlidos, y si el archivo se imprime cuando es encolado localmente.

Pgina 248 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Los flags son correctos? Hay dos lugares en donde se pueden encontrar los flags. El primero es el archivo de control en el iptrace. El segundo depende del subsistema de impresin. En el subsistema PowerPC, se puede encontrar en el archivo de descripcin del trabajo en /var/spool/lpd/qdir. En System V, los flags pueden encontrarse en el archivo /var/spool/lp/tmp/printer-name/printid-0. El archivo se puede imprimir localmente en el servidor? El nombre de la copia del archivo en el servidor AIX puede encontrarse en el mismo archivo de descripcin mencionado en el punto anterior. Se debe copiar este archivo a /tmp/testfile. Luego active la cola en el servidor. El trabajo de impresin desaparecer nuevamente, o se habr descubierto un problema de tiempos. Ahora imprima una copia del archivo guardado en /tmp/testfile sin flags. Si imprime bien, entonces el problema no est en el archivo y se puede intentar imprimir con los flags encontrados en el paso anterior. A menudo, ser necesario utilizar el flag -o con enq o lp para utilizar los flags capturados. Si el archivo no es impreso, entonces hay un problema de impresin local con el archivo, y se podrn utilizar los pasos para determinar problemas de impresin locales.

6.2 Tcnicas de resolucin de problemas comunes


Esta seccin describe alguna de las tcnicas de resolucin de problemas ms comunes que se pueden utilizar en AIX.

6.2.1 Utilizando lptest para generar archivos de impresin


El comando lptest es una excelente herramienta para generar una salida conocida que pueda ser impresa. Genera un modelo de prueba por la salida estndar y puede ser usado direccionando la salida a un comando de impresin, o redireccionndolo a un dispositivo. La sintaxis del comando es:
$ lptest columnas lneas

Por ejemplo, para generar un archivo de 20 columnas de ancho por 5 lneas de largo, se debe utilizar el siguiente comando:
$ lptest 20 5 !"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 %&'()*+,-./012345678

Este comando es til para asegurar que una impresora tenga configurados el ancho de impresin y largo de pgina correctos, porque se pueden generar exactamente la cantidad de filas y columnas que quepan en una pgina. En otros casos, se puede generar una pequea cantidad de filas cortas para verificar si hay un efecto de escalera en la impresora. Para imprimir la prueba, utilice pipe para dirigir la salida del comando al comando de impresin:
$ lptest 10 5 | lp -d laser1

Para direccionar la salida a un dispositivo de impresin, utilice el siguiente comando:


$ lptest 15 5 > /dev/lp17

Pgina 249 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.2.2 Use enscript para generar PostScript


El comando enscript debe ser instalado con el fileset bos.txt.ts. Este comando genera archivos PostScript desde archivos de texto ASCII. Se puede combinar la salida del comando lptest con el enscript para probar impresoras PostScript. Use el flag -d para especificar la cola de impresin.
$ lptest 10 10 | enscript -d ps1

El comando enscript puede brindar capacidades adicionales, como ttulo de pgina, fuentes especiales, e impresin 2-up.

6.2.3 Use splp para ver los dispositivos especiales


El comando splp muestra las caractersticas de un dispositivo de impresin. Para una impresora serial, muestra adems las caractersticas del puerto, como el baud rate. Si hay problemas con archivos volcados directamente al puerto, se debe intentar configurar el controlador de dispositivo para que no altere los archivos (modo passthrough) de la siguiente manera:
# splp -p+ lp0

Ejemplo de la salida de splp para una impresora paralela:


# splp lp0 device = /dev/lp0 (+ yes ! no) CURRENT FORMATTING PARAMETERS (ignored by qprt, lpr, and lp commands) Note: -p + causes the other formatting parameters to be ignored. -p ! pass-through? -c + send carriage returns? -l 64 page length (lines) -n + send line feeds? -w 80 page width (columns) -r + carriage rtn after line feed? -i 0 indentation (columns) -t ! suppress tab expansion? -W ! wrap long lines? -b + send backspaces? -C ! convert to upper case? -f + send form feeds? CURRENT ERROR PROCESSING PARAMETERS -T 300 timeout value (seconds) -e ! return on error?

6.2.4 Imprimiendo a un archivo


Imprimir a un archivo es una de las tcnicas ms tiles para probar como modifican un archivo de impresin los programas interfase, los backends y los filtros. Como en cada subsistema de impresin se realiza de distinta forma, es tratado en forma separada.

6.2.5 Imprimiendo directamente al archivo del dispositivo especial


Si la cola continuamente se cae o se desactiva, el problema puede estar en el cableado o en el controlador de dispositivo. Para imprimir un archivo directamente al dispositivo, se puede utilizar el comando cat y redireccionar la salida al dispositivo de la siguiente manera:
# cat /etc/hosts > /dev/lp32

Si falla, entonces la conexin con la impresora es incorrecta, o est daada. Si se presiona Ctrl-C, y el mensaje en pantalla hace referencia a Cant create device, es un indicio de que la conexin serie no est recibiendo una seal de la lnea CTS del ordenador. Intente unir RTS y CTS con un jumper para ver si soluciona el problema. Si es as, entonces se debe arreglar el cableado. Si se obtiene un mensaje de que el dispositivo est ocupado, utilice el comando fuser para encontrar el Pgina 250 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

proceso que dej la impresora abierta, de la siguiente manera:


# fuser /dev/lp12

Cuando se imprimen archivos formateados directamente al dispositivo, ser necesario utilizar splp para fijar el controlador en modo directo (passthrough), como se describe en el punto anterior. Algunas aplicaciones abren el archivo /dev/lp## directamente e imprimen el archivo. Esto seguramente funcionar bien, pero probablemente ponga un lock en el archivo, por lo que el scheduler no podr utilizar el dispositivo de impresin.

6.2.6 Imprimiendo directamente en impresoras de red


6.2.6.1 Imprimiendo directamente en una impresora conectada a LPD Se puede usar rembak para imprimir directamente al LPD en otro sistema, pero slo con el usuario root o un miembro del grupo printq. Guarde el archivo que se quiere imprimir, y utilice el flag -S para designar la direccin IP del servidor y el flag -P para especificar el nombre de la impresora en el servidor. El comando rembak no puede actuar como un filtro ya que no acepta standard input. Por ejemplo, para imprimir en el servidor net27 en una cola llamada ASCII, slo root puede usar el siguiente comando:
# /usr/lib/lpd/rembak -S net27 -P ASCII /tmp/testfile

6.2.6.2 Imprimiendo directamente en una impresora conectada a HP JetDirect AIX tiene dos comandos para imprimir a impresoras HP JetDirect. En el subsistema PowerPC, se usa el comando /usr/lib/lpd/pio/etc/piohpnpf para enviar trabajos a la impresora. En el subsistema System V, el comando es /usr/lib/hpnp/hpnpf. El nico flag necesario para pruebas es el -x, que especifica el nombre o direccin IP de la impresora o puerto 0 de la caja JetDirect. Esto enviar datos al puerto 9100. El siguiente ejemplo muestra los comandos de cada subsistema de impresin:
# lptest 10 10 | /usr/lib/lpd/pio/etc/piohpnpf -x laser42.biguys.myco.com # lptest 20 10 | /usr/lib/hpnp/hpnpf -x laser42.bigguys.myco.com

6.2.6.3 Telnet a impresoras JetDirect Para impresoras o servidores de impresin HP JetDirect, se puede ingresar por telnet al puerto 9100 (o el nmero que corresponda). No hace falta usuario, y se puede escribir texto directamente. Una vez que termina, se debe topear la secuencia de escape (normalmente Ctrl-[) y la impresora imprimir el texto. Por ejemplo:
# telnet 150.1.1.4 9100 # Trying... Connected to 150.1.1.4 Escape character is ^] Testing to see if this prints Line two ^] Presiona la tecla ctrl-] telnet> quit Connection closed

Debera imprimir lo siguiente:

Pgina 251 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Testing to see if this prints Line two

6.2.7 Utilizando iptrace para rastrear una impresin de red


Las dos herramientas de rastreo de red ms usadas en AIX son iptrace y tcpdump. Mientras tcpdump es til para determinar los protocolos y la cantidad de datos que pasa por la red, iptrace es el ms til para asuntos de impresin porque se pueden ver tanto el proceso de inicio de la comunicacin (handshaking), como los datos tal como pasan entre el cliente y el servidor. Es adems la nica herramienta que puede ser usada para capturar el archivo de control LPR enviado al servidor. Para usar iptrace en temas de impresin, primero se debe saber cual es el puerto TCP/IP que la transferencia utiliza. Cuando se usa impresin remota estndar, el puerto usual es el 515. Para el protocolo HP JetDirect, el puerto es el 9100, excepto para las cajas JetDirect EX con mltiples puertos, que utilizan los puertos 9101 y 9102. Para los servidores de terminal, se puede ver el puerto durante la configuracin. El formato del comando iptrace que se debe usar para rastrear impresiones es:
# iptrace -p puerto -a -b -s cliente -d servidor archivo.trc

Intente imprimir con un trabajo lo ms pequeo posible (para reducir el tamao de la muestra) y observe el problema. Una vez que el trabajo de prueba fue transferido, verifique que el archivo aumento su tamao ms all de los 11 bytes que tena al principio. Si no aument de tamao, entonces es posible que haya mltiples adaptadores de interfase y ser necesario utilizar el flag -i para especificar un adaptador en particular. Asumiendo que el archivo aument su tamao, encuentre el id del proceso iptrace, y luego use ipformat para formatear la salida. El siguiente ejemplo muestra un ejemplo de la captura de la impresin remota estndar entre los servidores prtsrv y netprt01:
# iptrace -p 515 -a -b -s prtsrv -d netprt01 /tmp/test.trc print from the users application # ps -ef | grep iptrace # kill PIDnumber # ipreport -n /tmp/test.trc > /tmp/test.rpt # pg /tmp/test.rpt

6.2.8 Capturando archivos


Los archivos pueden ser capturados en varios lugares a lo largo del camino entre el que emite el trabajo de impresin y la impresora. Esto es necesario para encontrar dnde ocurren los errores.

6.2.8.1 Capturando el archivo antes de que pase por la cola Frecuentemente, es importante saber si los problemas estn en el archivo, en los parmetros de impresin o en la impresora virtual. El usuario puede no saber cmo es el archivo. Esto es as especialmente si el trabajo fue creado por una aplicacin que lo enva a la impresora. Estos pasos muestran como capturar el archivo: 1. Desactive la cola:
# disable testq

2. Enve el trabajo a la cola. Esto generalmente se hace desde una aplicacin. Por Pgina 252 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

ejemplo, usted usara el siguiente comando en Netscape:


# lpr -P testq

Verifique que el trabajo est encolado:


# lpstat -vtestq Queue Dev Status Job Files User PP % Blks Cp Rnk ------- ----- --------- --- ------------------ ---------- ---- -- ---testq lpx DOWN QUEUED 66 STDIN.76636 root 1 1 1

3. Encuentre el nombre del archivo encolado observando el archivo de descripcin del trabajo:
# ls /var/spool/lpd/qdir n0root:local$#@!iXyb n0root:testq$#@!kRMc n0root@rs9220a.itsc.austin.ibm.com:kristin$#@!iGUb

4. Haga un tail del archivo qdir para obtener el nombre del archivo encolado:
# tail /var/spool/lpd/qdir/n0r00t:test* -Ptestq STDIN.76636 root rs9220b 0 /var/spool/qdaemon/t0lkRMa 2

5. Copie el archivo a /tmp/testfile. La ltima lnea del archivo contiene el nombre:


# cp /var/spool/qdaemon/t0lkRMa /tmp/testfile

Examine el archivo e imprmalo con diferentes flags. Si la impresin es remota, ser necesario compararlo con el archivo que arriba al servidor.

6.2.8.2 Capturando un archivo despus de que pas por la cola Para capturar el archivo despus de que pas por la cola, imprima a un archivo.

6.2.8.3 Capturando un archivo tal como va por la red El comando iptrace puede utilizarse para capturar el archivo y los flags tal como van por la red desde el cliente hasta el servidor. Esto puede ayudar a determinar si el archivo est siendo enviado entero al servidor, y qu flags son enviados.

6.2.8.4 Capturando un archivo en el sistema remoto Si el sistema remoto o servidor es un AIX, entonces se puede desactivar la cola en el sistema remoto, y capturar el archivo de la misma forma que en la seccin Capturando un archivo antes de que pase por la cola. Si es un servidor de otro tipo, se debern utilizar herramientas apropiadas para ese servidor, o simplemente utilizar iptrace para observar como llega al servidor.

Pgina 253 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.2.9 Capturar el flag


A menudo, un flag que no es compatible con el sistema puede provocar que un archivo simplemente desaparezca. Esto ocurre cuando se imprime desde aplicaciones, desde mtodos de impresin de mainframe en VMS y OS/400, o desde clientes lpr de PC. Para capturar los flags, desactive la cola e imprima el archivo. Luego observe el archivo de control del trabajo.

6.2.9.1 Flags de System V En System V, los flags pueden encontrarse en /var/spool/lp/tmp/hostname/printid-0, en el archivo del requerimiento:
# disable junk # lp -d junk -m -L C -o land /etc/motd # ls /var/spool/lp/tmp/aix4prt/264-0 /var/spool/lp/tmp/aix4prt/264-0 # cat /var/spool/lp/tmp/aix4prt/264-0 C 1 D junk F /etc/motd N M O land locale=C flist='/etc/motd:880' P 20 t simple U heidi s 0000

Los flags pueden ser interpretados de la siguiente manera: C: Cantidad de copias a imprimir D: La cola de impresin elegida F: El archivo a imprimir N: Correo de confirmacin cuando se imprime O: Las opciones -o y otras P: Prioridad de la impresin t: Tipo de contenido U: Usuario que enva el trabajo

6.2.9.2 Flags de PowerPC En PowerPC los flags pueden encontrarse en el archivo de descripcin del trabajo ubicado en /var/spool/lpd/qdir:
# qprt -z+ -T"This title" -p12 -Pjunk /etc/motd # ls -l /var/spool/lpd/qdir total 3 -rw-rw---1 root printq 1304 Nov 13 09:56 n0root:junk$#@!nP7b # cat /var/spool/lpd/qdir/n0r* -TThis title-Pjunk This title root aix4prt 0 $#@!-z $#@!+ $#@!-p $#@!12 /etc/motd 0

Pgina 254 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Los flags que son listados debajo de las variables de ambiente son flags que son definidos por el comando enq. En este ejemplo, son el ttulo y la cola de impresin:
-TThis title-Pjunk

Los otros flags son aquellos enviados a travs del enq como las opciones o. Estos se ven en las lneas que comienzan con $#@!. En este ejemplo, son:
$#@!-z $#@!+ $#@!-p $#@!12

Este comando es equivalente a:


enq -o -z -o + -o p -o 12 -TThis title Pjunk

El otro mtodo para capturar flags es utilizar iptrace o la funcin de log del lpd, en el lpd PowerPC. En este caso, es necesario entender los flags que son soportados por el LPD RFC-1179. Los flags siempre aparecen en el archivo de control del trace. Los flags no definidos por el estndar son manejados como opciones -o para los tipos de trace BSD y ATT, o flags especiales de AIX nicamente para las impresiones de AIX. El siguiente es un ejemplo del archivo de control:
00000000 00000010 00000020 00000030 00000040 00000050 00000060 00000070 00000080 00000090 000000a0 48616978 64664134 66413436 61722f74 36393534 2d6a0a2d 2d6f2d5a 6f6f7440 6f744061 722f746d 3935340a 34707274 36366169 36616978 6d702f70 0a2d6f2d 6f300a2d 0a2d6f30 61697834 69783470 702f7069 0a50726f 78347072 34707274 696f726c 640a2d6f 6f2d4a0a 0a2d4e31 7072740a 72740a2d 6f726c66 6f740a66 740a5564 0a4e2f76 66625f31 700a2d6f 2d6f300a 0a2d5a72 2d74726f 542f7661 625f3136 |Haix4prt.Proot.f| |dfA466aix4prt.Ud| |fA466aix4prt.N/v| |ar/tmp/piorlfb_1| |6954.-o-d.-op.-o| |-j.-o0.-o-J.-o0.| |-o-Z.-o0.-N1.-Zr| |oot@aix4prt.-tro| |ot@aix4prt.-T/va| |r/tmp/piorlfb_16| |954. |

Los primeros flags del archivo son flags del estndar: Haix4prt: Nombre del host cliente Proot: Usario que gener el trabajo fdfA466aix4prt: Nombre del archivo temporal para guardar datos - f: Identifica el archivo como Texto Plano o Archivo Formateado - dfA: Identifica que ste es el archivo de datos - 466: Nmero de trabajo en el cliente - aix4prt: Nombre del host cliente UdfA466aix4pr: Desvincular este archivo cuando termina (es un archivo temporal) Los otros flags en el archivo de control estn divididos entre, por ejemplo, los flags que comienzan con -o, y los flags enq. Los flags enq son aquellos que se encuentran dentro de man enq. Muchos de los flags -o y otros flags son de la impresora virtual, o del qprt cuando son usados entre dos sistemas AIX. Pero son transferidos como otros flags, porque el LPD en el servidor pasa los flags al enq para comenzar el proceso de impresin en el servidor AIX. De la siguiente manera son cargados los flags en el log, cuando el log del lpd es activado:
lpd[56734] lpd[56734] lpd[56734] lpd[56734] lpd[56734] lpd[56734] doit: doit: doit: doit: doit: doit: cfn=[cfA929tesch.972600121]. get a line [Htesch]. get a line [Proot]. get a line [fdfA929tesch]. get a line [UdfA929tesch]. get a line [NSTDIN.6404].

Pgina 255 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.2.10 Utilizando script para capturar las entradas del usuario


Cuando se usa cualquier comando desde la lnea de comandos cuya salida es ms grande que lo que entra en una pantalla, se puede utilizar el comando script para capturar lo que se teclea y la salida del programa. Esto es muy til si se est ejecutando un script de instalacin de impresora como el /usr/lib/hpnp/hpnpcfg. Para usar el shell script, se deben seguir las siguientes instrucciones: 1. Ejecute el shell script y designe un archivo de log:
# script /tmp/hpnpcfg.log

2. Ejecute el comando que se quiere diagnosticar:


# /usr/lib/hpnp/hpnpcfg

3. Luego de que termina el programa, salga del script tipeando exit:


# exit Script command is complete on Mon Oct 23 19:17:23 CST 2000

4. Imprima el log o valo en pantalla:


# lp -d net12 /tmp/hpnpcfg.log

6.2.11 Utilizando fuser para encontrar procesos


El comando fuser muestra una lista de los ID de procesos que estn asociados con un archivo. Como los controladores de dispositivo en UNIX son representados por archivos, es posible encontrar el proceso que est imprimiendo actualmente en un dispositivo utilizando fuser, de la siguiente manera:
# fuser /dev/lp0 /dev/lp0: 12808 45590 # ps -ef | grep 12808 root 12808 7756 0 13:46:36 - 0:00 /usr/lib/lpd/piobe /etc/motd root 45590 12808 0 13:46:36 - 0:00 /usr/lib/lpd/pio/etc/pioout

Esto puede ser til cuando se intenta liberar una cola de impresin que dej de funcionar.

6.2.12 Utilizando el comando echo en scripts shell


La mayora de las impresiones en System V son realizadas a travs de scripts shell, y scripts shell simples pueden ser escritos para impresiones PowerPC para diagnosticar cosas como por ejemplo flags errneamente pasados. Como la salida del script shell es enviada generalmente a la impresora o a destinos desconocidos, cuando se utiliza el comando echo, se debe dirigir a un archivo conocido.

6.3 Resolucin de problemas en el subsistema de impresin System V


Esta seccin lista las tcnicas de resolucin de problemas que se aplican nicamente al subsistema de impresin System V en AIX.

Pgina 256 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.3.1 Problemas de permisos en archivos


Algunos de los permisos importantes que se deben verificar son: Los permisos de lpsched y lpNet son ---s--x--- y pertenecen a root:lp? Los filtros por defecto en /usr/lib/lp/bin son ejecutables? El programa interfase es ejecutable? Los permisos del archivo del dispositivo permiten que los usuarios impriman?

6.3.2 El servicio de impresin est activo?


Para verificar que el scheduler est activo, use el comando lpstat con el flag -r:
# lpstat -r scheduler is running

Para imprimir en servidores remotos, verifique que el lpNet haya sido iniciado:
# ps -ef | grep lpNet

Si el scheduler no est activo, intente reiniciarlo con:


# /usr/lib/lp/lpsched

No se debe iniciar separadamente el lpNet, ya que el lpsched lo inicia automticamente. Antes de hacer cambios mayores, desactive el scheduler con lpshut. Si los daemons no estn activos, verifique bien los permisos en los archivos, y asegrese que se verifico todo cambio realizado desde que estaban activos.

6.3.3 La impresora tiene los atributos correctos?


Es importante que la configuracin de la impresora tenga los atributos correctos tanto para el dispositivo de impresin local como para los atributos del spooler de impresin.

6.3.3.1 Dispositivo de impresin Verifique que los atributos de comunicaciones de los controladores de dispositivos serie o paralelo coinciden con los atributos configurados en la impresora.

6.3.3.2 Atributos de la impresora definidos en System V Los atributos en System V que deben coincidir con la impresora incluyen: Tipo de impresora Interfase de la impresora Tipo de contenido Otros atributos de la impresora que se deben revisar son los permisos para la impresora y para los formularios configurados con los flags de permitido y denegado en lpadmin. El permitido por defecto para una impresora es all, pero esto slo sirve para usuarios locales. Se deben revisar las

Pgina 257 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

pginas del man del lpadmin para manejar permisos de usuarios remotos. El valor para todos los usuarios de todos los sistemas es all!all.

6.3.4 Logs y archivos de estado


Hay una cierta cantidad de lugares en los que se deben buscar los logs.

6.3.4.1 Revise el correo Revise su casilla de correo para ver si recibi algn mensaje del usuario lp. Este puede orientar por donde comenzar a investigar el problema. Un ejemplo de un mensaje de error es el siguiente:
From lp Tue Oct 24 09:33:01 2000 Received: (from lp@localhost) by rs9220b.itsc.austin.ibm.com (AIX5.0/8.9.3/8.9.3) id JAA61332 for root@rs9220b; Tue, 24 Oct 2000 09:33:01 -0600 Date: Tue, 24 Oct 2000 09:33:01 -0600 From: lp Message-Id: <200010241533.JAA61332@rs9220b.itsc.austin.ibm.com> To: root@rs9220b.itsc.austin.ibm.com Content-Length: 173 Status: RO Subject: Status of lp request hp1-357 Your request hp1-357 destined for hp1 encountered an error while printing on printer hp1. Printing stopped with an exit code of 1.

En este caso, el problema es una variable LANG no soportada y el mensaje no ayuda mucho, pero en otros casos, este mensaje puede ser muy til.

6.3.4.2 Revise los logs en /var/lp/logs Hay tres archivos en este directorio: requests lpsched lpNet El archivo request se actualiza cada vez que alguien intenta imprimir. Contiene los flags por defecto, y otra informacin, como muestra este ejemplo:
= z C D F O P t U r s hp1-357, uid 0, gid 0, lid 0, size 110, Tue Oct 24 09:32:59 2000 hp1 1 hp1 /var/spool/lp/tmp/rs9220b/357-1 locale=en_US flist=':110' 20 simple root 0x0100

Pgina 258 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Esto muestra los id del usuario que imprimi, la fecha y hora en que fue impreso el trabajo, el id del trabajo, la prioridad, y el tipo de contenido. No dice mucho sobre qu est mal, aunque dice cmo fue ejecutado. Por ejemplo, este comando lp us el flag -r cuando fue ejecutado. El log lpsched informa cundo fue iniciado y detenido el lpsched, y todo error que haya ocurrido manejando procesos hijo o ejecutando scripts interfase:
Thu Oct 12 18:55:36 2000: UX:lpsched: INFO: Print services stopped. Thu Oct 12 18:55:44 2000: UX:lpsched: INFO: Print services started. Thu Oct 12 23:12:30 2000: UX:lpsched: ERROR: 0920-281 Received unexpected signal 33; terminating. Fri Oct 13 08:39:32 2000: UX:lpsched: INFO: Print services started. Fri Oct 13 11:08:28 2000: UX:lpsched: ERROR: 0920-271 Failed to fork child process (Resource temporarily unavailable). Thu Oct 12 18:55:36 2000: UX:lpsched: INFO: The network process has terminated.

El log lpNet muestra cuando programas de red como lpNet son llamados, y cuando las conexiones son establecidas con sistemas remotos. Este log muestra eventos cuando se intenta cancelar un trabajo que no se estaba imprimiendo en un sistema remoto:
10/24/00 10:37 c 12972 rs1230a.myco.com lpd retrying connection to rs1230a.myco. com 10/24/00 10:45 c 58614 rs1230a.myco.com ERROR: class=Fatal, type=Unix, trace=(contimeout/setjmp), Interrupted system call 10/24/00 10:45 c 58614 rs1230a.myco.com Abnormal process termination. 10/24/00 10:47 p 61398 <none> Got a hit. 10/24/00 10:47 p 61398 <none> Got a hit. lpExec 10/24/00 10:47 p 61398 <none> Started child for rs1230a.myco.com, pid = 50990 10/24/00 10:47 p 61398 <none> Into Polling loop. 10/24/00 10:47 c 50990 rs1230a.myco.com lpd starting (active)

6.3.4.3 Verificando el archivo pstatus El archivo /var/spool/lp/system/pstatus contiene una seccin de estado para cada una de las impresoras. A menudo, este archivo tiene una lnea con la ltima falla, como en este ejemplo:
========== net12 enabled accepting 972671048 971311069 NAK'd by remote lpd: waiting auto retry new destination

6.3.5 La variable LANG est configurada correctamente?


Un error interesante que puede ocurrir en algunas versiones de AIX, es que el nico valor para la variable LANG que funcione es el C locale. Cuando se imprime con LANG=en_US, el comando devuelve el siguiente error:
# lptest 10 10 | lp -d hp1 UX:lp: ERROR: 0920-054 There is no filter to convert the file content. TO FIX: Use the lpstat -p -l command to find a printer that can handle the file type directly, or consult with your system administrator.

Sin embargo, si se aade el flag -L C, el archivo es impreso sin errores:


# lptest 10 10 | lp -L C -d hp1 request id is hp1-362 (standard input)

Pgina 259 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.3.6 Trabajos remotos cancelados quedan encolados


Cuando se usa una impresora remota, y por alguna razn deja de imprimir cuando se cancela un trabajo, el trabajo estar visible para el lpstat pero en estado cancelado, como se ve en el siguiente ejemplo:
# lpstat -o all net12-359 root 110 Tue Oct 24 10:16:50 2000 canceled

En este caso, la solucin ms probable ser detener el scheduler y reiniciarlo, aunque puede ser posible matar el comando lpNet que est inutilizando el puerto.

6.3.7 Imprimiendo en un archivo


Direccionando la impresin a un archivo, se puede ver exactamente qu agreg la impresora virtual al archivo que est siendo impreso. Con el comando lpadmin se puede especificar un archivo de salida con la opcin -v. El siguiente procedimiento explica como se puede utilizar esto para diagnosticar un problema: 1. Crear un archivo en el directorio /dev. El archivo debe tener permisos para el usuario que realiza la prueba; por lo que se pueden fijar los permisos consecuentemente.
# touch /dev/lpx # chmod 600 /dev/lpx # chown lp:lp /dev/lpx

2. Crear una impresora a un archivo utilizando el tipo de impresora, el tipo de interfase y el tipo de conexin que se quiere diagnosticar:
# lpadmin -m standard -T hplaserjet -I simple -p fileq -v /dev/lpx

Esto puede dar un error u otra cosa si el permiso de lpx es fijado en 777, pero no es un problema. Para colas PostScript, ser necesario especificar el tipo PS-b, porque ste utiliza lp.cat, mientras que PS utiliza postio, que no imprime a un archivo, slo a una impresora:
# lpadmin -m PS -T PS-b -I PS -p fileps -v /dev/lpx

3. Ejecute los comandos para que la impresora acepte trabajos y active la impresora.
# accept fileq UX:accept: INFO: destination "fileq" now accepting requests # enable fileq UX:enable: INFO: printer "fileq" now enabled

4. Imprima en la impresora fileq con un trabajo de prueba y asegrese que hay datos en el archivo:
# lptest 5 5 | lp -d fileq -L C request id is fileq-594 (standard input) # ls -l /dev/lpx -rw-rw-rw- 1 lp lp 222 Nov 01 12:34 /dev/lpx # cat /dev/lpx

Pgina 260 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Cuando se revise el archivo, ser mejor utilizar vi y el comando od para poder ver las secuencias de escape.

6.3.8 Limpiando y comenzando de nuevo


No debera ser una necesidad limpiar todas las colas y empezar nuevamente, pero es posible que esto sea necesario si se est clonando un sistema.

6.3.8.1 Reiniciar los nmeros de trabajo del subsistema de impresin El nmero de trabajo para los trabajos locales es almacenado en /spool/tmp/host-name/.SEQF y contiene cuatro campos separados por dos puntos, de la siguiente manera:
1:999:1:598

Los primeros dos nmero son los lmites de los nmeros de trabajo. El siguiente nmero muestra donde comienza la secuencia de trabajo, y el ltimo (598) es el nmero del siguiente requerimiento de impresin. Para cambiar el nmero de secuencia, simplemente se debe cambiar el ltimo valor, y reciclar el subsistema de impresin con lpshut y lpsched.

6.3.8.2 Limpiando archivos de impresin viejos Si se estn sufriendo algunos problemas, se puede comenzar limpiando los archivos de requerimientos de trabajo. Primero, verifique el nombre de los trabajos y luego canclelos, de la siguiente manera:
# lpstat -o # cancel fileps-124

Si no se pueden cancelar los trabajos, elimine los archivos individuales de los siguientes directorios: /spool/tmp/host-name y /var/spool/lp/requests/host-name.

6.3.8.3 Limpiando impresoras viejas Intente utilizar primero el lpadmin para borrar las colas utilizando el flag -x:
# lpadmin -x fileps

Verifique si el archivo fue borrado, y si no es as, elimine los archivos del directorio y el programa interfase:
# lpstat -p fileps -l # rm -R /etc/lp/printers/fileps # rm /etc/lp/interfacers/fileps

6.3.8.4 Elimine los archivos temporales Los archivos de mensajes temporales a veces se acumulan en los directorios /var/spool/lp/tmp y /var/spool/lp/temp y subsiguientes subdirectorios. Utilice ls -lR /var/spool/lp/tmp para ver qu archivos estn de ms.

Pgina 261 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.3.8.5 Elimine archivos de log viejos Los archivos de log son almacenados en /var/lp/logs. Es conveniente hacer una copia de respaldo de los logs y luego copiar /dev/null sobre cada uno de los archivos para vaciarlos, o simplemente redireccionndoles nada, de la siguiente manera:
# > /var/lp/logs/lpNet # > /var/lp/logs/lpsched # > /var/lp/logs/requests

6.3.9 Desactivando los banners


En el subsistema System V, los banners (carteles) son controlados por el script interfase, la configuracin de la impresora y los flags de la lnea de comandos.

6.3.9.1 Configuracin de los banners Cuando se crea una impresora, no especifique banners. Si est creando o modificando una impresora con lpadmin, utilice el flag -o nobanner para especificar que no se desean banners. El archivo de configuracin en /etc/lp/printers/printer-name/configuration debe mostrar:
Banner: on:Always

El Always fuerza una pgina banner sin importar lo que el usuario especifique en el comando lp. Despus de ejecutar lpadmin -o nobanner, esta lnea cambiar por:
Banner: on

Esto no desactiva los banners, pero permite que el usuario seleccione no usar banners por medio del flag -o nobanner del comando lp.

6.3.9.2 Evitando los banners por lnea de comando Si el administrador activ la seleccin de banners para los usuarios con -o nobanner como se describe en el punto anterior, entonces el usuario puede evitar el uso de banners con el flag -o nobanner del comando lp, de la siguiente manera:
$ lp -o nobanner -d finetext

Por defecto, el comando lpr enviar un flag de la lnea de comando para que haya un encabezamiento de pginas. Para evitarlo, se puede utilizar lpr -h.

6.3.9.3 Evitando los banners con el archivo interfase Para las impresoras locales, encuentre la interfase en /var/spool/lp/admins/lp/interfaces que tiene el mismo nombre de las impresoras. El script debe tener una lnea que comienza con nobanner=no. Para encontrarla fcilmente en vi, utilice el comando find de la siguiente manera:
/^nobanner nobanner=no

Pgina 262 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Modifquelo por:
nobanner=yes

6.3.10 Resolviendo problemas de scripts interfase en System V


Muchos de los programas interfase de System V son scripts. Esto facilita la investigacin de problemas utilizando el comando echo, as como determinar el orden de los eventos en los programas locales, o determinar donde pueden ocurrir errores de formateo. Cada impresora local tiene un programa interfase en /etc/lp/interfaces basado en uno de los scripts modelo. Por ejemplo, si la impresora se llama hp1, la interfase ser /etc/lp/interfaces/hp1. Para verificar si el script hp1 es llamado, edite el script, y despus de la lnea que comienza con la palabra trap, ingrese estas dos lneas:
date >> /tmp/hp1.log echo "entered hp1" >> /tmp/hp1.log

Cambie los permisos de /tmp/hp1.log, para que todos los usuarios puedan escribir:
# chmod 755 /tmp/hp1.log

Ahora imprima en la cola hp1, y revise el log:


Fri Oct 27 13:33:40 CST 2000 entered hp1

Esto muestra que el script es invocado. Ahora se puede intentar utilizar esto para encontrar problemas que puedan ocurrir. Por ejemplo, si se obtiene el siguiente error, ser til saber si el problema est en el comando lp o en el script interfase:
# lp -o cpi=17 -d hp1 /etc/motd UX:lp: ERROR: 0920-056 The following options can't be handled: -o cpi= TO FIX: The printer(s) that otherwise qualify for printing your request can't handle one or more of these options. Try another printer, or change the options.

Revisando el log, se ver que el comando no fue registrado, por lo que el problema ocurre antes de ejecutar el script interfase, y por lo tanto parece que terminfo no fue revisado. Se puede usar este mtodo para verificar los argumentos pasados al script por lnea de comando o para verificar las variables de ambiente que fueron fijadas y pasadas por lpsched. Agregando las lneas en negrita al script puede ayudar a mostrar la informacin pasada:
## Check arguments ########### echo "Arguments are $*" >> /tmp/hp1.log parse () { echo "`expr \"$1\" : \"^[^=]*=\(.*\)\"`" echo "`expr \"$1\" : \"^[^=]*=\(.*\)\"`" >> /tmp/hp1.log

y
printer=`basename $0` request_id=$1 user_name=$2 title=$3 copies=$4 option_list=$5

Pgina 263 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

echo echo echo echo echo echo

printer: $printer >> /tmp/hp1.log request_id: $request_id >> /tmp/hp1.log user_name: $user_name >> /tmp/hp1.log title: $title >> /tmp/hp1.log "Number of copies: $copies" >> /tmp/hp1.log #options: $option_list >> /tmp/hp1.log

shift 5 files="$*" echo Filenames: $files >> /tmp/hp1.log

Los siguientes comandos echo ayudarn a diagnosticar problemas con los parmetros enviados a lp.set y pueden ser puestos en la subrutina internal_lpset:
internal_lpset () { echo "Inside internal_lpset" >> /tmp/hp1.log echo "LPSET parms are $1:$2:$3:$4:$5" >> /tmp/hp1.log echo "LPSET parms are cpi:lpi:width:length:character set" >> /tmp/hp1.log

Revise las variables de ambiente en cualquier lugar del script con:


env >> /tmp/hp1.env

o
set >> /tmp/hp1.env

Estas herramientas pueden extenderse hasta encontrar los problemas. La mayora de los scripts interfase tambin escribe a un archivo log, pero este log es eliminado cuando el script finaliza. Si se contina teniendo problemas, se puede comentar la lnea que elimina el log temporal, y luego de imprimir, revisar este archivo de log. Por ejemplo, en el backend JetDirect, se debe comentar la lnea que dice:
rm -f $LOGFILE

6.3.11 Revise los tiempos de espera en el archivo Systems para las colas remotas
Los tiempos de espera (timeouts) por defecto en versiones anteriores al AIX 5L V5.0 provocaban que las impresiones remotas quedaran indefinidamente esperando cuando haba saturacin en el servidor de impresin remoto. Verifique los tiempos de espera de las colas remotas revisando el archivo /etc/lp/Systems. Si no hay tiempos de espera configurados, la salida ser similar a la siguiente:
rs1230a.itsc.austin.ibm.com:x:-:bsd:-:-:-:-:-:

El siguiente archivo muestra un tiempo de espera de 1 minuto con 2 reintentos:


rs1230a.itsc.austin.ibm.com:x:-:bsd:-:1:2:-:-:

Si no est configurado el tiempo de espera, se puede fijar con lpsystem, de la siguiente manera:
# lpsystem -T 2 rs1230a.itsc.austin.ibm.com

6.3.12 Est bien ingresado el nombre del servidor en el archivo /etc/lp/Systems?


El archivo /etc/lp/Systems debe contener el nombre completo que el comando lpNet obtiene cuando solicita el nombre de un host. Haciendo pruebas, se verifica que si se coloca la direccin IP en este archivo se pueden enviar archivos al sistema, pero no recibirlos. Slo despus de ingresar Pgina 264 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

el nombre completo (con el dominio) se pueden recibir trabajos de impresin. Esta es la lnea en el archivo Systems. La primera lnea, fue reemplazada por la segunda:
rs1290a:x:-:bsd:-:1:2:-:-:ibm4312 rs1290a.itsc.austin.ibm.com:x:-:bsd:-:1:2:-:-:ibm4312

Se pueden ver algunos parmetros especficos de Systems con lpsystem:


# lpsystem -l rs1290b System: rs1290b Type: bsd Connection timeout: 1 minutes Retry failed connections: after 1 minutes Comment: jetdir

6.3.13 Ejemplos: solucionando problemas de impresin remota


Esta seccin muestra ejemplos de resolucin de problemas para trabajos de impresin LPD entrantes y salientes.

6.3.13.1 Ejemplo: desaparecen trabajos de impresin de red salientes Sntomas: Los trabajos para la impresora remota estn encolados, pero continan en estado de ejecucin. Cuando se intenta cancelarlos, permanecen en la salida del lpstat, pero en estado cancelado. Ejecutando el comando lpstat -o net12 para la impresora net12, hay un retraso de algunos segundos, y nada es impreso. Despus de detener el scheduler y reiniciarlo, se limpi el flag /etc/lp/logs/lpNet, y se ejecut nuevamente el comando lpstat -o net12. Esta es la salida del log lpNet:
10/27/00 11:12 p 7888 <none> Got a hit. 10/27/00 11:12 p 7888 <none> Got a hit. lpExec 10/27/00 11:12 p 7888 <none> Started child for rs1230a.itsc.austin.ibm.com, pid = 19322 10/27/00 11:12 p 7888 <none> Into Polling loop. 10/27/00 11:12 c 19322 rs1230a.itsc.austin.ibm.com lpd starting (active)

Cuando se revisa la tabla de procesos para el proceso 19322, se ve lo siguiente:


# ps -ef | grep 19322 root 19322 7888 0 11:12:19 - 0:00 lpNet

Este es un proceso hijo, generado por el lpNet padre, como muestra el ps:
# ps -ef | grep lpNet root 7888 45298 0 10:59:18 - 0:00 lpNet root 19322 7888 0 11:12:19 - 0:00 lpNet

El lpNet padre pertenece al proceso 45298 que es el scheduler:


# ps -ef | grep 45298 root 7888 45298 0 10:59:18 - 0:00 lpNet root 45298 1 0 10:59:18 - 0:00 /usr/lib/lp/lpsched

Revisando el archivo /etc/lp/Systems para ver si el servidor fue ingresado:


$ cat /etc/lp/Systems 9.19.129.12:x:-:bsd:-:3:10:-:-: rs1230a.itsc.austin.ibm.com:x:-:bsd:-:1:2:-:-:

Pgina 265 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Se revisa el archivo de configuracin para verificar que el nombre del servidor coincida:
$ cat /etc/lp/printers/net12/conf* Banner: on:Always Content types: simple Printer type: hplaserjet Remote: rs1230a.itsc.austin.ibm.com!TEXT Range: 3,8 Form feed: on

Comparando se verifica que el nombre del servidor es el mismo en ambos archivos. Se debe revisar la conexin al servidor:
$ ping rs1230a 0821-062 ping: host name rs1230a NOT FOUND

Revisando la lista de servidores se ve que el nombre del servidor fue modificado por rs1290a, por lo que se debe utilizar el comando lpadmin para modificar el nombre del servidor, pero se recibe el siguiente mensaje:
UX:lpadmin: ERROR: 0920-195 System "rs1290b" does not exist. TO FIX: Use the "lpsystem -l" command to list all known systems.

Por lo tanto, se debe ejecutar el comando lpsystem para agregar el nuevo servidor, y ejecutar nuevamente el lpadmin para cambiar el servidor.
# lpadmin -s rs1290a -p net12!TEXT

Despus de realizar esta modificacin, el comando lpstat -o net12 tiene una respuesta inmediata, pero el archivo no es impreso. Se recicla el servicio de impresin con lpshut y lpsched, pero el archivo todava no se puede imprimir. Se intenta desactivar la impresora, pero se obtiene un mensaje que dice que la impresora ya estaba desactivada. Luego de activar la impresora, el trabajo es impreso.

6.3.13.2 Ejemplo: se pierde un trabajo de impresin remoto entrante Sntoma: Un trabajo es impreso desde un servidor AIX 4.3.3 a la cola System V de un servidor AIX 5L, pero desaparece sin ser impreso. El lpd del AIX 4.3.3 muestra que el trabajo fue enviado satisfactoriamente, y el archivo /etc/lp/logs/netLP muestra:
11/01/00 11/01/00 11/01/00 11/01/00 11/01/00 11/01/00 14:42 14:42 14:42 14:42 14:42 14:42 p p p c c c 19414 <none> Got a hit. 19414 <none> Got a hit. listenBSD 19414 <none> Into Polling loop. 9190 matt.dfw.com lpd starting (passive) 9190 matt.dfw.com matt.dfw.com requests recv job hp1 9190 matt.dfw.com lpd exiting, status=0

Esto parece indicar que el trabajo fue recibido satisfactoriamente por la cola hp1, pero nada aparece en la impresora, en los logs de la interfase, y en los archivos /var/lp/logs/lpsched y /var/lp/logs/requests. El comando lpstat -o muestra que no hay trabajos encolados. Desactivamos la cola, y se repite la prueba desde el cliente remoto, pero nuevamente nada es encolado. Sospechando un problema con locale, ya que en algunos casos se debi utilizar el flag lp -L C para imprimir, se intenta reiniciar el lpsched con el locale configurado en C en lugar de en_US, de la siguiente manera:
# lpshut # export LANG=C # /usr/lib/lp/lpsched

Pgina 266 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Esto no resolvi ni modific el problema de ninguna forma. Revisando el archivo /var/spool/lp/system/pstatus:


========== hp1 disabled accepting 973111581 972921654 unknown reason Testing the printer

El usuario test en el cliente recibe este mensaje de correo:


Subject: printer job Your printer job could not be printed. Reason for failure: UX:lpd: ERROR: 0920-053 You are not allowed to use the destination "hp1". TO FIX: Use the lpstat -p command to list all known printers; you can use those marked "available".

El comando lpstat -p muestra la cola hp1 disponible:


# lpstat -p | grep hp1 printer hp1 disabled since Wed Nov 1 14:46:21 2000. available.

Se revisa el archivo allow de la impresora:


# cat /etc/lp/printers/hp1/users.allow all

El comando lpadmin dice que para recibir archivos de sistemas remotos la configuracin de este archivo debe ser all!all. Para modificar el archivo:
# lpadmin -u allow:all!all -p hp

Reciclamos el scheduler y ahora los trabajos remotos del cliente son impresos.

6.3.14 Resolviendo problemas de impresin de HP JetDirect


Cuando se utiliza una impresora con el protocolo de impresin HP JetDirect, hay algunas herramientas por defecto tiles para investigar.

6.3.14.1 Permisos de archivo errneos en el script interfase El primer problema que se puede encontrar con la impresin JetDirect en System V es causado por un error en el Administrador del Sistema basado en Web en las primeras versiones adoptadas en AIX 5L. El script interfase que es creado no tiene los permisos correctos y cuando se intenta imprimir, se obtiene un error por correo que dice que el programa interfase no pudo ser ejecutado:
From lp Mon Oct 23 18:43:21 2000 Date: Mon, 23 Oct 2000 18:43:20 -0600 From: lp To: susieq Content-Length: 572 Subject: Problem with printer hplj4m-net

Pgina 267 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

The printer hplj4m-net has stopped printing for the reason given below. Fix the problem and bring the printer back on line. Printer has stopped, but will be restarted in a few minutes; issue an enable command if you want to restart sooner. Unless someone issues a change request lp -i hplj4m-net-788 The reason it stopped The interface program could not be executed.

Para solucionar el problema, se deben cambiar los permisos del programa interfase en el archivo /etc/lp/interfaces, de la siguiente manera:
# cd /etc/lp/interfaces # chmod 775 hplj4m-net # chown lp:lp hplj4m-net

Se debe asegurar que hplj4m-net es reemplazado con el nombre de la cola. Luego se debe activar la cola, y liberar el trabajo de impresin.:
# enable hplj4m-net # lp -i hplj4m-net-788

6.3.14.2 Revise los archivos de log /tmp/hpnpf.* Revise los archivos de log /tmp/hpnpf.* con el siguiente comando:
# ls -l /tmp/hpnpf.* -rw-r--r-1 lp lp 280 Nov 15 16:40 /tmp/hpnpf.41480 # cat /tmp/hpnpf.41480 wsm1-331 /etc/lp/interfaces/model.orig/wsm1 | /usr/lib/hpnp/hpnpf -x rs1290b wsm1-331 Do not have access wsm1-331 Do not have access wsm1-331 Do not have access wsm1-331 Do not have access wsm1-331 Do not have access wsm1-331 5 errors logged for wsm1-331; errors no longer logged

El mensaje Do not have access es un indicador de que la impresora puede estar fuera de lnea. El protocolo JetDirect no utiliza la informacin del lpsystem de ninguna forma. En este punto, revise si la impresora est disponible con un ping. Luego realice un telnet al puerto 9100. Si se obtiene el siguiente error, se debe revisar la impresora:
# telnet 9.3.240.52 9100 Trying... telnet: connect: A remote host refused an attempted connect operation.

6.3.14.3 Salida escalonada en impresoras PCL La impresora por defecto que se crea con el tipo simple imprimir la salida escalonada. La clave para solucionarlo en impresoras PCL es fijar el tipo de contenido en pcl y registrando el filtro pcl. Para registrar el filtro pcl, utilice el siguiente comando:
# lpfilter -f pcl -F /etc/lp/fd/pcl.fd

Pgina 268 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.4 Resolucin de problemas en el subsistema de impresin PowerPC


Esta seccin lista las tcnicas de resolucin de problemas que se aplican nicamente al subsistema de impresin PowerPC.

6.4.1 Problemas de permisos de archivos


En el nico caso en el que puede haber problemas de permisos de archivos es cuando un administrador del sistema ha realizado cambios manualmente o alguien ejecut el comando tcbck sin flags para que corrija problemas automticamente. Los sntomas del problema son: Slo root puede imprimir No se puede imprimir desde algunos directorios Utilice tcbck para encontrar aquellos archivos que tengan permisos equivocados, y cmbielos manualmente.

6.4.2 El servicio de impresin est activo?


Para determinar si el qdaemon y el lpd estn activos, se puede usar el comando lssrc de la siguiente manera:
# lssrc -s qdaemon # lssrc -s lpd

6.4.2.1 Iniciando los servicios de impresin Para reiniciar cualquier daemon, utilice el comando startsrc:
# startsrc -s qdaemon # startsrc -s lpd

Revise nuevamente para asegurarse que los daemons permanezcan activos.

6.4.2.2 El qdaemon no permanece activo Un problema frecuente que ocurre cuando los administradores modifican a mano el archivo /etc/qconfig es que el qdaemon encuentra errores en el archivo y no permanece activo. En este caso, se debe realizar una copia de respaldo del /etc/qconfig, y luego comenzar a eliminar colas desde el final, una por vez. Intente reiniciar el qdaemon despus de eliminar cada cola. Una cola consiste en dos prrafos de informacin. El prrafo de la cola apunta al prrafo del dispositivo de la cola. Debe asegurarse que hay un dispositivo de cola por cada prrafo de cola. Se debe verificar que todas las lneas comiencen con un tabulado, excepto las lneas que definen el nombre de la cola o del dispositivo de la cola; estas deben comenzar en la columna cero. Archivos extraos en qdir Otro problema que puede causar errores y problemas con el qdaemon son archivos extraos en el directorio /var/spool/lpd/qdir. Si hay otros archivos adems de los archivos de descripcin de trabajos de las colas activas, esos archivos deben ser eliminados.

Pgina 269 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

El dispositivo de cola falso Cuando los dispositivos de colas son eliminados mientras hay trabajos encolados, a veces quedan colas con dispositivos falsos. Para remediarlo, se debe borrar el prrafo del /etc/qconfig, y eliminar todos los archivos de la impresora virtual, los archivos de estado, y los archivos de descripcin de trabajo asociados con esta cola.

6.4.3 La impresora tiene los atributos correctos?


Configurar una impresora con los atributos errneos puede provocar problemas con el control de flujo y el formateo. Es importante comparar la impresora con una de similares caractersticas en AIX. Tanto los atributos de la impresora, como los de la impresora virtual son importantes.

6.4.3.1 Impresora Cuando se agrega una impresora que est ubicada localmente y se conecta utilizando interfases RS/232 o paralelas, hay una cierta cantidad de atributos que deben ser configurados. Impresoras conectadas por RS/232 Para las impresoras conectadas por RS/232, el baud rate, la cantidad de bits de datos, la paridad, y la cantidad de bits de detencin configurados deben coincidir con los de la impresora. Adems, el tamao del buffer puede ser importante, porque con algunas impresoras lentas los datos pueden ser enviados ms rpido que lo que pueda aceptar la impresora y tan rpido que no puede fijar el control de flujo. Algo que tambin debe coincidir es el control de flujo. Aunque es recomendable el control de flujo por hardware, puede usarse tanto el control de flujo de hardware como de software. Lo importante es que sea configurado de igual manera en la impresora y en el dispositivo del ordenador. Impresoras conectadas por el puerto paralelo El nico parmetro que puede afectar el funcionamiento de las impresoras conectadas a travs del puerto paralelo es el retraso con que la impresora responde en el proceso de comunicacin. Para plotters e impresoras lentas, el valor Delay between characters puede ser incrementado en la seccin de dispositivos de impresin.

6.4.3.2 Impresoras virtuales Mientras los atributos del dispositivo pueden determinar si algo puede imprimirse, los atributos de la impresora virtual tendrn un gran efecto en la salida impresa. Como la impresora virtual realiza la inicializacin de la impresora con comandos que son especficos del data stream soportado por la impresora, es importante que se seleccione una impresora virtual que utilice los mismos data streams que espera la impresora. Por ejemplo, si se instala una impresora Epson Injet, que utiliza una secuencia de control Epson, utilizando una impresora virtual HP Injet, que utiliza una secuencia de control PCL, ininteligible. Otra cosa que debe coincidir es el ancho y largo de pgina, especialmente cuando se imprimen archivos de texto.

6.4.4 Logs y archivos de estado


Cuando se tienen problemas relativos a impresin, hay mensajes y archivos de log que pueden ayudar a resolver el problema. En esta seccin se describen algunos lugares que se deben revisar para obtener informacin de diagnstico.

Pgina 270 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.4.4.1 Mensajes de error por lnea de comando Cuando se imprime, la primera oportunidad de obtener un error aparece utilizando flags invlidos o valores errneos de esos flags. Un ejemplo del uso de un flag invlido es el siguiente:
# cd /tmp # cat cmderr.txt # lp -p69 -P3130pcl /etc/motd lp: illegal option -- p usage: lp [-cmsw] [-dDestination] [-nNumber] [-oOption] [-tTitle] [-] File ... Prints a file in a format suitable for sending to a line printer.

6.4.4.2 Mensajes por correo Muchas veces, tanto el qdaemon como el backend piobe enviarn un mensaje de correo al usuario que emiti el trabajo y al usuario root, describiendo el problema que ocurri.

6.4.4.3 Mensajes en la consola A veces, los mensajes de colas cadas, u otros errores son impresos en la terminal del usuario.

6.4.4.4 Archivos de mensajes de error de las impresoras virtuales Cuando ocurre un error con parmetros o flags en la impresora virtual, un archivo de errores es creado en /var/spool/lpd/pio/@local. Los archivos comienzan con msg, luego un nmero, un punto y el nombre de la cola y del dispositivo. Por ejemplo, este comando con un pitch ilegal:
# qprt -p15 -P3130pcl /etc/motd

produce el siguiente mensaje de error en msg1.3130pcl:@aus3130b:


----------------------------------------------------------Thu Oct 26 13:23:07 2000 (root) ----------------------------------------------------------=====> MESSAGE FROM PRINT JOB 1062 (/etc/motd) <===== 0782-598 The value 1 specified in the validate op V in the limits field for _p attribute indicates failure

6.4.4.5 Logs de impresiones remotas Tanto rembak como lpd tiene capacidad para usar archivos de log. Esto puede proveer informacin sobre que tipo de errores puede haber ocurrido. Utilizando archivos de log de rembak Cuando se crea una cola, se puede configurar lo siguiente:
To turn on debugging, specify output file pathname [/tmp/rem1.log]

Despus, un flag -D archivo.log es agregado en el /etc/qconfig, de la siguiente manera:


backend = /usr/lib/lpd/rembak -D /tmp/remback.log

Pgina 271 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Normalmente, esto se realiza modificando un dispositivo de cola desde smit. La salida contiene mucha informacin, y puede evitar el uso de un trace. La parte de la salida que muestra cmo es enviado el archivo enviado es la siguiente
# grep sendjob rem1.log rembak[56708] sendjob: sendjob starts, jobname=STDIN.46218, current time=9725985 26. rembak[56708] sendjob: datafn[0]=dfA069rs9220b, fakedfn=dfA069rs9220b. rembak[56708] sendjob: ctrlfname=/tmp//rembak0FTyqa, fakecfn=cfA069rs9220b. rembak[56708] sendjob: State machine starts..... rembak[56708] sendjob: State 1 - send the "Receive a Print Job" request. rembak[56708] sendjob: state 3 - Send data file(s), dfcount=1. rembak[56708] sendjob: realfn=/var/spool/qdaemon/t0nJiEa, fakefn=dfA069rs9220b, filter=/usr/lib/lpd/aixshort. rembak[56708] sendjob: State 2 - send control file, ctrlfname=/tmp//rembak0FTyqa , fakecfn=cfA069rs9220b. rembak[56708] sendjob: State 5 - end of job #69 (STDIN.46218). rembak[56708] sendjob: Delete control file /tmp//rembak0FTyqa.

Utilizando archivos de log de lpd Cuando se reciben archivos, el daemon lpd puede crear logs de la actividad. Para activar el log en lpd, se debe detener y reiniciar el qdaemon de la siguiente manera:
# stopsrc -s lpd # startsrc -s lpd -a -D /tmp/lpddebug

La salida de este comando es til ya que provee informacin sobre el archivo de control pasado al AIX, y el comando enq que genera el lpd. Esta es una parte de la salida:
lpd[56734] doit: cfn=[cfA929tesch.972600121]. lpd[56734] doit: get a line [Htesch]. lpd[56734] doit: get a line [Proot]. lpd[56734] doit: get a line [fdfA929tesch]. lpd[56734] doit: get a line [UdfA929tesch]. lpd[56734] doit: get a line [NSTDIN.6404]. lpd[56734] doit: exec enq cmd=[/usr/bin/enq -P3130pcl -r -troot@tesch -Zroot@tes ch.aix.dfw.ibm.com -N1 -TSTDIN.6404 /var/spool/lpd/dfA929tesch.972600121 ].

6.4.4.6 Archivos de descripcin del trabajo El archivo de descripcin del trabajo (job description file o JDF) puede ayudar a encontrar informacin sobre el archivo que se est imprimiendo, el entorno de usuarios, y los flags que son pasados. En muchos casos, la informacin al final del archivo es la ms til. Por ejemplo, el siguiente JDF muestra los flags enq, los otros flags, y el archivo que es impreso:
-Ttesting-Ptestq testing root rs9220b 0 $#@!-d $#@!p $#@!-p $#@!17 $#@!-z $#@!+ $#@!-f $#@!1 /var/spool/qdaemon/t6FLT7a 2

Pgina 272 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Esta es la descripcin de cada lnea: La lnea con -Ttesting-Ptestq muestra cual de los flags estndar del enq son pasados del qprt al enq. Las lneas del medio muestran que el ttulo es testing, y es impreso por root en el sistema rs9220b. Las lneas que comienzan con $#@! son flags de formateo del qprt, o lp -o que son tratados como otros flags por el enq. Son normalmente flags de formateo de la impresora virtual y son tiles para diagnosticar problemas donde flags invlidos son enviados y el archivo desaparece. Se deben probar estos flags individualmente con enq -o. Un problema comn es el flag -fl; si es usado, se debe verificar que la impresora virtual tenga un atributo fl configurado para %ip. La lnea final en el archivo es el nombre del archivo impreso. El archivo fue encolado localmente, ya que est en /var/spool/qdaemon. Para trabajos locales que no son encolados, en esta lnea se muestra el nombre original del archivo. En trabajos recibidos de clientes remotos, los archivos estarn en /var/spool/lpd.

6.4.4.7 Archivos de estado Los archivos de estado son usados por lpstat y qchk para mostrar el estado de un archivo. Los archivos estn en /var/spool/lpd/stat, y comienzan con s.; sin embargo, los archivos estn en formato binario y no pueden accederse directamente. El archivo PID en este directorio guarda el ID de proceso del qdaemon, y los archivos que comienzan con p. contienen los ID de procesos iniciados por el qdaemon, por ejemplo, antes de que un dispositivo cancele por tiempo en lp0 porque la impresora estaba apagada. El archivo p.textq.lp0 contiene el valor 12808. Para ver que procesos estn asociados con que cola, use el comando ps de la siguiente manera:
# cat plocal.txt # ps -ef | grep 12808 root 12808 7756 0 13:46:36 root 45590 12808 0 13:46:36 -A0 -B880 -C14688 -F\14\15 root 46824 14270 1 13:50:52

pts/1

0:00 /usr/lib/lpd/piobe /etc/motd 0:00 /usr/lib/lpd/pio/etc/pioout 0:00 grep 12808

Esto muestra que el comando pioout fue llamado por piobe. El comando pioout es el filtro que escribe en el puerto del dispositivo local.

6.4.5 Imprimiendo en un archivo con el subsistema PowerPC


Imprimiendo en un archivo, se puede ver exactamente lo que la impresora virtual aadi al archivo antes de imprimirlo. En AIX 5L, existe la posibilidad de agregar impresoras a archivos del directorio /dev. El siguiente procedimiento explica como aprovechar esto para diagnosticar un problema: 1. Cree un archivo en el directorio /dev. El archivo debe tener permisos para el usuario que realiza el procedimiento.
# touch /dev/lpx # chmod 666 /dev/lpx

2. Cree una cola de impresin a un archivo utilizando el tipo de impresora que se quiere diagnosticar:
# smitty mkpq Choose: file File in the /dev directory

Pgina 273 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Choose the printer manufacturer Choose the model of printer Name of existing file in the /dev directory [lpx] Enter the queue name testq and press [Enter]

3. Intente imprimir en la cola:


# lptest 5 5 | qprt -P testq

4. Examine el archivo con vi u od.


^[%-12345X@PJL SET RESOLUTION = 300 @PJL SET LPAPERSOURCE = TRAY1 @PJL SET PAPER = LETTER @PJL SET LTRAY1PAPERTYPE = NORMAL @PJL ENTER LANGUAGE = PCL ^[(s17H^M ^[(s0S^[(s0B^[(s3T^[&l1O^[&k0G^[&l8.00C^[(8U!"#$%^M "#$%&^M #$%&'^M $%&'(^M %&'()^M ^[E^[(s17H^[&l1O^[&k0G^[&l6D^[%-12345X

5. Compare la salida con el manual de referencia de la impresora:


^[ is an escape character ^[%-12345X is a printer reset to start PJL commands @PJL commands are usually obvious ^[(s17H sets the pitch in characters per inch ^[(s0S sets to simple non-italics style ^[(s0B sets to normal, not-bold ^[(s3T sets the type style to courier ^[&k0G tells the printer not to add carriage returns. ^M is a carriage return

Esta es una tcnica til para ver donde coloca la impresora virtual los avances de lnea utilizando lptest 200 1 para imprimir una sola lnea de 200 caracteres de largo. Esto tambin es til para ver como diferentes flags afectan al comando dirigido a la impresora.

6.4.6 Limpiando y comenzando de nuevo


A veces se llega a un nivel punto donde los trabajos parecen detenidos sin motivo y el qdaemon no puede iniciar. En estos casos, es recomendable ver primero si se puede detectar el problema encontrando el proceso conflictivo.

6.4.6.1 Primero se debe encontrar la causa El ID de los procesos que fueron llamados por el qdaemon son almacenados en archivos que comienzan con la letra p en el directorio /var/spool/lpd/stat. Se debe comenzar deteniendo el qdaemon y verificando los archivos de estado de procesos en este directorio. Si existen, se debe hacer un kill -9 de los nmeros de procesos contenidos en los archivos. En muchos casos, esto soluciona el problema. Luego, utilice el comando fuser para ver si hay algn proceso an activo en el dispositivo que est fallando. Por ejemplo, si hay trabajos que parecen detenidos sin motivo en lp17, entonces verifique los procesos con:
# fuser /dev/lp17

Si algn proceso est activo en este puerto, este proceso mostrar el ID. Verifique si hay algn otro Pgina 274 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

proceso que comience con qd o pio an activo:


# ps -ef | grep qd # ps -ef | grep pio # kill -9 PIDnumbers

Otra cosa que puede provocar que el qdaemon falle es la presencia de archivos extraos en /var/spool/lpd/qdir. Se debe verificar que los archivos en este directorio tengan el formato de archivo de descripcin de trabajo (JDF). Un archivo no JDF puede causar que el lpstat devuelva un error sobre un cola daada. En este punto, ser necesario cancelar todos los trabajos que crearon el problema y reiniciar el qdaemon.

6.4.6.2 ltimo recurso: limpiar el sistema de impresin Cuando todo falla y no se puede resolver el problema, con trabajos que estn detenidos sin motivo aparente, se puede limpiar totalmente el sistema de impresin. Este procedimiento elimina todos los trabajos de impresin y estos deben ser emitidos nuevamente. Es necesario ser root para realizar esta tarea. Los pasos son los siguientes: 1. Detenga el qdaemon y los procesos asociados:
# stopsrc -s qdaemon

2. Mate todos los procesos asociados con el qdaemon. Estos normalmente son procesos que comienzan con qd, como qdfork, o con pio como pioformat o pioout.
# ps -ef | grep qd # ps -ef | grep pio # kill -9 PIDnumbers

Si los procesos no pueden matarse con kill -9, ser necesario hacer un reboot del sistema. 3. Limpie los archivos de estado de las colas. Esto reiniciar los nmeros de trabajo, a menos que se preserve el archivo /var/spool/lpd/stat/numfile.
# rm /var/spool/lp/stat/*

4. Elimine los trabajos encolados:


# rm /var/spool/lpd/qdir/* # rm /var/spool/lpd/qdaemon/* # rm /var/spool/lpd/df*

5. Reinicie el qdaemon:
# startsrc -s qdaemon

6.4.7 Revisando los flags para enq


En el subsistema PowerPC, todos los comandos como qprt, lp, lpr, lpd, dtprint, etc., envan su salida a travs de enq. Una forma de revisar esto es montar el comando echo sobre el enq, de la siguiente manera:
# mount /bin/echo /bin/enq

Pgina 275 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Ahora imprima desde los comandos y verifique qu es lo que recibe el enq:


$ qprt -p17 -Ttitle -v8 -Pasc /etc/motd -o -p -o 17 -T title -o -v -o 8 -P asc /etc/motd # lp -m -djunk -o land /etc/motd -C -n -P junk -o land -j -- /etc/motd # lpr -P junk /etc/motd -P junk -c -Bgn /etc/motd

Se debe tener en cuenta que cuando se hace esto, nadie podr imprimir hasta que se desmonte el echo de la siguiente manera:
# unmount /bin/enq

6.4.8 Desactivando los banners


En el subsistema PowerPC los banners (carteles) pueden controlarse con los flags de los comandos de impresin, con la configuracin de la cola, o modificando el archivo de la impresora virtual.

6.4.8.1 Configuracin de los banners Los banners son soportados por las impresoras virtuales en los subsistemas PowerPC. Cuando se crea o modifica una impresora virtual, se puede especificar si se desean pginas de encabezamiento (header), pginas de finalizacin (trailer), pginas de separacin, alguna combinacin, o ningn banner. Para cambiar el banner, utilice el men rpido smitty chpq, seleccione la impresora, y luego seleccione Change / Show Default Print Job Attributes. Busque el campo Separator Pages y presione F4. Elija None para desactivar los banners. Esto ser reflejado en el archivo /etc/qconfig, en el prrafo del dispositivo de la cola como header y trailer, como se ve en el siguiente ejemplo para la cola asc cuyo dispositivo es lp0:
# lsquedev -q asc -d lp0 lp0: file = /dev/lp0 header = never trailer = never access = both backend = /usr/lib/lpd/piobe

6.4.8.2 Evitando los banners por lnea de comando Los usuarios pueden omitir la seleccin de banners establecida en el archivo de configuracin. Para desactivar el uso de banners desde la lnea de comando con enq o qprt, se debe utilizar el flag -Bnn, como se ve en el siguiente ejemplo:
$ enq -Bnn -P lj24 /tmp/testfile $ qprt -Bnn -P lj24 /tmp/testfile

El comando lpr imprime una pgina de encabezamiento por defecto. Para desactivarla, utilice el flag -h:
$ lpr -h -P lj24 /tmp/testfile

Pgina 276 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.4.8.3 Evitando los banners con la impresora virtual A veces, las aplicaciones utilizan el comando lpr, o el administrador no tiene control sobre los usuarios que utilizan el comando lpr sin flags. Se pueden desactivar todos las pginas banner desde la impresora virtual, eliminando el programa generador de banners del atributo sh de la impresora virtual. Utilice el comando lsvirprt para modificar la impresora virtual de esta forma: 1. Inicie lsvirprt:
# lsvirprt

2. Seleccione la impresora deseada. 3. Fije nada para sh, de la siguiente manera:


4050n lpx hplj-4050 (PCL) To LIST attributes, enter AttributeName1 ... (* for all attributes) To CHANGE an attribute value, enter AttributeName=NewValue To FORMAT and EDIT an attribute value, enter AttributeName~v To EDIT the attribute file, enter ~v To terminate, press Enter: sh Name sh Description Pipeline for Header Page Value %Ide/pioburst %F[H ] %Idb/H.ascii | % Ide/pioformat -@ % Idd/%Imm -!%Idf/pi ofpcl -J+ -L! %IsH -u%IuH

To To To To To

LIST attributes, enter AttributeName1 ... (* for all attributes) CHANGE an attribute value, enter AttributeName=NewValue FORMAT and EDIT an attribute value, enter AttributeName~v EDIT the attribute file, enter ~v terminate, press Enter: sh= Description Pipeline for Header Page Value

Name sh

6.5 Errores comunes y soluciones


Esta seccin describe problemas comunes que ocurren configurando los subsistemas de impresin de AIX o imprimiendo archivos.

6.5.1 Problemas agregando una segunda impresora local en el mismo dispositivo


Una vez que se agrega una impresora al dispositivo lp0, si se intenta agregar otra impresora virtual utilizando el men rpido smitty mkpq, se obtendr el siguiente mensaje de error:
Command: failed stdout: yes stderr: no Before command completion, additional instructions may appear below. Method error (/usr/lib/methods/cfgpp): 0514-031 A device is already configured at the specified location.

Este problema puede solucionarse agregando una impresora a un archivo del directorio /dev, y especificando el nombre de archivo como lp0 (o el nombre de dispositivo que se quiere utilizar).

Pgina 277 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

6.5.2 No se pueden cambiar los atributos porque el dispositivo est ocupado


Cuando se intenta cambiar los atributos de la impresora, se obtiene este error:
Command: failed stdout: yes stderr: no Method error (/usr/lib/methods/chggen): 0514-062 Cannot perform the requested function because the specified device is busy.

Primero, desactive la cola, y si el comando sigue fallando, utilice el comando fuser para ver qu proceso mantiene el dispositivo abierto:
# fuser /dev/lp0 /dev/lp0: 12808 45590

Luego mate los procesos con kill.

6.5.3 Los trabajos remotos desaparecen despus de activar la cola de impresin


Un problema comn cuado trabajos remotos desaparecen es que pasan flags que no son vlidos para la impresora virtual. El problema ms comn es con el flag -fl. El sntoma es que si se desactiva la cola, el trabajo queda encolado, pero cuando esta se activa, el trabajo desaparece. Si se captura el archivo en el servidor y se imprime localmente, la impresin funciona correctamente. Mientras el trabajo est encolado, revise el archivo de descripcin del trabajo en /var/spool/lpq/dir. Si se ve una lnea que contiene el siguiente texto al final del archivo: $#@!-fl seguramente el problema es que el cliente est pasando el flag -fl, y el servidor no tiene definido el atributo fl en la impresora virtual. Para solucionar el problema, utilice lsvirprt, seleccione la impresora virtual e ingrese: fp=%ip Presione Enter para guardar los cambios y reintente el trabajo.

6.5.4 Bad mandatory environment variable


Cuando se imprime en un cola de impresin PostScript, con un tipo de contenido PS y un tipo de interfase PS, pero con un tipo de impresora hplaserjet, el siguiente error es enviado por correo al usuario:
Subject: Status of lp request wsm3-336 ... Reason for failure: UX:lp: ERROR: Bad mandatory environment variable. TO FIX: Consult your system administrator.

Revisando el programa interfase de la impresora se ve que este error es generado cuando el tipo TERM no es uno de los tipos TERM PostScript dePS, PS-b, PS-r, PS-br, o PSR. Para solucionar el problema, utilice lpadmin para cambiar el tipo de impresora por PS-b:
# lpadmin -p wsm3 -T PS-b

Pgina 278 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Despus de realizar el cambio, se debera poder imprimir.

6.5.5 LOG: is read only


Cuando se configuran impresoras JetDirect con el script /usr/lib/hpnp/hpnpcfg utilizando el estndar hpnp.model, el siguiente error es enviado por correo a los usuarios que intentan imprimir en la cola:
Printing stopped with an exit code of 1. Reason for failure: /etc/lp/interfaces/wsm2[44]: LOG: is read only

Examinando el scrip /etc/lp/interfaces/wsm2, la lnea 44 contiene el siguiente asignacin:


LOG=/tmp/$PERIPH.$$

Una reexaminacin ms profunda indica que el problema no es con los permisos de archivo, sino con los permisos de las variables de ambiente. Si la lnea se cambia por:
LOG1=/tmp/$PERIPH.$$

el problema an provocar que las impresoras JetDirect que antes funcionaban, ahora no lo hagan. La razn es que el script hpnpcfg fija la variable de ambiente LOG antes de reiniciar lpsched. Cuando lpsched ejecuta el programa interfase, la variable es configurada en modo slo lectura. La solucin es detener el scheduler, asegurarse que LOG no est configurada en el ambiente root y reiniciar el scheduler:
# lpshut # unset LOG # /usr/lib/lp/lpsched

Aunque el script hpnpcfg no est documentado ni soportado, una solucin permanente al problema es modificar este script; pero hpnpcfg llama a /usr/lib/hpnp/cfg/option6 para crear la impresora, y esto es lo que detiene al scheduler. El lpadmin es llamado para agregar la impresora, y lpsched es llamado para detener la impresora. Si se comentan las lneas de manera que el scheduler no sea detenido y reiniciado, las impresoras funcionarn sin intervencin manual. El siguiente ejemplo muestra las lneas comentadas en el script option6:
STARTLP=0 #echo /usr/sbin/lpshut | tee -a -- $LOG #/usr/sbin/lpshut #if [ $? -eq 0 ] #then # STARTLP=1 #fi

6.5.6 No hay suministro de papel luego de la pgina de encabezamiento


Cuando se agrega una impresora con el script hpnpcfg, si no se especifica el tipo como pcl, no se vern ms pginas luego del encabezamiento. Esto es porque el tipo simple es un tipo directo de impresin que no modifica el archivo. Esto puede solucionarse cambiando el tipo de contenido a pcl y verificando que el filtro pcl est instalado de la siguiente manera:
# lpadmin -p printer-name -I pcl # lpfilter -f pcl -F /etc/lp/fd/pcl.fd

Una vez que se realiza el cambio, los archivos de texto sern impresos correctamente, pero no habr alimentacin de papel despus de la pgina de encabezamiento. Para agregar el suministro Pgina 279 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

de papel, simplemente cambie el tipo de impresora por hplaserjet, de la siguiente manera:


# lpadmin -p printer-name -T hplaserjet

Si esta no es una impresora PCL, elija el tipo de terminfo apropiado.

Pgina 280 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Lista de abreviaturas
AC ACL AIX ANSI APAR ARP ASCI ASCII ATE ATM ATMLE BFF BI BIND CAE CD CDE CD-ROM CE CPI CPU CSS CTS DAR DAR2 DBM DE DFS DHCP DMA DNS DSI DSIRR DSISR DTE DTR EC ELAN ESCON FDDI FTP HACMP HiPPI HiPS Alternating Current Access Control List Advanced Interactive eXecutive American National Standards Institute Authorized Program Analysis Report Address Resolution Protocol Accelerated Strategic Computing Initiative American National Standards Code for Information Interchange Asynchronous Terminal Emulator Asynchronous Transfer Mode ATM LAN Emulation Backup File Format Business Intelligence Berkeley Internet Name Daemon Computer-Aided Engineering Compact Disc Common Desktop Environment Compact Disc Read Only Memory Customer Engineer Characters Per Inch Central Processing Unit Communication Subsystems Support Clear To Send Data Address Register Secondary Data Address Register Database Manager Dual-Ended Distributed File System Dynamic Host Configuration Protocol Direct Memory Access Domain Name Server Data Storage Interrupt Data Storage Interrupt Reason Register Data Storage Interrupt Status Register Data Terminal Equipment Data Terminal Ready Engineering Change Emulated LAN Enterprise Systems Connection (Architecture, IBM System/390) Fiber Distributed Data Interface File Transfer Protocol High Availability Cluster Multi Processing High Performance Parallel Interface High Performance Switch HP HPF HTTP I/O IAR IBM ICMP ID IDE IDS IGMP IP IPL JDF JFS LAN LECS LED LES LP LPD LPP LR LUM LV LVCB LVDD LVID LVM MAC MCA MSS MST MTU NFS NIS NUA ODM OEM OLTP PAP PCI PCL PDU PID PJL POSIX POST POWER PP Hewlett-Packard High Performance FORTRAN Hypertext Transfer Protocol Input/Output Instruction Address Register International Business Machines Corporation Internet Control Message Protocol Identification Integrated Device Electronics Intelligent Decision Server Internet Group Management Protocol Internet Protocol Initial Program Load Job Description File Journaled File System Local Area Network LAN Emulation Configuration Server Light Emitting Diode LAN Emulation Server Logical Partition Line Printer Daemon Protocol Licensed Program Product Link Register Licence Use Management Logical Volume Logical Volume Control Block Logical Volume Device Driver Logical Volume Identifier Logical Volume Manager Medium Access Control Micro Channel Architecture Maximum Segment Size Machine State Save Area Maximum Transfer Unit Network File System Network Information Service Network User Address Object Data Manager Original Equipment Manufacturer Online Transaction Processing Password Authentication Protocol Peripheral Component Interface Printer Control Language Power Distribution Unit Program Identification Printer Job Language Portable Operating Interface for Computing Environments Power-On Self-Test Performance Optimization with Enhanced RISC (Architecture) Physical Partition

Pgina 281 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

PPP PTF PV PVC PVID RAID RAM RAN RAS RFC RIO RIP RPC RTS SCSI SLIP SMIT SMP SP SPSW SRC SRV SSA SVC TCP TCP/IP UDP URL UUCP VCI VESA VG VGDA VGID VGSA VMM VPI

Point-to-Point Protocol Program Temporary Fix Physical Volume Permanent Virtual Circuit Physical Volume Identifier Redundant Array of Independent Disks Random Access Memory Remote Asynchronous Node Reliability, Availability, and Serviceability Request For Comments Remote Input Output Routing Information Protocol Remote Procedure Call Ready To Send Small Computer System Interface Serial Link Internet Protocol System Management Interface Tool Symmetric Multiprocessing Scalable POWER Parallel SP Switch System Resource Controller Segment Register Value Serial Storage Architecture Switched Virtual Circuit Transmission Control Protocol Transmission Control Protocol/Internet Protocol UNIX Datagram Protocol Universal Resource Locator UNIX-to-UNIX Communication Protocol Virtual Channel Indicator Video Electronics Standards Association Volume Group Volume Group Descriptor Area Volume Group Identifier Volume Group Save Area Virtual Memory Manager Virtual Path Indicator

Pgina 282 de 283

Resolucin de problemas y soporte avanzado de AIX

Andrs Crdoba

Bibliografa
- AIX 5L Performance Tools Handbook, SG24-6039. - AIX Logical Volume Manager from A to Z: Troubleshooting and Commands, SG24-5433. - AIX Performance Tuning Guide, Versions 3.2 and 4, SC23-2365. - AIX Version 4.3 Commands Reference - AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts. - IBM Certification Study Guide AIX Performance and System Tuning, SG24-6184. - IBM Certification Study Guide AIX Problem Determination Tools and Techniques, SG24-6185. - IBM SAP Technical Brief, SAP/ORACLE/AIX Performance Tuning Tips - Learning Practical TCP/IP for AIX V3.2/V4.1 Users: Hints and Tips for Debugging and Tuning, SG24-4381. - Performance Management Guide - Printing for Fun and Profit under AIX 5L, SG24-6018. - Problem Solving and Troubleshooting in AIX Version 4.3, SG24-5496. - RS/6000 AIXLink/X.25 Cookbook, SG24-4475. - RS/6000 Performance Tools in Focus, SG24-4989.

Pgina 283 de 283

Вам также может понравиться