Introduzione
Questo documento descrive come determinare se StarOS KNI: I registri di memoria insufficiente sono causati da problemi nell'applicazione StarOS o da driver hardware.
Introduzione
Il modulo KNI (Kernel Network Interface), all'interno del processo IFTASK (DPDK Internal Forwarder), è un meccanismo che consente ai programmi dello spazio utente di ricevere pacchetti direttamente da un'interfaccia di rete, ignorando completamente la rete Linux e lo stack IP Linux.

KNI Gli avvisi di limitazione della velocità dei registri di memoria esaurita vengono generati quando si verifica un problema di conflitto di risorse che interessa il modulo KNI.
- I buffer di memoria non vengono cancellati a livello di bare metal (hardware), causando un sovraccarico del buffer.
- Lo spazio dei pool KNI, dai quali iftask alloca il buffer dei messaggi per questi pacchetti, è esaurito.
- La funzione virtuale cerca altri pacchetti, ma la funzione fisica risponde che non ha nulla.
- Una volta che il KNI: Si verifica una condizione di memoria insufficiente, se il task entra nel pool di memoria di backup per allocare ed elaborare ulteriormente il pacchetto. Se anche il pool di backup esaurisce la memoria, il sistema scarta i pacchetti.
- Poiché iftask non è in grado di leggere la frammentazione di pacchetti provenienti dal kernel, l'interfaccia KNI: Su StarOS viene prodotto un registro di memoria esaurita.
Trigger per KNI: Condizione di memoria insufficiente:
I potenziali trigger per la condizione di overflow del buffer possono variare, come l'esecuzione di applicazioni SFTP o SCP o un trasferimento di file molto grande tra schede CF e SF.
Fasi da esaminare
Passaggio 1. Osservare i sintomi
Passaggio 2. Verificare il peggioramento dello stato della rete DI
Passaggio 3. Controllare le gocce KNI di Userspace
Passaggio 4. Controllare i driver hardware
Passaggio 1. Osservare i sintomi
Correlazione tra i tempi di KNI: Errori di memoria insufficiente con altri sintomi, ad esempio perdite di pacchetti o degradazioni del livello dell'applicazione (errori di percorso egtpc).
KNI Registri di memoria esaurita
- In StarOS Syslogs, è possibile vedere i log che indicano che l'interfaccia di rete kernel è fuori memoria.
2023-Nov-16+09:18:03.205 [iftask 214701 error] [1/0/9602 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 la memoria di backup è esaurita, è possibile che vengano visualizzati messaggi di errore indicanti che anche la memoria del pool di backup è esaurita.
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)
- Nei log di IFTask, presenti nella directory tmp nella shell di debug, è possibile osservare il KNI: Errori di memoria insufficiente:
Wed Nov 15 17:20:30 2023 PID:7387 KNI: Out of memory, kni port cpbond0, socket_id=0, total=-759247296, iter=25
Errori di percorso EGTPC
- Picchi nei guasti del percorso gtpc a vari peer possono verificarsi con la causa Nessuna risposta dal peer può verificarsi durante il tempo della perdita del pacchetto.
2023-10-23T00:14:33.813+00:00 Nodename evlogd: [local-60sec33.780] [egtpmgr 143137 info] [6/0/12364 egtpmgr_pm.c:905] [context: mme_ctx, contextID: 3] [software internal system critical-info syslog] context: mme_ctx, service : mme_svc_egtp, self addr: , GTP-C path failure for peer , peer session count marked: 0, egtpmgr state SRP_SESS_STATE_ACTIVE
Passaggio 2. Verificare il peggioramento dello stato della rete DI
Individuare le connessioni che stanno subendo il degrado. Se osservate in modo duraturo, percentuali maggiori di perdita o perdita negli output di integrità della rete DI possono indicare problemi operativi o di configurazione della rete DI, sovraccarico del traffico o problemi di VM o host.
visualizzazione dettagliata dello stato di ripristino della sessione
- Usare gli output verbose per visualizzare lo stato di ripristino della sessione per identificare la scheda a funzioni virtuali che funge da scheda 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
mostra dettagli di-network monitor cloud
- Usare gli output "show cloud monitor di-network detail" per identificare le connessioni di-network tra le schede a funzione virtuale che hanno una diminuzione degli heartbeat.
- Sono mostrate le cadute in heartbeat dalle schede CF e SF alla scheda SF 6. Le uscite per le schede CF e SF ad altre schede CF e SF non mostrano cali di battito.
******** 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
- Usare show cloud monitor control output per identificare le connessioni di rete di cui si è verificata la riduzione.
******** 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%
mostra piano dati del monitor del cloud
- Utilizzare show cloud monitor dataplane output per identificare le connessioni di rete di cui si è verificata la degradazione e per identificare eventuali degradazioni unidirezionali tra le schede di funzione virtuali.
******** 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%
Passaggio 3. Controllare le gocce KNI di Userspace
mostra statistiche iftask
- Raccogliere più volte show iftask stats output per verificare che le cadute KNI non siano incrementate nel livello applicazione spazio utente IFTASK (StarOS).
******** 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
-----------------------------------------------------------------------------------------------
Passaggio 4. Controllare i driver hardware
Una volta eliminato il livello dell'applicazione dalla responsabilità, concentrarsi sui driver sottostanti a livello di hardware per affrontare il KNI: Errori di memoria insufficiente.
Poiché il driver hardware bare-metal alloca una determinata quantità di buffer per ogni funzione virtuale, i problemi di contesa delle risorse sono in genere il risultato di una mancata corrispondenza del driver o di driver difettosi a livello hardware. Il driver hardware difettoso che ha allocato i buffer necessari per un'applicazione non ha rilasciato la memoria.
Se sono in uso software e/o hardware di virtualizzazione di terze parti (non Cisco), esaminare le versioni e i driver per individuare potenziali incompatibilità o difetti.
Riepilogo
Per determinare se KNI: Gli errori di memoria insufficiente, causati da processi a livello di applicazione o da driver hardware sottostanti, consentono di verificare eventuali danni alla rete DI e le perdite di KNI nello spazio utente. Se il degrado della rete DI esiste senza una degradazione KNI dello spazio utente corrispondente, la causa può essere conclusa a livello hardware. KNI Gli errori di memoria insufficiente con riduzione del livello hardware indicano driver hardware difettosi.
L'offload del nodo e il ricaricamento dei computer host su cui risiede la funzione virtuale StarOS a livello di applicazione interessata possono cancellare temporaneamente i buffer di memoria sul computer sottostante, con una conseguente riduzione temporanea degli errori e delle perdite di pacchetti. Tuttavia, questa non è una soluzione permanente! Perdite di pacchetti e KNI: Gli errori di memoria insufficiente si verificano di nuovo quando la condizione di overflow del buffer si ripete nel driver hardware difettoso.