Introducción
Este documento describe la solución para las instancias de sessmgr que entran en estado WARN debido a la alta acsmgr_icsr_frwk_instance_chkpt_falied()
uso del proceso.
Descripción de problemas
Plataforma ASR5500
Versión SW: 21.27.4 y 21.19.10
Instancias del administrador de sesiones en estado de advertencia debido al alto consumo de memoria en acsmgr_icsr_frwk_instance_chkpt_falied()
función cuando se inhabilita la recuperación de sesión:
[local]ASR5500# show task resources | grep -v good
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
1/0 sessmgr 13 26% 100% 930.8M 900.0M 37 500 4643 12000 I warn
1/0 sessmgr 36 32% 100% 938.8M 900.0M 39 500 5155 12000 I warn
1/0 sessmgr 53 29% 100% 937.8M 900.0M 40 500 4916 12000 I warn
1/0 sessmgr 56 29% 100% 930.2M 900.0M 41 500 4649 12000 I warn
1/0 sessmgr 83 35% 100% 970.2M 900.0M 40 500 5382 12000 I warn
1/0 sessmgr 90 24% 100% 931.3M 900.0M 42 500 4621 12000 I warn
1/0 sessmgr 130 28% 100% 935.0M 900.0M 40 500 4907 12000 I warn
1/0 sessmgr 141 26% 100% 936.7M 900.0M 37 500 4917 12000 I warn
1/0 sessmgr 145 23% 100% 933.9M 900.0M 39 500 4883 12000 I warn
1/0 sessmgr 174 26% 100% 927.4M 900.0M 37 500 4620 12000 I warn
1/0 sessmgr 188 31% 100% 963.0M 900.0M 40 500 5305 12000 I warn
1/0 sessmgr 223 26% 100% 933.5M 900.0M 38 500 4631 12000 I warn
Aggregate consumption per proc:
-------- ------------------------------------------ -------------- -------------- -------------- --------- ---------
| Nr | Process | Similar | Total Bytes | Human Bytes | Percent | % Acum |
======== ========================================== ============== ============== ============== ========= =========
| 1 | acsmgr_icsr_frwk_instance_chkpt_falied() | 757 | 108301860 | 103.3 MB | 13.95% | 13.95% |
| 2 | egtpc_allocate_peer_rec() | 89 | 77599472 | 74.0 MB | 10.00% | 23.95% |
| 3 | sn_slist_dnode_alloc() | 471 | 64427392 | 61.4 MB | 8.30% | 32.25% |
| 4 | sessmgr_allocate_callline() | 156 | 48601944 | 46.4 MB | 6.26% | 38.51% |
| 5 | sn_aaa_buffer_alloc_more_type() | 45 | 34836120 | 33.2 MB | 4.49% | 43.00% |
[local]ASR5500# show task resources | grep -v good
Session Recovery Status:
Overall Status : Not Enabled
Last Status Update : 8 seconds ago
Análisis
Para aislar si la alta cantidad de suscriptores totales activa el proceso acsmgr_icsr_frwk_instance_chkpt_falied()
para que se sobreutilice, se realiza un ocupado de la instancia de sessmgr y se confirma que el uso de la memoria de sessmgr no disminuyó:
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 20% 100% 981.8M 900.0M 43 500 4142 12000 I warn
Total 1 20.20% 981.8M 43 4142
[local]ASR5500> task sessmgr instance 10 busy-out
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 19% 100% 979.7M 900.0M 42 500 3946 12000 B warn
Total 1 19.35% 979.7M 42 3946
[local]ASR5500> task sessmgr instance 10 enable
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 17% 100% 979.8M 900.0M 40 500 4141 12000 I warn
Total 1 17.33% 979.8M 40 4141
Desde los registros, cuando se realiza un ocupado-out en una de las instancias de sessmgr afectadas, disminuye el número de sesiones usadas, pero la asignación de memoria usada sigue siendo alta y muestra que causa que la instancia de sessmgr esté en estado WARN.
En una investigación posterior, acsmgr_icsr_frwk_instance_chkpt_falied()
se llama a esta función mientras se procesa la información del punto de control. Hay operaciones de adición/actualización/eliminación de listas en esta función que no funcionan como se esperaba cuando se inhabilita la recuperación de sesión y esta es la razón del mayor consumo de memoria. La memoria utilizada aquí se acumula en este escenario a lo largo del tiempo. Este comportamiento solo se produce en el escenario en el que require session recovery
no está configurado. La memoria acumulada para procesar acsmgr_icsr_frwk_instance_chkpt_falied()
no se libera cuando (no require session recovery
) que potencialmente causa la filtración de memes."
Solución
Implemente la recuperación de sesión para resolver este problema.
Procedimiento
Paso 1. En el indicador del modo Exec, verifique que la función de recuperación de sesión esté habilitada a través de las licencias de uso de sesión y función en el sistema con el show license info
comando. Si el estado actual de la función de recuperación de sesión es Desactivado, no podrá activar esta función hasta que se haya instalado una clave de licencia en el sistema.
Paso 2. Utilice este ejemplo de configuración para habilitar la recuperación de sesión.
configure
require session recovery
end
Esta función no surte efecto hasta que se haya reiniciado el sistema.
Paso 3. Guarde la configuración como se describe en Verificación y almacenamiento de la configuración.
Paso 4. Reinicie el sistema con el reload
comando. Este es el mensaje que aparece:
Confirme su deseo de reiniciar el sistema e introduzca Yes
.
El sistema, cuando se reinicia, habilita la recuperación de sesión y crea todas las tareas duplicadas de "modo en espera", realiza reservas de tarjetas de procesamiento de paquetes y otras operaciones automáticamente.
Paso 5. Una vez reiniciado el sistema, debe verificar si el sistema está preparado para admitir esta función, como se describe en Visualización del estado de recuperación de sesión. Los usuarios más avanzados pueden optar por insertar el require session recovery
sintaxis de comandos en un archivo de configuración que ya existe con un editor de texto u otros medios, y luego aplique manualmente el archivo de configuración. Tenga cuidado al hacer esto, para asegurarse de que este comando se coloque entre las primeras líneas de cualquier archivo de configuración que ya exista; debe aparecer antes de la creación de cualquier contexto no local.