searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

DPDk Virtio 零丢包测试配置优化

2023-06-26 02:57:01
24
0

DPDk Virtio 零丢包测试配置优化

零丢包测试是网络转发性能的重要指标之一,也是DPDK开发团队一直以来关注的领域。 本文将介绍一下DPDK虚拟化环境中零丢包测试的配置环境和配置方法。Vhost/Virtio 零丢包测试中,测试拓扑结构和南北向吞吐量测试相同,但是对测试平台配置有着更高的要求。 操作系统的实时性配置和Virtio的Vring长度对数据包处理的实时性影响是巨大的, 为获取最好的零丢包性能,我们需要对这两个方面进行优化。

Vring Size

更大的Vring size 能够提供更多的数据缓冲空间,从而降低丢包概率。在较老的Qemu版本中,Qemu所提供的virtio设备的rx_queue_size固定为256,这个size并不足以提供足够多的缓冲空间。在较新的Qemu2.8中,我们可以通过参数配置来修改这个配置值,支持的最大值达到了1024,可通过如下参数配置:
qemu_2.8/bin/qemu-system-x86_64
......
device virtio-net-pci,…… ,rx_queue_size=1024
......
我们下面来看一下相同环境配置下,修改rx_queue_size带来的PVP零丢包性能影响:
请输入图片名称
可以看到,增大vring size 到1024后,64Byte小包的转发吞吐量提高了近75%。
注意:增大Vring size也会相应地带来更高的时延

Host及VM的实时性配置

零丢包性能对系统的稳定性实时性提出了更高的要求,现有的服务器基本都是多核系统,Linux系统中断及多任务调度严重影响系统的实时性能,带来更高的丢包概率。下面将举例列举几个可以优化的配置:
1. Core隔离: 在Linux Grub配置文件中,将测试需要用到的core进行隔离,例如isolcpus=18-22,保证测试命令独占相应的core
2. 无时钟设置:Linux会将系统调度时钟中断scheduling-clock interrupt分配到各个core,core响应该任务会带来延时,该配置可将系统的计时功能移到未被隔离的core上,nohz_full=18-22, 18-22将会标记为adaptive-ticks CPU
3. 更改任务调度优先级:我们在启动测试命令时,可以通过chart –f 95 前缀,将系统的调速策略改为sched_fifo, 优先级95 ,系统将优先运行我们测试命令, 同时,我们可以通过以下配置来保证测试命令不会因为执行超时而被调度

  1. echo -1 > /proc/sys/kernel/sched_rt_period_us
  2.  
  3. echo -1 > /proc/sys/kernel/sched_rt_runtime_us
  4.  

  1. 修改/proc/irq/irq_number/smp_affinity_list,保证中断不会被分配到已经隔离的core 上
  2. 关闭Watchdog:
  1. echo 0 > /proc/sys/kernel/watchdog_thresh
  2.  


在实际测试过程中,我们发现这些实时性设置带来的零丢包性能增长是巨大大,能够带来4~5倍左右的性能提升。
在DPDK17.05 版本中,DPDK的测试团队发布了X86平台上Vhost/Virtio的性能报告。
测试环境信息:
请输入图片名称
在DPDK 17.05版本下,零丢包测试结果如下:
请输入图片名称
请输入图片名称

如果想得到更多Vhost/Virtio 最新性能配置信息以及测试命令,可查看文章左下角“阅读原文”中的文档,或复制以下链接到浏览器查看文档:
http://fast.dpdk.org/doc/perf/DPDK_17_05_Intel_virtio_performance_report.pdf
0条评论
0 / 1000
林****坤
2文章数
0粉丝数
林****坤
2 文章 | 0 粉丝