Introduzione
In questo documento viene descritta la soluzione per le istanze di sessmgr che passano allo stato WARN a causa di un acsmgr_icsr_frwk_instance_chkpt_falied()
utilizzo dei processi.
Descrizione del problema
Piattaforma ASR5500
Versione SW: 21.27.4 e 21.19.10
Istanze di Gestione sessioni in stato di avviso a causa di un consumo di memoria elevato su acsmgr_icsr_frwk_instance_chkpt_falied()
funzione quando il ripristino della sessione è disabilitato:
[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
Analisi
Per isolare se l'elevato numero di sottoscrittori totali attiva il processo acsmgr_icsr_frwk_instance_chkpt_falied()
per essere sovrautilizzata, viene eseguita un'istanza di sessmgr occupata e viene confermato che l'utilizzo della memoria di sessmgr non è diminuito:
[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
Dai log, quando si esegue un'operazione di occupato su una delle istanze di sessmgr interessate, diminuisce il numero di sessioni utilizzate, ma l'allocazione della memoria usata rimane elevata e indica che l'istanza di sessmgr si trova nello stato WARN.
In seguito a ulteriori indagini, acsmgr_icsr_frwk_instance_chkpt_falied()
viene chiamata durante l'elaborazione delle informazioni sul checkpoint. In questa funzione sono presenti operazioni di aggiunta/aggiornamento/eliminazione di elenchi che non funzionano come previsto quando il ripristino della sessione è disabilitato e questo è il motivo per l'aumento del consumo di memoria. La memoria utilizzata in questo scenario viene accumulata nel tempo. Questo comportamento si verifica solo nello scenario in cui require session recovery
non è configurato. Memoria accumulata da elaborare acsmgr_icsr_frwk_instance_chkpt_falied()
non viene liberato quando (no require session recovery
) che potrebbe causare la perdita di memoria."
Soluzione
Per risolvere il problema, implementare il ripristino della sessione.
Procedura
Passaggio 1. Al prompt in modalità di esecuzione, verificare che la funzionalità di ripristino della sessione sia abilitata tramite le licenze d'uso delle funzionalità e della sessione sul sistema con show license info
Se lo stato corrente della funzione di ripristino della sessione è Disattivato, non sarà possibile attivare questa funzione finché nel sistema non verrà installata una chiave di licenza.
Passaggio 2. Utilizzare questo esempio di configurazione per abilitare il ripristino della sessione.
configure
require session recovery
end
Questa funzionalità ha effetto solo dopo il riavvio del sistema.
Passaggio 3. Salvare la configurazione come descritto in Verifica e salvataggio della configurazione.
Passaggio 4. Eseguire un riavvio del sistema con reload
Viene visualizzato il prompt:
Confermare il proprio desiderio di eseguire un riavvio del sistema e immettere: Yes
.
Una volta riavviato, il sistema abilita il ripristino della sessione e crea tutte le attività in modalità standby di mirroring, esegue automaticamente prenotazioni delle schede di elaborazione dei pacchetti e altre operazioni.
Passaggio 5. Dopo il riavvio del sistema, è necessario verificare se il sistema è pronto a supportare questa funzione, come descritto in Visualizzazione dello stato di ripristino della sessione. Gli utenti più esperti possono scegliere di inserire il require session recovery
sintassi del comando in un file di configurazione già esistente con un editor di testo o con altri mezzi, quindi applicare manualmente il file di configurazione. Prestare attenzione quando si esegue questa operazione, per assicurarsi che il comando venga posizionato tra le prime righe di un file di configurazione già esistente. Il comando deve essere visualizzato prima della creazione di qualsiasi contesto non locale.