Contents

Introdução

Background

Etapas para investigar

Etapa 1. Observar os sintomas

KNI: Logs sem memória

Falhas de caminho EGTPC

Etapa 2. Verificar a degradação da integridade da rede DI

show session recovery status verbose

show cloud monitor di-network detail

show cloud monitor controlplane

show cloud monitor dataplane

Etapa 3. Verificar Quedas KNI do Espaço do Usuário

show iftask stats

Etapa 4. Verifique os drivers de hardware

Summary

Introdução

Este documento descreve como determinar se StarOS KNI: Out of Memory logs são causados por problemas no aplicativo StarOS ou por drivers de hardware.

Background

O módulo Kernel Network Interface (KNI), dentro do processo de Encaminhador Interno DPDK (IFTASK), é um mecanismo que permite que programas de espaço de usuário recebam pacotes diretamente de uma interface de rede, ignorando a rede Linux e a pilha IP Linux completamente.

KNI: avisos de limitação de taxa de logs de memória insuficiente são produzidos quando há um problema de contenção de recursos que afeta o Módulo KNI.

1. Os buffers de memória não são limpos no nível bare-metal (hardware), causando uma saturação do buffer.

2. Os pools do KNI, a partir dos quais o iftask aloca o buffer de mensagens para esses pacotes, ficam sem espaço.

3. A função virtual consulta mais pacotes, mas a função física responde que não tem nada.

4. Quando a condição KNI: Memória Insuficiente ocorre, o iftask entra no pool de memória de backup para alocar e processar o pacote ainda mais. Se o pool de backup também ficar sem memória, o sistema descartará os pacotes.

5. Como o iftask não pode ler a intermitência de pacotes vindos do kernel, o log KNI: Memória Insuficiente é produzido no StarOS.

Acionadores para KNI: Condição de Memória Insuficiente:

Os possíveis acionadores para a condição de estouro de buffer podem variar, como executar aplicativos SFTP ou SCP ou uma transferência de arquivos muito grande entre cartões CF e SF.

Etapas para investigar

Etapa 1. Observar os sintomas

Etapa 2. Verificar a degradação da integridade da rede DI

Etapa 3. Verificar Quedas KNI do Espaço do Usuário

Etapa 4. Verifique os drivers de hardware

Etapa 1. Observar os sintomas

Correlacione a temporização de KNI: erros de memória insuficiente com outros sintomas, como perdas de pacotes ou degradações da camada de aplicação (falhas de caminho egtpc).

KNI: Logs sem memória

- Nos Syslogs StarOS, você pode ver logs indicando que a interface de rede kernal está sem memória.

2023-Nov-16+09:18:03.205 [iftask 214701 error] [1/0/9602 <evlogd:0> evlgd_syslogd.c:236] [software internal system syslog] CPU[3/0]: Nov 16 14:18:03 iftask[7387]: KNI: Out of memory, kni port cpbond0, socket_id=0, total=-130952296, iter=27

- Se a memória de backup estiver esgotada, você poderá ver mensagens de erro indicando que a memória do pool de backup também está esgotada.

RTE_LOG(ERR, KNI, "Out of memory from Backup pool, kni port %s, socket_id=%d, total=%d, iter=%d\n", kni->name, rte_socket_id(), kni->oom_backup_warn, i)

- Nos logs IFTask, encontrados no diretório tmp no shell de depuração, você pode observar os erros KNI: Memória Insuficiente:

Wed Nov 15 17:20:30 2023 PID:7387 KNI: Out of memory, kni port cpbond0, socket_id=0, total=-759247296, iter=25

Falhas de caminho EGTPC

- Picos em falhas de caminho de gtpc para vários peers podem ocorrer com a causa Nenhuma resposta do peer pode ocorrer durante o tempo das perdas de pacotes.

