如何在Win7中更改进程或线程的I/O优先级?

如何在Win7中更改进程或线程的I/O优先级?

Process Explorer 能够显示给定线程的有效 IO 优先级,但不能更改它。由于 IO 优先级支持是一项相对较新的功能,大多数程序不会设置自己的 IO 优先级。默认情况下,IO 优先级似乎来自线程优先级(而不是进程优先级),而 Process Explorer 也无法修改线程优先级。

还有其他工具可以帮助我更改给定线程/给定进程的所有线程的 IO 优先级吗?

答案1

现成的工具

第三方工具用于设置进程 I/O 优先级,可以通过用户手动操作或者自动化和持久性,将是进程套索. 它可以设置几乎任何进程设置,并且可以持续地或通过规则进行设置(例如,当发生这种情况时,更改其 I/O 优先级)。

程序化答案

答案是一个简单的 NT Native API 调用,NTSet信息进程。它在 2008 DDK 中被定义为“IoPriority”类。在 NT6 中仅支持两个级别:非常低(背景)和普通的。技术上定义了 5 个级别 - 严重、高、正常、低和极低。严重级别保留用于分页操作。其他级别没有数据。

然而,使用 I/O 优先级的正确方法是通过调用 Windows API 启动“后台模式”设置优先级类别,提供 PROCESSS_MODE_BACKGROUND_BEGIN。这将导致它使用非常低(背景)I/O 优先级,以及 IDLE CPU 优先级类别。完成后,通过 PROCESS_MODE_BACKGROUND_END 恢复。

设置线程优先级API 还将允许特定线程使用相同的后台模式。在这里,您需要提供 THREAD_MODE_BACKGROUND_BEGIN/END。

答案2

在发现没人关心这个问题后,我开发了这个:https://sourceforge.net/projects/iopriority/(开源)

此程序能够设置进程的 I/O 优先级,并且所有线程都会立即受其影响。修改它以使用线程而不是进程相当容易。

答案3

进程黑客是一个可以改变任意进程的 IO 优先级的 GUI 工具。

答案4

我偏爱一款名为 PRIO 的免费应用程序(网址为 prnwatch.com/prio),它是一款进程优先级保护程序(还有其他功能),占用空间非常小(不到 1 MB)。安装后,它会在后台静默运行,直到您需要它为止,并且它的界面直接内置在 Windows 任务管理器中,从而扩展了它的功能,并使添加的功能好像始终是任务管理器的一部分。当您右键单击任务管理器中的某个进程以更改其优先级时,PRIO 的一些附加功能就会显现出来,因为您不仅可以更改进程的 CPU 优先级,还可以更改其 I/O 优先级(因此您的问题),并且您可以选择保存新设置(如果您愿意的话)——也就是说,使它们持久。

关于 I/O 优先级设置有一点需要特别注意:不知道为什么,但这些设置只能往下调,即在“正常”下面,因为“高于正常”和“高”总是灰色的(有人知道为什么吗?)。这与 CPU 优先级形成对比,CPU 优先级涵盖了整个范围,包括“实时”(尽管不推荐使用后者)。

该应用程序还具有其他功能,可以扩展 Windows 任务管理器中各个选项卡的功能。该应用程序有 32 位和 64 位系统版本,个人使用可免费使用。

相关内容