2024年tplink无线网卡经常断网

tplink无线网卡经常断网引子 使用 qlogic QL45000 网卡测试业务性能 发现 cpu 软中断分布不均衡 而且很有规律 导致 cpu 空闲也不是很均衡 会影响业务稳定性 设备使用 3 张网卡 Qlogic 网卡 配置为 4 25G 模式 也就是 12 个 25G 网口 三张网卡中其中两张接在物理 cpu0 上

引子

  使用qlogic QL45000网卡测试业务性能,发现cpu软中断分布不均衡,而且很有规律,导致cpu空闲也不是很均衡,

会影响业务稳定性。    

  设备使用3张网卡Qlogic网卡,配置为4*25G模式,也就是12个25G网口。三张网卡中其中两张接在物理cpu0上,

另一张接在物理cpu1上。笔者以为是由于三张网卡在物理架构上不均衡导致的cpu软中断不均衡,但是屏蔽了物理

cpu0上的其中一张网卡的四个网口后,cpu软中断仍然不均衡。所以,可能是其他原因导致的这个问题。

 

问题背景

   我们的设备主要是提供高并发业务,出向流量带宽达到网口带宽的80%,为了提高服务器网卡发包性能,一般会

对网卡中断绑核,应用程序也会做发包绑核。我们一般的绑核原则是网卡中断依次绑定在各个cpu核上,中断和cpu核

是一对一的,也就是ethX-RxTx-0 对应cpu0,ethX-RxTx-1对应cpu1,ethX-RxTx-N 对应cpuN,N是最大的cpu核数。

一般网卡可用队列数(一般队列数和网卡中断数对应的)是与cpu核数对应的。但是也有网卡可配置最大队列数小于

cpu核数,比如Mellanox网卡和我们现在用到的Qlogic网卡。

  当网卡可配置最大队列数小于cpu核数时,我们倾向于配置网卡队列数为cpu核数的一半,然后把网卡中断绑定到

该网卡所在numa节点对应的cpu上。目的是为了避免网卡NAPI poll跨numa节点处理中断(清理rx、tx队列),造成不

必要的系统消耗。

  在使用Qlogic网卡做业务性能测试时,就是按照以上说明做网卡队列设置和绑核。但是出现了系统软中断不均衡

的问题。下面显示了系统CPU负荷,网口出向流量、perf top等数据信息。

 

相关数据信息

CPU负荷信息:

CPU            %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle

15:56:00     all    8.58    0.00   15.00    0.00    2.15   14.84    0.00    0.00    0.00   59.43

15:56:00       0   18.45    0.00    9.22    0.00    2.43   14.08    0.00    0.00    0.00   55.83

15:56:00       1    8.43    0.00    8.99    0.00    2.81   14.04    0.00    0.00    0.00   65.73

15:56:00       2    7.21    0.00   21.63    0.00    1.92   12.02    0.00    0.00    0.00   57.21

15:56:00       3    8.20    0.00   18.58    0.00    2.19   13.11    0.00    0.00    0.00   57.92

15:56:00       4    4.79    0.00    5.99    0.00    2.40   14.37    0.00    0.00    0.00   72.46

15:56:00       5    6.82    0.00    8.52    0.00    2.84   14.20    0.00    0.00    0.00   67.61

15:56:00       6    6.74    0.00   10.67    0.00    2.81   13.48    0.00    0.00    0.00   66.29

15:56:00       7    7.73    0.00   21.74    0.00    2.42   11.59    0.00    0.00    0.00   56.52

15:56:00       8    7.22    0.00   16.49    0.00    2.06   12.89    0.00    0.00    0.00   61.34

15:56:00       9   11.11    0.00   13.13    0.00    2.02   12.12    0.00    0.00    0.00   61.62

15:56:00      10   13.36    0.00   17.05    0.00    2.30   11.06    0.00    0.00    0.00   56.22

15:56:00      11    8.51    0.00   12.77    0.00    2.66   12.77    0.00    0.00    0.00   63.30