2023-10-23T00:14:33.813+00:00 Nodename evlogd: [local-60sec33.780] [egtpmgr 143137 info] [6/0/12364 <egtpegmgr:3> egtpmgr_pm.c:905] [context: mme_ctx, contextID: 3]  [software internal system critical-info syslog] context: mme_ctx, service : mme_svc_egtp, self addr: <X.X.X.X>, GTP-C path failure for peer <Y.Y.Y.Y>, peer session count marked: 0, egtpmgr state SRP_SESS_STATE_ACTIVE

Etapa 2. Verificar a degradação da integridade da rede DI

Localize quais conexões estão sofrendo degradação. Quando vistos continuamente, os percentuais mais altos de queda ou perda nas saídas de integridade da rede DI podem indicar problemas operacionais ou de configuração da rede DI, sobrecarga de tráfego ou problemas de VM ou Host.

show session recovery status verbose

- Use show session recover status verbose para identificar qual placa de função virtual está servindo como placa Demux.

******** show session recovery status verbose *******

Tuesday October 24 11:23:45 EDT 2023

Session Recovery Status:

Overall Status        : Ready For Recovery

Last Status Update    : 1 second ago

----sessmgr---  ----aaamgr----  demux

cpu state    active standby  active standby  active  status

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

3/0 Active   24     1        24     1        0       Good

4/0 Active   24     1        24     1        0       Good

5/0 Active   24     1        24     1        0       Good

6/0 Active   0      0        0      0        10      Good (Demux)

7/0 Active   24     1        24     1        0       Good

8/0 Active   24     1        24     1        0       Good

9/0 Active   24     1        24     1        0       Good

10/0 Active   24     1        24     1        0       Good

11/0 Active   24     1        24     1        0       Good

12/0 Standby  0      24       0      24       0       Good

show cloud monitor di-network detail

- Use as saídas "show cloud monitor di-network detail" para identificar quais conexões de rede DI entre placas de função virtuais possuem quedas nos heartbeats.

- Quedas nas pulsações de cartões CF e SF para SF Card 6 são mostradas. As saídas para cartões CF e SF para outros cartões CF e SF não mostram quedas de pulsação.

******** show cloud monitor di-network detail *******

Tuesday October 24 11:23:51 EDT 2023

Card 1 Heartbeat Results:

ToCard   Health     5Min-Loss     60Min-Loss

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

…

6      Good        0.00%         0.66%

…

Card 2 Heartbeat Results:

…

6       Bad       14.67%         3.50%

…

Card 3 Heartbeat Results:

…

6       Bad        5.35%         2.69%

…

Card 4 Heartbeat Results:

…

6      Good        0.00%         0.00%

…

Card 5 Heartbeat Results:

…

6       Bad       18.57%         3.90%

…

Card 6 Heartbeat Results:

…

1      Good        0.00%         0.90%

2       Bad       12.63%         3.31%

3       Bad        2.90%         2.14%

4      Good        0.00%         0.00%

5       Bad       13.09%         3.30%

7      Good        0.00%         0.00%

8       Bad        2.91%         2.20%

9      Good        0.00%         0.93%

10       Bad       14.28%         3.38%

11       Bad        3.67%         2.09%

12      Good        0.00%         0.00%

…

Card 7 Heartbeat Results:

…

6      Good        0.00%         0.00%

…

Card 8 Heartbeat Results:

…

6       Bad        7.47%         2.85%

…

Card 9 Heartbeat Results:

…

6       Bad        0.00%         1.07%

…

Card 10 Heartbeat Results:

…

6       Bad       16.01%         3.73%

…

Card 11 Heartbeat Results:

…

6       Bad        7.47%         2.71%

…

Card 12 Heartbeat Results:

…

6      Good        0.00%         0.00%

show cloud monitor controlplane

- Use as saídas do show cloud monitor controller para identificar quais conexões de rede DI sofreram degradação.

******** show cloud monitor controlplane *******

Tuesday October 24 11:24:22 EDT 2023

Cards      15 Second Interval     5 Minute Interval    60 Minute Interval

