如何将多个 IRQ 设置为最低优先级

如何将多个 IRQ 设置为最低优先级

我在 msinfo32.exe 中看到我有一个符合 ACPI 的系统。

对于 IRQ 54 至 511,我想将它们全部设置为最低优先级。

使用注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\控制\PriorityControl

很难逐一设置

我想轻松设置所有

例如“IRQ54-551Priority”

是否可以?

答案1

创建并运行.bat包含以下命令的文件:

@echo off
echo Windows Registry Editor Version 5.00 >f.reg
echo. >>f.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl] >>f.reg
for /l %%G IN (54,1,511) DO echo "IRQ%%GPriority"=dword:00000001 >>f.reg

f.reg这将在当前文件夹中创建包含以下内容的文件:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl] 
"IRQ54Priority"=dword:00000001 
"IRQ55Priority"=dword:00000001 
...
"IRQ511Priority"=dword:00000001 

双击该文件f.reg以导入所有这些注册表项。

在脚本中将 替换00000001为您想要为所有这些 IRQ 分配的优先级。

答案2

TL,DR 版本:这是个骗局。别担心。

澄清:harrymc 的脚本肯定会生成指示的 .reg 文件!但将这些值添加到注册表中不会对您的机器产生任何影响。(不会有帮助;也不会造成伤害。)

Windows 中没有任何代码会关注这些注册表值。它就是不存在。

那里键中的一个值,PriorityControl称为Win32PrioritySeparation。这用于指定服务器与“客户端”Windows 系统以及在客户端系统上拥有前台窗口的进程与所有其他进程的调度程序时间片的变化。(当然,这方面的详细信息在Windows 内部原理作者:所罗门·鲁西诺维奇等人

但这是 Windows 在此键中查看或寻找的唯一内容。所有这些精心创建的“IRQ_nn_Priority”值都将被忽略。您可以在其中创建一个名为的值,ComeOnMicrosoftMakeMyMachineFaster它将产生完全相同的结果。

历史

这个骗局至少可以追溯到 Windows XP 时代,当时大量桌面用户从 Win9x 转向 XP,出现了数十个“XP 调整”网站。其中许多网站气喘吁吁地承诺将“IRQ8Priority”设置为 1 将通过优先考虑系统的计时器中断来提高性能。也许这是 Win9x 配置文件之一的有效设置;我不知道。或者可能适用于其他操作系统。但不适用于 NT 系列(NT 3.1 到 Windows 10)。

(请注意,故事已经发生了变化。当时的说法是,将“IRQ8Priority”设置为 1 会使该 IRQ 上的设备最高优先级。现在这个神话已经扩大,你可以为许多不同的 IRQ 设置不同的“优先级”,而 1 现在是最低优先!嗯嗯。)

早在 2003 年,我就此事向 Windows 的一位 HAL 和平台支持首席开发人员询问过。他确认这完全是假的。他也想不出任何理由让任何人认为任何与之相关的东西可能存在。

结论……有人凭空捏造了这个故事。

如果你想确认 Windows没有看看这个,只需使用 sysinternals 工具“进程监视器”(procmon),将其设置为从启动时监视注册表访问,并查找对除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl之外的任何注册表值的访问Win32PrioritySeparation。你不会找到任何。

顺便说一句,Windows 中的“优先级”是线程的一个属性。但中断处理程序不是线程,因此它们一开始甚至没有“优先级”。

查找 ProcMon这里。您需要有管理员权限才能使用它。

相关内容