15:56:00      12    9.76    0.00   16.10    0.00    1.95   12.20    0.00    0.00    0.00   60.00

15:56:00      13    6.70    0.00   10.06    0.00    2.23   13.41    0.00    0.00    0.00   67.60

15:56:00      14    6.99    0.00   27.51    0.00    1.75   10.92    0.00    0.00    0.00   52.84

15:56:00      15   11.00    0.00   18.18    0.00    2.39   11.96    0.00    0.00    0.00   56.46

15:56:00      16    7.83    0.00   23.04    0.00    1.84   11.06    0.00    0.00    0.00   56.22

15:56:00      17    6.54    0.00   23.36    0.00    1.87   11.68    0.00    0.00    0.00   56.54

15:56:00      18    9.38    0.00   13.54    0.00    2.08   12.50    0.00    0.00    0.00   62.50

15:56:00      19    5.88    0.00    7.65    0.00    2.35   14.12    0.00    0.00    0.00   70.00

15:56:00      20    7.69    0.00   12.64    0.00    2.20   13.74    0.00    0.00    0.00   63.74

15:56:00      21    6.25    0.00   10.23    0.00    2.27   13.64    0.00    0.00    0.00   67.61

15:56:00      22    8.25    0.00   19.07    0.00    2.58   17.53    0.00    0.00    0.00   52.58

15:56:00      23    7.89    0.00   13.68    0.00    2.63   18.42    0.00    0.00    0.00   57.37

15:56:00      24    8.59    0.00   21.21    0.00    2.02   16.67    0.00    0.00    0.00   51.52

15:56:00      25   16.75    0.00   12.81    0.00    1.97   16.75    0.00    0.00    0.00   51.72

15:56:00      26    9.09    0.00   12.83    0.00    2.14   17.65    0.00    0.00    0.00   58.29

15:56:00      27    8.33    0.00    8.89    0.00    2.22   18.89    0.00    0.00    0.00   61.67

15:56:00      28    7.85    0.00   14.66    0.00    2.62   17.80    0.00    0.00    0.00   57.07

15:56:00      29   11.61    0.00   23.66    0.00    1.79   14.73    0.00    0.00    0.00   48.21

15:56:00      30    7.94    0.00   13.76    0.00    2.12   16.40    0.00    0.00    0.00   59.79

15:56:00      31    8.99    0.00   13.23    0.00    2.12   17.46    0.00    0.00    0.00   58.20

15:56:00      32   10.95    0.00   19.05    0.00    1.90   15.71    0.00    0.00    0.00   52.38

15:56:00      33   12.25    0.00   13.73    0.00    1.96   16.18    0.00    0.00    0.00   55.88

15:56:00      34    7.07    0.00   13.59    0.00    2.17   16.85    0.00    0.00    0.00   60.33

15:56:00      35    6.32    0.00    8.05    0.00    2.30   18.39    0.00    0.00    0.00   64.94

15:56:00      36    9.84    0.00   13.47    0.00    2.07   16.06    0.00    0.00    0.00   58.55

15:56:00      37    7.22    0.00   12.78    0.00    2.78   18.33    0.00    0.00    0.00   58.89

15:56:00      38    8.38    0.00   17.80    0.00    2.62   18.32    0.00    0.00    0.00   52.88

15:56:00      39   17.73    0.00   15.45    0.00    2.27   14.55    0.00    0.00    0.00   50.00

15:56:00      40    6.52    0.00   14.67    0.00    2.72   16.85    0.00    0.00    0.00   59.24

15:56:00      41    7.22    0.00   15.98    0.00    2.06   16.49    0.00    0.00    0.00   58.25

15:56:00      42    6.91    0.00   13.83    0.00    2.66   17.02    0.00    0.00    0.00   59.57

15:56:00      43    6.84    0.00   17.89    0.00    2.63   17.89    0.00    0.00    0.00   54.74