Src  Dst    Xmit   Recv  Miss%    Xmit   Recv  Miss%    Xmit   Recv  Miss%

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

…

01   06      75     75   0.0%    1500   1500   0.0%   18000  17842   0.9%

…

02   06      75     75   0.0%    1500   1265  15.7%   18000  17546   2.5%

…

03   06      75     75   0.0%    1500   1396   6.9%   18000  17491   2.8%

…

04   06      75     75   0.0%    1500   1500   0.0%   18000  18000   0.0%

…

05   06      75     75   0.0%    1500   1267  15.5%   18000  17325   3.8%

…

06   01      75     75   0.0%    1500   1500   0.0%   18000  17823   1.0%

06   02      75     75   0.0%    1500   1301  13.3%   18000  17567   2.4%

06   03      75     75   0.0%    1500   1419   5.4%   18000  17561   2.4%

06   04      75     75   0.0%    1500   1500   0.0%   18000  18000   0.0%

06   05      75     75   0.0%    1500   1294  13.7%   18000  17579   2.3%

06   07      75     75   0.0%    1500   1500   0.0%   18000  18000   0.0%

06   08      75     75   0.0%    1500   1417   5.5%   18000  17565   2.4%

06   09      75     75   0.0%    1500   1500   0.0%   18000  17824   1.0%

06   10      75     75   0.0%    1500   1296  13.6%   18000  17573   2.4%

06   11      75     75   0.0%    1500   1422   5.2%   18000  17570   2.4%

06   12      75     75   0.0%    1500   1500   0.0%   18000  18000   0.0%

…

07   06      75     75   0.0%    1500   1500   0.0%   18000  18000   0.0%

…

08   06      75     75   0.0%    1500   1426   4.9%   18000  17545   2.5%

…

09   06      75     75   0.0%    1500   1500   0.0%   18000  17833   0.9%

…

10   06      75     75   0.0%    1500   1278  14.8%   18000  17369   3.5%

…

11   06      75     75   0.0%    1500   1408   6.1%   18000  17481   2.9%

…

12   06      75     75   0.0%    1500   1500   0.0%   18000  18000   0.0%

show cloud monitor dataplane

- Use show cloud monitor dataplane para identificar quais conexões de rede DI têm degradação e para identificar qualquer degradação unidirecional entre placas de função virtuais.

******** show cloud monitor dataplane *******

Tuesday October 24 11:21:46 EDT 2023

Cards      15 Second Interval     5 Minute Interval    60 Minute Interval

Src  Dst    Miss    Hit    Pct    Miss    Hit    Pct    Miss    Hit    Pct

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

…

06   01       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   02       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   03       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   04       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   05       1    149   0.7%       0   3001   0.0%       0  36000   0.0%

…

01   06       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

02   06       0    150   0.0%     210   2790   7.0%    1015  34985   2.8%

03   06      31    119  20.7%     540   2460  18.0%     995  35005   2.8%

04   06      34    116  22.7%     554   2446  18.5%    1017  34983   2.8%

05   06       0    150   0.0%     213   2787   7.1%     991  35009   2.8%

07   06       0    150   0.0%       0   3000   0.0%     359  35641   1.0%

08   06      29    121  19.3%     546   2454  18.2%    1009  34991   2.8%

09   06       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

10   06       0    150   0.0%     208   2792   6.9%     992  35008   2.8%

11   06      31    119  20.7%     548   2452  18.3%     993  35007   2.8%

12   06      34    116  22.7%     547   2453  18.2%    1001  34999   2.8%

…

06   07       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   08       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   09       0    150   0.0%       0   3000   0.0%       1  35999   0.0%

…

06   10       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   11       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

…

06   12       0    150   0.0%       0   3000   0.0%       0  36000   0.0%

Etapa 3. Verificar Quedas KNI do Espaço do Usuário

show iftask stats

- Colete as saídas de show iftask stats várias vezes para verificar se as quedas de KNI não estão aumentando no nível do aplicativo de espaço de usuário (StarOS) de IFTASK.

