Skip to content

hjat2005/LearningNetworkNotes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

影响性能的因素

  1. CPU
  2. 内存访问速度
  3. 中断系统

工具利器

  1. perf
  2. top
  3. vmstat
  4. mpstat
  5. pidstat
  6. objdump
  7. memtest
  8. iperf
  9. netperf
  10. 查询网络相关信息的脚本

高性能编码方式

分析性能的基本方式

网络性能分析案例

网络驱动的收发基本流程

在开始描述网络的性能分析前,先简单讲一下网卡驱动程序的收发流程。

接收流程

Lemon的一个网口有16个硬件接收队列组成,每个队列深度为1024, 当网卡接收到数据时,通过多元组的RSS算法来决定分发到哪个硬件队列,并填充对应软件预先分配好的BD,一般每个控制器都会有可配置的中断聚合参数,也就是软件可以配置中断上报的频率,网卡中断聚合参数分两种,一种是中断超时,一种是中断个数(这两者的配置都是基于网卡的而不是队列的),只要其中一个条件满足后,硬件就会上报中断上报,上报中断后,先屏蔽相应的硬中断,启用软中断轮询解析BD内容,转换为协议栈识别的skb数据,向上层传递,轮询完成后,就打开硬中断,等待新的数据,如此反复循环。

发送流程

Lemon的一个网口有16个硬件发送队列组成,每个队列深度为1024,由协议栈组织好SKB数据下发到驱动,再调用之前,如果网卡有多队列,首先会调用选择发送队列的函数,选择好队列后,就调用驱动注册的发送函数,驱动的发送函数主要工作是将SKB翻译成硬件识别的BD信息,然后更新tail指针,通知硬件发送,像接收一样,积攒一定数量的发送完成时间后,硬件就会中断绑定的CPU核,先屏蔽相应的硬中断,启用软中断轮询发送完成的BD, 调用函数进行资源回收,轮询结束后,就打开中断。

影响接收性能的因素:

  • 中断聚合参数的设置,此参数决定一个中断中处理的报文个数,如果在设置的过低,大流量下CPU负载过高,每次轮询的报文个数减少,如果设置过大,硬件会很容易塞满,触发PAUSE帧发送,最终导致性能降低;
  • 内存的管理,第一,减少BD的数据向SKB结构体内存拷贝,第二,较少内存的申请释放,第三,CPU核尽量访问同一numa节点下的内存。

当前芯片的缺点

  1. 同一网口所有收发队列公用一个中断聚合参数,而友商网卡每个队列一个聚合参数,配置更为灵活。
  2. 当来一个中断后,没有DFX寄存器可以表明当前的中断是由于超时触发的还是接收、发送帧数达到触发的,此信息对调整中断参数很有帮助。

UDP性能不达标问题定位

最刚开始解决的是多进程UDP性能达不到82599的标准,而且在自动化环境还发现10进程的性能还比5进程还低,甚至降到连1进程都达不到的水平,既然是XGE和82599、10线程和5线程性能的对比问题,那就测试在同等条件下这两组环境的各项对比数据,如下:

通过上述的对比数据,得出结论:无论是10进程、5进程还是3进程,XGE都是CPU核6的si占用率都100%,使用perf top命令查看热点函数,都是tx回收资源 而

tips: 期间为了加快测试速度,写了一个shell脚本进行快速

  • 在跑相同进程数量的netperf,使用perf和top工具分析差异,有个明显的差异点,通过top信息看进行 top命令和82599做对比

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published