如何在 Ubuntu 12.04 中调整 IRQ 优先级?

如何在 Ubuntu 12.04 中调整 IRQ 优先级?

这个问题说明了一切。我在网上看到了一些针对 Ubuntu 早期版本的教程,但对于 12.04 却遇到了困难。

答案1

在运行专业音频应用程序时,此类问题非常重要。正如您所见,正如我过去多次经历过的那样,Askubuntu.com 倾向于告诉我们,我们不需要这类问题的答案。对于这些狭隘的问题,您可以在以下地方找到更友好的帮助:Linux音乐家论坛或 OpenSourceMusicians IRC 频道 (#opensourcemusicians)。

我运行 KX Studio(这是 Kubuntu 上的专业音频发行版),并且在 #kxstudio 和 #ardour IRC 频道上获得了很多帮助。

无论如何,既然我已经在上述资源的帮助下弄清楚了,那么现在您可以这样做。

使用这些命令来发现音频设备的 USB 总线和 IRQ:

  • lsusb (或 lsusb -t)
  • lspci (或 lspci -v)
  • 猫/ proc /中断

就我而言,我的 USB 音频接口是 ehci_hcd:usb2,IRQ 为 23。可能不太容易弄清楚,但如果您交叉引用上述列表,经过一番侦查工作后,您就会找出哪个 IRQ 值得关注。请参阅下文了解更多提示。

接下来,安装 rtirq,
请参阅 Ubuntu Wiki:
https://wiki.edubuntu.org/UbuntuStudio/rtirq

现在编辑文件 /etc/default/rtirq(以 sudo 身份)。并查找包含以下内容的行RTIRQ_NAME_LIST=

如果您希望 IRQ 23 具有最高优先级,请将其添加到列表的前面,如下所示:

RTIRQ_NAME_LIST="23 usb i8042 snd"

但是,就我而言,我宁愿使用设备名称,以防 IRQ 分配由于某些未知原因而发生变化。因此我像这样指定它:

RTIRQ_NAME_LIST="ehci_hcd:usb2 usb i8042 snd"

只需将设备(或 IRQ)放在列表​​的最前面即可获得最高优先级。这是一个空格分隔的列表。

保存文件,然后运行:

sudo /etc/init.d/rtirq restart

无需重启。您将看到上述命令列出的 IRQ 优先级。但如果您想稍后再查看它们,请运行:

sudo /etc/init.d/rtirq status

并检查cat /proc/interrupts是否需要。

正如承诺的那样,还有一些额外的提示:

使用后lsusb我发现我的音频接口位于 USB 总线 001 设备 003 上。

接下来,使用lspci -v我发现我有 3 个 USB 控制器。我发现一个列表如下:00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1。列表中的标志包括这些:Flags: bus master, medium devsel, latency 0, IRQ 23。因此,假设我选择了正确的 USB 控制器(控制总线 01 的控制器),这些标志告诉我我对 IRQ 23 感兴趣。

接下来,告诉我 IRQ 23 具有与之关联的/proc/interrupts设备名称。ehci_hcd:usb2

我还使用tree /sys/bus/usb/drivers/usb/cat /proc/asound/cards交叉引用信息来选择正确的 USB 控制器。

您可能还会发现以下 Perl 脚本很有用:
realTimeConfigQuickScan.pl

答案2

通常情况下,无需调整 IRQ 优先级,除非您遇到特殊问题,并希望应用启动选项(irqpollUbuntu 维基百科。最好让内核管理它们或者在 BIOS 中查找任何选项,因为那将是配置的最佳位置。

然而,你可能指的是硬件工具甚至在 Hardy (8.04) 之前就已存在的软件包,其中包含该irqtune程序;此实用程序允许您调整串行设备(如调制解调器)的 IRQ,过去据说这有时可以提高性能。现在很少使用串行端口,但可能存在bios启用/禁用和调整它们的设置。

然而,存储库中有一个名为中断平衡,专为多核 CPU 设计。更多信息但它可能不适合您,因为它更多地与平衡服务器负载有关。

如果您想在 Ubuntu 中列出您的 IRQ 端口,您可以运行cat /proc/interrupts或安装该程序的下一代版本procinfo,然后运行该程序和随附程序lsdev以获取更多信息。以下是一些示例输出procinfo,非常简短,可帮助您识别您的 IRQ:

irq   0:         49  timer               irq  15:      30500  pata_sis         
irq   1:      18634  i8042               irq  17:      78117  firewire_ohci, ye
irq   6:          3  floppy              irq  18:         82  snd_intel8x0     

相关内容