Linux kernel 使用MSI-X设备可以设置IRQ亲缘关系(Linux)?

Linux kernel 使用MSI-X设备可以设置IRQ亲缘关系(Linux)?,linux-kernel,affinity,irq,Linux Kernel,Affinity,Irq,我过去在Linux上通过设置proc文件的值来设置IRQ亲和性。[1] 但是,我注意到,当我在使用MSI-X设备的系统上执行此操作时 (PCIe)我想为NIC等设置亲缘关系,/proc/中断计数器增量 对于IRQ的每个核心,而不是我设置的单个核心。在一个非- MSI-X系统-指定的内核响应中断 我正在使用Linux内核3.11 简短:可以为使用MSI-X中断的设备设置IRQ关联性吗 [1] 为了避免cpu切换延迟,我正在尝试为SATA控制器设置IRQ(MSI-X)cpu亲和力。 到目前为止,我通

我过去在Linux上通过设置proc文件的值来设置IRQ亲和性。[1] 但是,我注意到,当我在使用MSI-X设备的系统上执行此操作时 (PCIe)我想为NIC等设置亲缘关系,/proc/中断计数器增量 对于IRQ的每个核心,而不是我设置的单个核心。在一个非- MSI-X系统-指定的内核响应中断

我正在使用Linux内核3.11

简短:可以为使用MSI-X中断的设备设置IRQ关联性吗


[1]

为了避免cpu切换延迟,我正在尝试为SATA控制器设置IRQ(MSI-X)cpu亲和力。 到目前为止,我通过以下途径获得了当前使用的IRQ:

IRQ=$(cat /proc/interrupts | grep ahci | awk -F':' '/ /{gsub(/ /, "", $1); print $1}')
只需通过
cat/proc/interrupts
查看中断即可看出,我的sata控制器处理涉及多个CPU

然后,我通过

我可以测试有效的亲和力

cat /proc/irq/$IRQ/effective_affinity
在进行了一段时间的磁盘基准测试之后,我注意到关联性仍保持配置状态。 例如:

在基准测试之前,将IRQ 134绑定到cpu 2:

 cat /proc/interrupts | egrep "ahci|CPU"
             CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
  134:   12421581          1          0         17       4166          0          0          0  IR-PCI-MSI 376832-edge      ahci[0000:00:17.0]
基准后:

 cat /proc/interrupts | egrep "ahci|CPU"
            CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
 134:   12421581    2724836          0         17       4166          0          0          0  IR-PCI-MSI 376832-edge      ahci[0000:00:17.0]
所以在我的例子中,我设置的亲和力保持了应有的状态。 我只能想象你有
irqbalance
作为服务运行。 你查过了吗? 在我的例子中,运行irqbalance会重新分配亲缘关系并覆盖我设置的亲缘关系

我的测试系统:CentOS 8.2 4.18.0-193.6.3.el8_2.x86_64#1 SMP Wed Jun 10 11:09:32 UTC 2020 x86_64 x86_64 GNU/Linux


最后,我没有获得更好的磁盘利用率/性能。我最初的问题是,fio基准不使用100%磁盘,仅仅是75-85%之间的一些值(有时是97%),我不知道为什么。

好问题“我最初的问题是,fio基准不使用100%磁盘”。对于这样的问题,您至少需要查看完整的fio工作,但这将是一个更多的新问题(在超级用户这样的网站上可能更好)。如果您使用的是文件系统中的文件,而不是块设备,我不会感到惊讶……谢谢,但IRQ cpu切换在我的可疑列表中,所以我需要排除它,因此我的线程不拖延;)
 cat /proc/interrupts | egrep "ahci|CPU"
            CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
 134:   12421581    2724836          0         17       4166          0          0          0  IR-PCI-MSI 376832-edge      ahci[0000:00:17.0]