操作系统调度程序利用 CPU 关联性将特定任务和中断分配给各个 CPU,最终优化性能。通过设置处理器关联性,系统可以在效率和速度方面发挥最大潜力。要获取有关 LAN743x 驱动程序使用的中断的信息,请按照以下步骤操作。首先,访问 /proc/interrupts 文件,该文件提供了按 CPU 分类的中断的完整列表。其中包括 IRQ 编号以及每个 CPU 内核处理的相应中断数量等详细信息。
1. 确保 MSIX 中断已启用
通过命令在内核中搜索lan743x了解 MSIX 的状态;
# dmesg|grep lan743x
[73967.507105] lan743x 0000:01:00.0 (unnamed net_device) (uninitialized): PCI: Vendor ID = 0x1055, Device ID = 0x7430
[73967.507340] lan743x 0000:01:00.0 (unnamed net_device) (uninitialized): ID_REV = 0x74300011, FPGA_REV = 0.0
[73967.507368] lan743x 0000:01:00.0 (unnamed net_device) (uninitialized): MAC address set to 00:1e:c0:e1:31:95
[73967.554524] libphy: lan743x-mdiobus: probed
[73967.595268] lan743x 0000:01:00.0 eth1: using MSIX interrupts, number of vectors = 6
[73967.596060] lan743x 0000:01:00.0 eth1: Link is Down
[73971.685907] lan743x 0000:01:00.0 eth1: Link is Up - 1Gbps/Full - flow control rx/tx
2. 查找 RX 和 TX 路径的 CPU 关联性
为了在多个 CPU 内核的系统上配置 LAN743X 驱动程序的中断关联,首先下列命令识别链接到 lan743x 驱动程序的 IRQ 号;
$more /proc/interrupts |grep lan743x
CPU0 CPU3 CPU4 CPU5
460: 3668 0 0 0 Tegra PCIe MSI 0 Edge lan743x
461: 1696123 0 0 0 Tegra PCIe MSI 1 Edge lan743x
462: 825610 0 0 0 Tegra PCIe MSI 2 Edge lan743x
463: 0 0 0 0 Tegra PCIe MSI 3 Edge lan743x
464: 0 0 0 0 Tegra PCIe MSI 4 Edge lan743x
465: 0 0 0 0 Tegra PCIe MSI 5 Edge lan743x
3. 使用 IRQ 号找到适当的 smp_affinity 文件
默认情况下,smp_affinity 值设置为“0x3F”,允许系统中的任何 CPU 处理 IRQ。但是,将其更改为“8”会将中断服务仅限于 CPU 4
# echo 8 >/proc/irq/460/smp_affinity
# cat /proc/irq/460/smp_affinity
8
当手动将 smp_affinity 更改为核心 #0 以外的核心时,观察 UDP 性能的性能提升。
|