dpdk 程序性能问题排查
- 确定网卡类型与性能要求,与硬件组沟通确认网卡性能基线数据,基线数据符合要求则执行下面的步骤
- 使用 perf 确定当前使用的收发包函数,未使用向量收发包函数,开启向量收发包函数后问题得到解决则终止
- 确定当前收发包线程绑核情况,修改 grub 配置,添加 isolcpus、nohz_full、rcu_nocbs 配置,隔离收发包线程绑定核后重新测试,达到要求则终止
- 修改 irq 亲和性后重新测试,达到要求则终止
- 重复 3 与 4 过程,绑定不同的核,采集绑定到奇数核,偶数核,相邻核上性能数据,获取收发包统计,查看 imissed 字段与 nombuf 字段
- 观测第 5 步收集到的信息,判断是否在绑定某个核时性能较优,设定最优的绑核情况
- 将网卡更换到不同的槽位,采集性能数据,验证是否存在性能差异
- 杀掉无关进程,排查是否其它进程影响,无影响则继续向下排查
- 执行上述步骤仍旧达不到要求时,开启多队列,问题得到解决则终止
- 执行上述步骤无效后,观测测试数据中 imissed 较高则调大 rx、tx 描述符数量,达到要求则终止
- 第 8 步无效后,执行 perf、vtune 采集性能热点,从软件侧优化