Introduction
Ce document décrit la solution pour les instances sessmgr qui passent en état WARN en raison de acsmgr_icsr_frwk_instance_chkpt_falied()
utilisation du processus.
Description du problème
Plate-forme ASR5500
Version du logiciel : 21.27.4 et 21.19.10
Instances du gestionnaire de session en état d'avertissement en raison d'une consommation de mémoire élevée sur acsmgr_icsr_frwk_instance_chkpt_falied()
fonction lorsque la récupération de session est désactivée :
[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
Analyse
Afin d'isoler si le nombre élevé d'abonnés totaux déclenche le processus acsmgr_icsr_frwk_instance_chkpt_falied()
pour être surutilisé, une instance sessmgr occupée est exécutée et il est confirmé que l'utilisation de la mémoire sessmgr n'a pas diminué :
[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
À partir des journaux, lorsqu'un état occupé est exécuté sur l'une des instances sessmgr affectées, il diminue le nombre de sessions utilisées, mais l'allocation de mémoire utilisée reste élevée et indique que l'instance sessmgr est à l'état WARN.
À la suite d'une enquête, acsmgr_icsr_frwk_instance_chkpt_falied()
est appelée pendant le traitement des informations de point de contrôle. Il y a des opérations d'ajout/mise à jour/suppression de listes dans cette fonction qui ne fonctionnent pas comme prévu quand la récupération de session est désactivée et c'est la raison de la consommation accrue de mémoire. La mémoire utilisée ici est accumulée dans ce scénario au fil du temps. Ce comportement se produit uniquement dans le scénario où le require session recovery
n'est pas configuré. La mémoire accumulée à traiter acsmgr_icsr_frwk_instance_chkpt_falied()
ne se libère pas lorsque (no require session recovery
) qui peut être à l'origine de la fuite."
Solution
Mettez en oeuvre la récupération de session afin de résoudre ce problème.
Procédure
Étape 1. À l'invite du mode d'exécution, vérifiez que la fonction de récupération de session est activée via les licences d'utilisation de session et de fonctionnalité sur le système avec le show license info
erasecat4000_flash:. Si l'état actuel de la fonctionnalité Récupération de session est Désactivé, vous ne pouvez pas activer cette fonctionnalité tant qu'une clé de licence n'est pas installée dans le système.
Étape 2. Utilisez cet exemple de configuration pour activer la récupération de session.
configure
require session recovery
end
Cette fonction n'est effective qu'après le redémarrage du système.
Étape 3. Enregistrez votre configuration comme décrit dans Vérification et enregistrement de votre configuration.
Étape 4. Redémarrez le système à l'aide de reload
erasecat4000_flash:. Voici l'invite qui s'affiche :
Confirmez votre souhait d'effectuer un redémarrage du système et entrez Yes
.
Une fois redémarré, le système active la récupération de session et crée toutes les tâches en mode veille mises en miroir, effectue automatiquement les réservations de cartes de traitement des paquets et d'autres opérations.
Étape 5. Une fois le système redémarré, vous devez vérifier la préparation du système pour la prise en charge de cette fonctionnalité, comme décrit dans Affichage de l'état de récupération de session. Les utilisateurs plus avancés peuvent choisir d'insérer le require session recovery
dans un fichier de configuration qui existe déjà avec un éditeur de texte ou d'autres moyens, puis appliquez manuellement le fichier de configuration. Soyez prudent lorsque vous faites cela, afin de vous assurer que cette commande est placée parmi les premières lignes de tout fichier de configuration qui existe déjà ; elle doit apparaître avant la création de tout contexte non local.