15:56:00      44    8.08    0.00   15.66    0.00    2.53   16.16    0.00    0.00    0.00   57.58

15:56:00      45    5.36    0.00   10.12    0.00    2.38   19.64    0.00    0.00    0.00   62.50

15:56:00      46    6.63    0.00   14.36    0.00    2.21   17.13    0.00    0.00    0.00   59.67

15:56:00      47    7.50    0.00   17.00    0.00    2.00   17.50    0.00    0.00    0.00   56.00

15:56:00      48    6.88    0.00   16.40    0.00    2.12   16.93    0.00    0.00    0.00   57.67

15:56:00      49    7.21    0.00   21.63    0.00    1.92   16.35    0.00    0.00    0.00   52.88

15:56:00      50    8.57    0.00   20.95    0.00    2.38   15.71    0.00    0.00    0.00   52.38

15:56:00      51    4.52    0.00   13.56    0.00    2.26   18.64    0.00    0.00    0.00   61.02

15:56:00      52    6.91    0.00   14.36    0.00    2.13   16.49    0.00    0.00    0.00   60.11

15:56:00      53    7.14    0.00    9.89    0.00    1.65   17.03    0.00    0.00    0.00   64.29

15:56:00      54   14.04    0.00   18.86    0.00    1.75   14.47    0.00    0.00    0.00   50.88

15:56:00      55   10.00    0.00   21.82    0.00    1.82   15.00    0.00    0.00    0.00   51.36

15:56:00      56    9.36    0.00   15.76    0.00    1.97   15.76    0.00    0.00    0.00   57.14

15:56:00      57    6.78    0.00    9.60    0.00    2.26   17.51    0.00    0.00    0.00   63.84

15:56:00      58    6.56    0.00   10.38    0.00    2.19   18.03    0.00    0.00    0.00   62.84

15:56:00      59    8.78    0.00   19.02    0.00    1.95   16.59    0.00    0.00    0.00   53.66

15:56:00      60    7.89    0.00   12.11    0.00    2.11   16.84    0.00    0.00    0.00   61.05

15:56:00      61    5.08    0.00    9.04    0.00    2.26   18.08    0.00    0.00    0.00   65.54

15:56:00      62    5.65    0.00    8.47    0.00    1.69   17.51    0.00    0.00    0.00   66.67

15:56:00      63    4.19    0.00    5.99    0.00    2.40   19.76    0.00    0.00    0.00   67.66

15:56:00      64    6.42    0.00   13.37    0.00    2.14   18.18    0.00    0.00    0.00   59.89

15:56:00      65    8.63    0.00   13.71    0.00    2.54   17.26    0.00    0.00    0.00   57.87

15:56:00      66    7.80    0.00   21.95    0.00    1.95   11.71    0.00    0.00    0.00   56.59

15:56:00      67    9.39    0.00   11.05    0.00    2.21   13.26    0.00    0.00    0.00   64.09

15:56:00      68    8.29    0.00   14.92    0.00    2.21   14.36    0.00    0.00    0.00   60.22

15:56:00      69   13.74    0.00   20.38    0.00    1.90   11.85    0.00    0.00    0.00   52.13

15:56:00      70   14.80    0.00   21.08    0.00    1.79   10.76    0.00    0.00    0.00   51.57

15:56:00      71   16.91    0.00   12.08    0.00    1.93   11.59    0.00    0.00    0.00   57.49

15:56:00      72    8.51    0.00   13.30    0.00    1.60   12.77    0.00    0.00    0.00   63.83

15:56:00      73    9.90    0.00   16.34    0.00    1.98   12.38    0.00    0.00    0.00   59.41

15:56:00      74    8.25    0.00   12.37    0.00    2.06   12.89    0.00    0.00    0.00   64.43

15:56:00      75    6.38    0.00   14.36    0.00    2.13   13.30    0.00    0.00    0.00   63.83

15:56:00      76    9.80    0.00   17.16    0.00    1.96   12.25    0.00    0.00    0.00   58.82

