Virtio 零丢包测试配置优化

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

1 Vring Size

更大的Vring size 能够提供更多的数据缓冲空间,从而降低丢包概率。在较老的Qemu版本中,Qemu所提供的virtio设备的rx_queue_size固定为256,这个size并不足以提供足够多的缓冲空间。在较新的Qemu2.8中,我们可以通过参数配置来修改这个配置值,支持的最大值达到了1024,可通过如下参数配置:

我们下面来看一下相同环境配置下,修改rx_queue_size带来的PVP零丢包性能影响

2 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 ,系统将优先运行我们测试命令, 同时,我们可以通过以下配置来保证测试命令不会因为执行超时而被调度
echo -1 > /proc/sys/kernel/sched_rt_period_us
echo -1 > /proc/sys/kernel/sched_rt_runtime_us

(4) 绑定中断

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

(5) 关闭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

原文:DPDK开源社区

发表评论

电子邮件地址不会被公开。 必填项已用*标注