我目前正在测试 HWOL 和 conntrack offload 的引入。在此过程中,我尝试将 CPU 固定应用于 softirq 并卸载工作队列。
对于卸载工作队列的 CPU 固定,我计划通过在文件中输入 CPU 位掩码来应用它/sys/devices/virtual/workqueue/nf_ft_offload_*/cpumask
。
我已经验证了卸载工作队列任务已正确分配该文件中指定的 CPU 位掩码的部分。
root@Qaamdhost02:/opt/script# ll /sys/devices/virtual/workqueue/nf_ft_offload_*/cpumask
drwxr-xr-x 3 root root 0 Jul 4 15:53 /sys/devices/virtual/workqueue/nf_ft_offload_add/cpumask
drwxr-xr-x 3 root root 0 Jul 4 15:53 /sys/devices/virtual/workqueue/nf_ft_offload_del/cpumask
drwxr-xr-x 3 root root 0 Jul 4 15:53 /sys/devices/virtual/workqueue/nf_ft_offload_stats/cpumask
我尝试自动化上述设置,但/sys/devices/virtual/workqueue/nf_ft_offload_*
仅在发生 conntrack 卸载任务时才会创建类型目录,因此在部署 VM 之前或之后很难实现自动化。
我很好奇是否有其他方法可以固定卸载工作队列的 CPU,或者是否有办法在部署 VM 后立即创建此目录。
硬件:
服务器:Dell R7615
CPU:AMD Epyc 9654P
内存:384GB
NUMA:1
NIC:Connect-X 6LX
软件版本:
操作系统:Ubuntu 22.04
内核:5.15
Openstack 版本:Yoga
OVN:22.03
OVS:2.17.5
MLNX OFED 驱动程序:5.8-2.0.3
固件:26.35.1012(DEL0000000031)
答案1
根据 Nvidia 论坛的回复,确认他们不支持在为 HWOL /w Conntrack Offload 工作注册 Linux Worker Queue 时查询任务的 API。
根据我们自己的测试,mlx5_core 驱动程序似乎在创建 VM 时注册了一个 Linux Worker Queue 任务。
考虑到与VM连接的Representation Port在VM创建时就被激活,因此我们使用networkd-dispatcher的carrier事件进行了测试,如下:
cat /etc/networkd-dispatcher/carrier.d/03-offload_pinned
#!/usr/bin/env bash
echo 0000000e,0000000e > /sys/devices/virtual/workqueue/nf_ft_offload_add/cpumask
echo 0000000e,0000000e > /sys/devices/virtual/workqueue/nf_ft_offload_del/cpumask
echo 0000000e,0000000e > /sys/devices/virtual/workqueue/nf_ft_offload_stats/cpumask
我们确认,在创建虚拟机时它可以正常工作。
您能否告诉我们此配置是否存在任何潜在问题或者是否有更好的方法?