15:56:00      77    7.11    0.00   15.23    0.00    2.03   12.18    0.00    0.00    0.00   63.45

15:56:00      78    6.56    0.00   11.48    0.00    1.64   13.66    0.00    0.00    0.00   66.67

15:56:00      79    6.63    0.00    9.94    0.00    1.66   13.81    0.00    0.00    0.00   67.96

15:56:00      80    4.65    0.00    7.56    0.00    2.33   14.53    0.00    0.00    0.00   70.93

15:56:00      81    5.75    0.00    8.62    0.00    2.30   13.79    0.00    0.00    0.00   69.54

15:56:00      82    8.25    0.00   16.49    0.00    2.06   13.40    0.00    0.00    0.00   59.79

15:56:00      83    5.63    0.00   23.00    0.00    1.88   11.74    0.00    0.00    0.00   57.75

15:56:00      84    5.75    0.00    8.05    0.00    1.72   14.37    0.00    0.00    0.00   70.11

15:56:00      85   12.99    0.00   21.21    0.00    1.73   10.39    0.00    0.00    0.00   53.68

15:56:00      86    6.56    0.00   10.38    0.00    2.19   13.66    0.00    0.00    0.00   67.21

15:56:00      87    8.54    0.00   17.59    0.00    2.51   12.06    0.00    0.00    0.00   59.30

 

网卡流量信息:

注意:屏蔽了其中一个网卡

2019-01-25 16:06:09   bond5:     3.64 Mb/s In  81292.31 Mb/s Out -   2732.2 p/s In  .8 p/s Out
2019-01-25 16:06:09   bond6:     3.39 Mb/s In  93455.77 Mb/s Out -   1812.2 p/s In  .5 p/s Out
2019-01-25 16:06:09   bond7:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09   bond8:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09   bond9:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09  enp1s0bak:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09  enp2s0bak:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09    eth0:     0.90 Mb/s In  19991.22 Mb/s Out -    686.5 p/s In  .2 p/s Out
2019-01-25 16:06:09    eth1:     0.91 Mb/s In  20768.09 Mb/s Out -    675.0 p/s In  .8 p/s Out
2019-01-25 16:06:09   eth10:     3.17 Mb/s In  23021.46 Mb/s Out -   1449.2 p/s In  .0 p/s Out
2019-01-25 16:06:09   eth11:     0.07 Mb/s In  23860.54 Mb/s Out -    115.5 p/s In  .5 p/s Out
2019-01-25 16:06:09    eth2:     0.07 Mb/s In  23031.12 Mb/s Out -    122.2 p/s In  .0 p/s Out
2019-01-25 16:06:09    eth3:     0.07 Mb/s In  23538.46 Mb/s Out -    125.0 p/s In  .0 p/s Out
2019-01-25 16:06:09    eth4:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09    eth5:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09    eth6:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09    eth7:     0.00 Mb/s In      0.00 Mb/s Out -      0.0 p/s In       0.0 p/s Out
2019-01-25 16:06:09    eth8:     0.93 Mb/s In  20218.63 Mb/s Out -    692.5 p/s In  .0 p/s Out
2019-01-25 16:06:09    eth9:     0.90 Mb/s In  20313.86 Mb/s Out -    678.8 p/s In  .0 p/s Out

 

perf top信息

采集cpu44和cpu0的内核热点情况

 

数据分析:

    每个网口的出向流量基本一致,但是从CPU系统消耗来看,同一个物理cpu上cpu44-cpu65软中断

比cpu0-cpu21要高50%左右,cpu22-cpu43软中断比cpu66-cpu87也要高50%左右。

  从perf top 内核热点数据看,qlogic网卡驱动的qede_free_tx_pkt占用有很大的差别。对比cpu44

和cpu0的热点数据可以看出,qede_free_tx_pkt相差在1倍。

  qlogic驱动中qede_free_tx_pkt函数用于清理发送队列descriptor。这个函数是由驱动的qede_tx_int

