Contents

Introduction

Descrição do problema

Análise

Solução

Procedimento

Introduction

Este documento descreve a solução para instâncias do sessmgr que entram no estado WARN devido a alto acsmgr_icsr_frwk_instance_chkpt_falied() uso do processo.

Descrição do problema

Plataforma ASR5500

Versão do SW: 21.27.4 e 21.19.10

Instâncias do gerenciador de sessões em estado de aviso devido ao alto consumo de memória em  acsmgr_icsr_frwk_instance_chkpt_falied()  funcionar quando a recuperação de sessão estiver desativada:

[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álise

Para isolar se a grande quantidade de assinantes totais dispara o processo acsmgr_icsr_frwk_instance_chkpt_falied() para ser utilizado em excesso, uma instância do sessmgr ocupada é executada e é confirmado que a utilização da memória do sessmgr não diminuiu:

[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

Nos logs, quando um ocupado-out é executado em uma das instâncias do sessmgr afetadas, ele diminui o número de sessões usadas, mas a alocação de memória usada ainda permanece alta e mostra que faz com que a instância do sessmgr esteja no estado WARN.

Após uma investigação mais aprofundada, acsmgr_icsr_frwk_instance_chkpt_falied()é chamada enquanto as informações do ponto de verificação são processadas. Há operações de adição/atualização/exclusão de lista nesta função que não funcionam como esperado quando a recuperação de sessão está desabilitada e esta é a razão para o aumento do consumo de memória. A memória usada aqui é acumulada nesse cenário com o tempo. Esse comportamento ocorre somente no cenário em que o require session recovery não está configurado. A memória acumulada a processar  acsmgr_icsr_frwk_instance_chkpt_falied() não é liberado quando (não require session recovery) que potencialmente causa a fuga de memória."

Solução

Implemente a recuperação de sessão para resolver esse problema.

Procedimento

Etapa 1. No prompt do modo Exec, verifique se o recurso de recuperação de sessão está habilitado através das licenças de uso de sessão e recurso no sistema com o comando show license info comando. Se o status atual do recurso Recuperação de sessão for Desabilitado, você não poderá habilitar esse recurso até que uma chave de licença seja instalada no sistema.

Etapa 2. Use este exemplo de configuração para habilitar a recuperação de sessão.

configure

require session recovery

end

Este recurso não entrará em vigor até que o sistema seja reiniciado.

Etapa 3. Salve sua configuração conforme descrito em Verificando e salvando sua configuração.

Etapa 4. Execute uma reinicialização do sistema com o comando reload comando. Este é o prompt exibido:

Are you sure? [Yes|No]:

Confirme seu desejo de reiniciar o sistema e entre Yes.

O sistema, quando reiniciado, ativa a recuperação de sessão e cria todas as tarefas espelhadas no "modo de espera", realiza reservas de placa de processamento de pacotes e outras operações automaticamente.

Etapa 5. Depois que o sistema for reiniciado, você deverá verificar a preparação do sistema para suportar esse recurso, conforme descrito em Exibição do Status de Recuperação da Sessão. Usuários mais avançados podem optar por inserir o require session recovery sintaxe de comando em um arquivo de configuração que já existe com um editor de texto ou outros meios e, em seguida, aplique manualmente o arquivo de configuração. Tenha cuidado ao fazer isso, para garantir que esse comando seja colocado entre as primeiras linhas de qualquer arquivo de configuração que já exista; ele deve aparecer antes da criação de qualquer contexto não local.