将过程优先级设置为“高:危险?”


8

我已经读过,将某些内容设置为实时是很大的禁忌,所以我不会这样做。但是我确实有一个应用程序,需要确保它始终在系统上具有最高优先级,因为这对于我正在运行的其余应用程序至关重要。将优先级设置为高,是否比实时低一级有任何危险吗?

另外,如何通过更改快捷方式目标来做到这一点?命令是什么?


“高于正常”(Windows 7)设置更安全。一些讨论在这里... stackoverflow.com/questions/1663993/...
摩押

1
非常危险 主要问题是优先级倒置,这导致较高优先级的过程实际上实际上获得了较低的优先级,因为它可以被较低优先级的过程无限期地阻止
David Schwartz 2012年

如前所述,只要您的流程行为良好且仅在需要时运行,而在不需要时进入睡眠,则“实时”并不一定很糟糕,否则它将(并且将)阻止其他任务完全运行。
Mokubai

2
@David Schwartz,Cutler设计了Windows调度程序,以避免由于优先级反转而导致死锁。从support.microsoft.com/kb/96418中,“ Windows NT调度程序通过随机提高准备运行的线程的优先级来解决此问题(在本例中为低优先级的锁持有者)。低优先级的线程可以运行足够长的时间放开它们的锁(退出关键部分),然后高优先级的线程重新获得锁;如果低优先级的线程没有足够的CPU时间来第一次释放其锁,它将获得另一个机会在下一轮调度中。”
妮可·汉密尔顿

@NicoleHamilton这就是为什么有时程序由于高负载而没有在第一次单击(而您单击几次)时打开一次会打开几个实例的原因?
西蒙·韦贝克

Answers:


6

实时不一定是“不可以”。它可能会使其他进程耗尽CPU周期。某些应用程序无法处理。它是您必须尝试的东西。

高应该不是问题。但是,您仍然需要监视系统以查看所有应用程序是否运行良好。

这是通过命令行更改过程的方法,您可以将其置于快捷方式中:

http://support.microsoft.com/kb/191771


1
在Windows上,它确实很容易饿死其他进程(包括任务管理器本身)。
user1686 2012年

3
这完全取决于您的系统。根据CPU处理该进程的强度,可以使用实时关联。我现在可以实时运行流程,没有任何问题。此外,它还可以帮助设置与一个处理器的关联性,同时将优先级设置为实时。
Keltari 2012年

如果将某个进程设置为实时,是否会绝对优先于其正在运行的核心上的所有其他进程?我一直在尝试寻找方法来在矮人要塞运行时将我的核心之一奉献给它。
SaintWacko 2012年

3

我会说这取决于。如果您的计算机上只有一个内核/ CPU,并且这是一项占用大量CPU的任务,那么我不会将其设置为实时。高可能没问题,但这需要试验。

如果您有多个核心,并且该过程是单线程的:请继续进行,并根据需要进行设置。即使一个核心始终处于100%负载状态,您的其他核心仍将保持空闲状态。

如果您有多个内核,并且进程是多线程的:则取决于所有线程是否都具有100%的负载。一些程序具有一个“管理器”线程,该线程将工作分派到其他线程,但自身并不做很多处理。这样一来,一个内核几乎可以自由使用,因此可以实现较高或实时的优先级。

其他程序将尝试采用所有内核。在这种情况下,高可能会很好,但是需要进行实验。

甚至其他的也只会采用特定数量的内核,并且可能不会使用所有可用的内核。在这种情况下,高优先级或实时优先级应该可以。

除非您使用单核,否则请继续进行实验。在大多数情况下,将其设置为高甚至实时状态都不会受到损害。您也可以在任务管理器中设置进程的亲和力(可以使用多少个内核)。这样,您可以更好地平衡CPU上的负载。它还可以帮助降低温度和功耗等。


+1好的一点是,无论计算范围如何,单线程应用程序在多核计算机上都不会出现问题。
妮可·汉密尔顿

但是请不要忘记,如警告所示,[主要]单线程高优先级进程-即使它们仅影响单个内核-可以在异常时间内保持全局系统同步锁。
dyasta 2012年

1

这是否适合您完全取决于您的应用程序执行的操作。如果它经过漫长而又不需要等待I / O的计算,那么期望以高优先级运行它可以使您的机器瘫痪。但是,如果问题是延迟,并且您的应用程序仅需要响应I / O完成或类似事件而真正快速唤醒,请进行一些快速处理,然后再次回到睡眠状态,就可以了。


0

通常,将其主进程优先级设置为除正常以外的其他任何应用程序的性能都会对计算机上的所有其他内容产生不利影响。因此,如果每个应用程序都采取这种自我重视的态度,那么最终将无法正常工作。

使用更高优先级的正确方法是在单线程任务中,而不是在应用程序中。这些任务应该只在需要时运行,然后在没有工作要做时停止或暂停。如果在编写应用程序时感觉需要更改优先级基本级别,那么请认真考虑如何使必要的时间间隔尽可能短。

在您进行优先级提升之类的工作之前,甚至可能值得投资一本有关并行和并行处理的书或课程。

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.