函数调用,而qede_tx_int又由qede_poll函数调用。qede_poll用于NAPI接口做tx/rx完成清理descriptor

工作,该函数由软中断处理函数调用。

 

问题分析

  从上面分析看出,问题集中在不同cpu核上qede_free_tx_pkt函数的调用热度,也就是qede_tx_int函数

的热度。为了得到更精确的数据,笔者修改了qlogic qede网卡驱动,统计所有cpu核上调用qede_tx_int的

次数和耗时。代码片段如下。

统计每个cpu上调用qede_tx_int函数的次数:

 DEFINE_PER_CPU(atomic_t, qede_free_tx_cnt);

统计每个cpu上调用qede_tx_int函数消耗的时间:

DEFINE_PER_CPU(atomic64_t, qede_tx_time_use); 

 

qede_poll函数

 1 int qede_poll(struct napi_struct *napi, int budget)  2 {  3 struct qede_fastpath *fp = container_of(napi, struct qede_fastpath,  4  napi);  5 struct qede_dev *edev = fp->edev;  6 int rx_work_done = 0;  7  8 atomic_t *free_cnt = NULL;  9 atomic64_t *time_use = NULL; 10 unsigned long long pre_time = 0; 11 #ifdef TIME_FP_DEBUG /* ! QEDE_UPSTREAM */ 12  qede_log_time(edev, fp, QEDE_FP_TIME_START); 13 #endif 14 15 if (likely(fp->type & QEDE_FASTPATH_TX)) { 16 int cos; 17 18 for_each_cos_in_txq(fp->edev, cos) { 19 if (qede_txq_has_work(&fp->txq[cos])){ 20 free_cnt = &per_cpu(qede_free_tx_cnt, smp_processor_id()); 21 time_use = &per_cpu(qede_tx_time_use, smp_processor_id()); 22  atomic_inc(free_cnt); //增加调用次数 23 pre_time = qede_get_ms(); 24 qede_tx_int(edev, &fp->txq[cos]); 25 atomic64_add(qede_get_ms()-pre_time, time_use); //统计函数调用消耗时间 26  } 27  } 28  } 29 30 if ((fp->type & QEDE_FASTPATH_XDP) && 31 qede_txq_has_work(fp->xdp_tx)) 32  qede_xdp_tx_int(edev, fp); 33 34 rx_work_done = (likely(fp->type & QEDE_FASTPATH_RX) && 35 qede_has_rx_work(fp->rxq)) ? 36 qede_rx_int(fp, budget) : 0; 37 if (rx_work_done < budget) { 38 if (!qede_poll_is_more_work(fp)) { 39  napi_complete_done(napi, rx_work_done); 40 qede_log_napi(fp, 0); 41 42 /* Update and reenable interrupts */ 43  qede_log_intr(fp, IGU_INT_ENABLE); 44 qed_sb_ack(fp->sb_info, IGU_INT_ENABLE, 1); 45 } else { 46 rx_work_done = budget; 47  } 48  } 49 50 /* TODO - if NAPI is to be rescheduled, do we still want this now? */ 51 if (fp->xdp_xmit) { 52 u16 xdp_prod = qed_chain_get_prod_idx(&fp->xdp_tx->tx_pbl); 53 54 fp->xdp_xmit = 0; 55 fp->xdp_tx->tx_db.data.bd_prod = cpu_to_le16(xdp_prod); 56 qede_update_tx_producer(fp->xdp_tx); 57  } 58 59 #ifdef TIME_FP_DEBUG /* ! QEDE_UPSTREAM */ 60  qede_log_time(edev, fp, 61 (budget == rx_work_done) ? 62  QEDE_FP_TIME_END_RESCHEDULE : 63  QEDE_FP_TIME_END); 64 #endif 65  qede_log_napi(fp, rx_work_done); 66 return rx_work_done; 67 }
知秋君
上一篇 2024-11-15 09:36
下一篇 2024-11-13 14:55

相关推荐