Virtio 零丢包测试配置优化

作者简介:姚磊,英特尔软件测试工程师, 主要负责DPDK虚拟化相关方向的测试工作。

文章转载自DPDK与SPDK开源社区

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

1.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%。
Note:增大Vring size也会相应地带来更高的时延

2.Host及VM的实时性配置

零丢包性能对系统的稳定性实时性提出了更高的要求,现有的服务器基本都是多核系统,Linux系统中断及多任务调度严重影响系统的实时性能,带来更高的丢包概率。下面将举例列举几个可以优化的配置:

Core隔离: 在Linux Grub配置文件中,将测试需要用到的core进行隔离,例如isolcpus=18-22,保证测试命令独占相应的core

无时钟设置:Linux会将系统调度时钟中断scheduling-clock interrupt分配到各个core,core响应该任务会带来延时,该配置可将系统的计时功能移到未被隔离的core上,nohz_full=18-22, 18-22将会标记为adaptive-ticks CPU

更改任务调度优先级:我们在启动测试命令时,可以通过chart –f 95 前缀,将系统的调速策略改为sched_fifo, 优先级95 ,系统将优先运行我们测试命令, 同时,我们可以通过以下配置来保证测试命令不会因为执行超时而被调度

修改/proc/irq/irq_number/smp_affinity_list,保证中断不会被分配到已经隔离的core 上

关闭Watchdog:

在实际测试过程中,我们发现这些实时性设置带来的零丢包性能增长是巨大大,能够带来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


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/21136.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于18-07-18
1