测试环境:CPU:Intel 5218R
相等测试条件下,OVS-DPDK进行性能测试,不稳定出现性能好和性能差的情况,使用perf查看DPDK转发核热点函数如下:
性能好:
Samples: 31K of event 'cycles:ppp', 4000 Hz, Event count (approx.): 23213585482 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
28.88% ovs-vswitchd [.] virtio_dev_tx_split
11.62% ovs-vswitchd [.] virtio_dev_rx_split
11.21% ovs-vswitchd [.] dp_netdev_input__
5.30% ovs-vswitchd [.] dpcls_avx512_gather_mf_9_1
4.38% ovs-vswitchd [.] mfex_avx512_ip_udp
4.16% ovs-vswitchd [.] miniflow_extract
4.04% ovs-vswitchd [.] dp_netdev_input_outer_avx512
性能差:
Samples: 55K of event 'cycles:ppp', 4000 Hz, Event count (approx.): 34484373351 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
25.40% ovs-vswitchd [.] virtio_dev_tx_split
18.95% ovs-vswitchd [.] virtio_dev_rx_split
11.01% ovs-vswitchd [.] dp_netdev_input__
4.49% ovs-vswitchd [.] dpcls_avx512_gather_mf_9_1
3.86% ovs-vswitchd [.] mfex_avx512_ip_udp
3.81% ovs-vswitchd [.] miniflow_extract
3.44% ovs-vswitchd [.] dp_netdev_input_outer_avx512
可以明显看出是virtio_dev_rx_split() perf占比由11.62%涨到18.95%,导致性能下降。
持续跟踪发现是vhost发包的rte_memcpy(desc.addr, mbuf, len)perf占比上升,初步怀疑是desc.addr的cache未命中。
有大神遇到类似的问题吗,帮忙指点一二。