******** show iftask stats *******

Tuesday October 24 11:22:06 EDT 2023

…

CARD 6 STATS

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

Counters  SF6   SF6_PPS

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

svc_rx                          2587301598                      2203

svc_tx                          548969428                       295

di_rx                           2260147059                      2258

di_tx                           4072038717                      3966

__ALL_DROPS__                   0                               0

svc_tx_drops                    0                               0

di_rx_drops                     0                               0

di_tx_drops                     0                               0

sw_rss_enq_drops                0                               0

kni_thread_drops                0                               0

kni_drops                       0                               0

mcdma_drops                     0                               0

mux_deliver_hop_drops           0                               0

mux_deliver_drops               0                               0

mux_xmit_failure_drops          0                               0

mc_dma_thread_enq_drops         0                               0

sw_tx_egress_enq_drops          0                               0

cpeth0_drops                    0                               0

mcdma_summary_drops             0                               0

fragmentation_err               0                               0

reassembly_err                  0                               0

reassembly_ring_enq_err         0                               0

__DISCARDS__                    241984                          0

__BOND_DISCARDS__               55282718                        142

…

TOTAL STATS

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

Counters TOTAL  TOTAL_PPS

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

svc_rx                          27964563261                     24791

svc_tx                          36109966153                     30168

di_rx                           74133486629                     51929

di_tx                           73958155063                     50897

__ALL_DROPS__                   0                               0

svc_tx_drops                    0                               0

di_rx_drops                     0                               0

di_tx_drops                     0                               0

sw_rss_enq_drops                0                               0

kni_thread_drops                0                               0

kni_drops                       0                               0

mcdma_drops                     0                               0

mux_deliver_hop_drops           0                               0

mux_deliver_drops               0                               0

mux_xmit_failure_drops          0                               0

mc_dma_thread_enq_drops         0                               0

sw_tx_egress_enq_drops          0                               0

cpeth0_drops                    0                               0

mcdma_summary_drops             0                               0

fragmentation_err               0                               0

reassembly_err                  0                               0

reassembly_ring_enq_err         0                               0

__DISCARDS__                    2324968                         0

__BOND_DISCARDS__               55635534                        149

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

NDR is      100.0000

CONTINUE_TRAFFIC

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

Etapa 4. Verifique os drivers de hardware

Com a camada de aplicação livre de culpabilidade, concentre-se nos drivers subjacentes no nível de hardware para resolver os erros KNI: Memória Insuficiente.

Como o driver de hardware bare-metal aloca uma certa quantidade de buffer para cada função virtual, os problemas de contenção de recursos são geralmente o resultado de uma incompatibilidade de driver ou drivers defeituosos no nível de hardware. O driver de hardware defeituoso que alocou os buffers necessários para um aplicativo não liberou a memória.

Se um software e/ou hardware de virtualização de terceiros (que não sejam da Cisco) estiver em uso, investigue as versões e os drivers em busca de possíveis incompatibilidades ou defeitos de compatibilidade.

Summary

Para determinar se os erros KNI: Memória Insuficiente são causados por processos em nível de aplicativo ou por drivers de hardware subjacentes, verifique se há evidência de degradação da rede DI e quedas KNI de espaço de usuário. Se a degradação da rede DI existir sem uma degradação KNI de espaço de usuário correspondente, a causa pode ser concluída para ser no nível de hardware. KNI: erros de Memória Insuficiente com degradação de nível de hardware indicam drivers de hardware defeituosos.

Um descarregamento do nó e o recarregamento dos computadores host nos quais reside a função virtual StarOS afetada no nível do aplicativo pode limpar temporariamente os buffers de memória no computador subjacente, resultando em uma redução temporária nos erros e nas perdas de pacotes. No entanto, esta não é uma solução permanente! Perdas de pacotes e erros KNI: Memória Insuficiente se repetem quando a condição de estouro de buffer se repete no driver de hardware com falha.