Process Explorer能够显示给定线程的有效IO优先级,但不能更改它。鉴于IO优先级支持是一个相对较新的功能,因此大多数程序都没有设置自己的IO优先级。看来,默认情况下,IO优先级是从线程优先级(而不是进程优先级)派生的,Process Explorer也不能修改。
是否有其他工具可以帮助我更改给定线程/给定进程的所有线程的IO优先级?
Process Explorer能够显示给定线程的有效IO优先级,但不能更改它。鉴于IO优先级支持是一个相对较新的功能,因此大多数程序都没有设置自己的IO优先级。看来,默认情况下,IO优先级是从线程优先级(而不是进程优先级)派生的,Process Explorer也不能修改。
是否有其他工具可以帮助我更改给定线程/给定进程的所有线程的IO优先级?
Answers:
现成的工具
可以通过手动用户操作或自动化和持久性来设置流程I / O优先级的第三方工具是Process Lasso。它可以设置几乎任何进程设置,并且可以持久地设置,也可以根据规则设置(例如,在发生这种情况时,更改其I / O优先级)。
程序化答案
答案是对NT本机API NTSetInformationProcess的简单API调用。在2008 DDK中,它被定义为“ IoPriority”类。在NT6中,仅支持两个级别:非常低(背景)和正常。技术上定义了5个级别-严重,高,正常,低和非常低。关键级别保留用于分页操作。没有其他数据。
但是,使用I / O优先级的正确方法只是通过调用Windows API SetProcessPriorityClass来启动“后台模式” ,并提供PROCESSS_MODE_BACKGROUND_BEGIN。这将导致它使用非常低的(后台)I / O优先级以及IDLE CPU优先级类别。完成后,通过PROCESS_MODE_BACKGROUND_END还原。
该SetThreadPriority函数 API也将允许特定的线程此相同的背景模式。在这里您将提供THREAD_MODE_BACKGROUND_BEGIN / END。
我在看到没有人打扰之后开发了它:https : //sourceforge.net/projects/iopriority/(开源)
该程序能够设置进程的I / O优先级,并且所有线程都会立即受到它的影响。修改它以使用线程而不是进程是很容易的。
ProcessHacker是一个GUI工具,可以更改任意进程的IO优先级。
我偏爱一个名为PRIO的免费应用程序,它是一个进程优先级保护程序(除其他功能外),占用空间非常小(不到1 MB)。安装后,它会在后台静默运行,直到您需要它为止,并且它的界面直接内置在Windows Task Manager中,从而扩展了它的功能并使它看起来像添加的功能始终是Task Manager的一部分。当您在任务管理器中右键单击某个进程以更改其优先级时,就会看到一些PRIO的新增功能,因为您不仅可以更改该进程的CPU优先级,还可以更改其I / O优先级(请问您的问题) ,并且您可以根据需要选择保存新设置。最后一个使得每次运行该进程(即该程序)时,您设置和保存的CPU和I / O进程优先级都将生效。
该应用程序还具有其他功能,这些功能还扩展了Windows任务管理器中各个选项卡的功能。32位和64位系统都有版本,该应用程序免费供个人使用。