目錄

簡介

背景

調查步驟

步驟 1.觀察症狀

KNI：記憶體不足日誌

EGTPC路徑故障

步驟 2.檢查DI網路運行狀況是否下降

show session recovery status verbose

show cloud monitor di-network detail

show cloud monitor controlplane

show cloud monitor dataplane

步驟 3.檢查Userspace KNI丟棄

show iftask stats

步驟 4.檢查硬體驅動程式

摘要

簡介

本文檔介紹如何確定StarOS應用程式中的問題或硬體驅動程式是否導致StarOS KNI：記憶體不足日誌。

背景

在DPDK內部轉發器(IFTASK)流程中的核心網路介面(KNI)模組是一種機制，它允許使用者空間程式直接從網路介面接收資料包，完全繞過Linux網路和Linux IP堆疊。

KNI：當存在影響KNI模組的資源爭用問題時，會產生記憶體不足日誌速率限制警告。

1. 未清除裸機（硬體）級別的記憶體緩衝區，從而導致緩衝區溢位。

2. iftask從中為這些資料包分配消息緩衝區的KNI池空間不足。

3. 虛擬功能會查詢更多資料包，但物理功能會響應它沒有任何內容。

4. 一旦KNI：記憶體不足情況發生，iftask將進入備份記憶體池進一步配置和處理資料包。如果備份池也耗盡記憶體，系統將丟棄資料包。

5. 由於iftask無法讀取來自核心的資料包突發，因此將在StarOS中生成KNI：記憶體不足日誌。

觸發KNI：記憶體不足情況：

緩衝區溢位情況的潛在觸發因素可能有所不同，例如運行SFTP或SCP應用程式，或者在CF和SF卡之間傳輸非常大的檔案。

調查步驟

步驟 1.觀察症狀

步驟 2.檢查DI網路運行狀況是否下降

步驟 3.檢查Userspace KNI丟棄

步驟 4.檢查硬體驅動程式

步驟 1.觀察症狀

將KNI：記憶體不足錯誤的時間與資料包丟失或應用層降級(egtpc路徑故障)等其他症狀關聯。

KNI：記憶體不足日誌

- 在StarOS系統日誌中，您可以看到指示核心網路介面記憶體不足的日誌。

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

- 如果備份記憶體耗盡，您會看到指示備份池記憶體也耗盡的錯誤消息。

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)

- 在debug shell的tmp目錄中發現的IFTask日誌中，您可以看到KNI： Out of Memory錯誤：

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

EGTPC路徑故障

- 到達不同對等體的gtpc路徑失敗中可能會出現峰值，原因在資料包丟失期間對等體沒有響應。

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

步驟 2.檢查DI網路運行狀況是否下降

找出哪些連線效能下降。如果持續觀察，DI網路運行狀況輸出中較高的丟包或丟失百分比可能表示DI網路配置或運行問題、流量超載，或VM或主機問題。

show session recovery status verbose

- 使用show session recover status verbose輸出確定哪個虛擬功能卡用作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

- 使用「show cloud monitor di-network detail」輸出確定虛擬功能卡之間的哪些DI網路連線在心跳中丟棄。

- 顯示從CF卡和SF卡到SF卡6的檢測訊號丟失。CF和SF卡到其他CF和SF卡的輸出顯示無心跳丟棄。

******** 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

- 使用show cloud monitor contoplane輸出確定哪些DI網路連線存在降級。

******** 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

- 使用show cloud monitor dataplane輸出確定哪些DI網路連線具有降級，並確定虛擬功能卡之間的任何單向降級。

******** 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%

步驟 3.檢查Userspace KNI丟棄

show iftask stats

- 多次收集show iftask stats輸出，以驗證KNI丟棄在IFTASK userspace應用程式級別(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

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

步驟 4.檢查硬體驅動程式

在應用層免除責任後，重點關注硬體級別的基礎驅動程式，以解決KNI：記憶體不足錯誤。

由於裸機硬體驅動程式為每個虛擬功能分配一定量的緩衝區，資源爭用問題通常是由硬體級別的驅動程式不匹配或驅動程式缺陷導致的。配置應用程式所需緩衝區的有缺陷的硬體驅動程式並未釋放記憶體。

如果使用的是第三方（非思科）虛擬化軟體和/或硬體，請調查版本和驅動程式是否存在潛在的相容性不匹配或缺陷。

摘要

要確定KNI：記憶體不足錯誤是由應用程式級進程還是由底層硬體驅動程式引起的，請檢查是否存在DI網路降級和userspace KNI丟棄證據。如果存在DI網路降級，而沒有相應的使用者空間KNI降級，則可確定原因是在硬體級別。KNI：硬體層級降級的記憶體不足錯誤表示硬體驅動程式故障。

解除安裝節點並重新載入受影響的應用程式級StarOS虛擬功能所在的主機計算，可以臨時清除基礎計算上的記憶體緩衝區，從而暫時減少錯誤和資料包丟失。但是，這不是一個永久的解決方案！ 當故障的硬體驅動程式上再次發生緩衝區溢位狀況時，封包遺失和KNI：記憶體不足錯誤就會再次發生。