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


32

Process Explorer能够显示给定线程的有效IO优先级,但不能更改它。鉴于IO优先级支持是一个相对较新的功能,因此大多数程序都没有设置自己的IO优先级。看来,默认情况下,IO优先级是从线程优先级(而不是进程优先级)派生的,Process Explorer也不能修改。

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


这里几乎堆栈溢出同样的问题:stackoverflow.com/questions/301290/...
Mehper C. Palavuzlar

3
@ [Mehper C. Palavuzlar]是的,但这不是我开发的软件-我正在寻找现成的工具来在第三方软件上执行此操作。
RomanSt

Answers:


11

现成的工具

可以通过手动用户操作自动化和持久性来设置流程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。


我不喜欢Windows编程和OS级别的东西,但是我听说过提高线程的优先级,一直到THREAD_PRIORITY_TIME_CRITICAL都可以用您的程序或任何程序进行吗?还是仍然只能调整IO PRIORITY,而不能调整线程cpu优先级?我想更改IO优先级不会对CPU使用率产生太大影响,对吗?
barlop 2012年

是。两者都可以设置并保持不变。还可以基于规则(例如,CPU亲和力)设置或动态更改许多其他内容。I / O优先级与CPU优先级不同。
dyasta 2013年

那不是“在第三方软件上执行此操作的现成工具”。
Cees Timmerman 2014年

对不起,我认为问题可能已经过编辑,很明显我是从程序化的角度回答的(未编辑)。Process Lasso是一个“现成的工具,可以在第三方软件上执行此操作”。参见bitsum.com
dyasta,2016年

23

我在看到没有人打扰之后开发了它:https : //sourceforge.net/projects/iopriority/(开源)

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


1
我只是注意到您不允许它在Server 2012R2上将进程更改为“高优先级”。
jftuga 2014年

14

ProcessHacker是一个GUI工具,可以更改任意进程的IO优先级。


为什么看起来像Russinovich那样?
DanielMošmondor2013年

1
@DanielMošmondor也许是受ProcExp及其局限性的启发?我个人切换,因为ProcExp表现完全错误的CPU使用率在我的笔记本电脑后的版本14
RomanSt

1
不仅如此,ProcExp还能够对我的comp进行BSOD操作,等等。它是免费的吗?
DanielMošmondor2013年

@DanielMošmondor是的,此外,它实际上在各个方面都比ProcExp做得更多。UI稍有不同,但确实功能强大。
RomanSt 2013年

1

我偏爱一个名为PRIO的免费应用程序,它是一个进程优先级保护程序(除其他功能外),占用空间非常小(不到1 MB)。安装后,它会在后台静默运行,直到您需要它为止,并且它的界面直接内置在Windows Task Manager中,从而扩展了它的功能并使它看起来像添加的功能始终是Task Manager的一部分。当您在任务管理器中右键单击某个进程以更改其优先级时,就会看到一些PRIO的新增功能,因为您不仅可以更改该进程的CPU优先级,还可以更改其I / O优先级(请问您的问题) ,并且您可以根据需要选择保存新设置。最后一个使得每次运行该进程(即该程序)时,您设置和保存的CPU和I / O进程优先级都将生效。

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


听起来像一个很棒的应用程序。有连结吗?
Stijn de Witt

1
如果您是说PRIO,可以从许多不同的内容聚合器(如cnet)中获得PRIO,但是直接从开发者的网站上可以访问prnwatch.com/prio
Mike Mounier
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.