“实时”过程优先级设置是什么?


73

根据我过去的读物,我们鼓励您不要以编程方式更改Windows应用程序的优先级,如果这样做,则永远不要将其更改为“实时”。

与“高”和“高于正常”相比,“实时”过程优先级设置有什么作用?进程优先级列表,范围从低到实时。

Answers:


80

实时优先级线程永远不会被计时器中断抢占,并且以比系统中任何其他线程更高的优先级运行。这样,CPU绑定的实时优先级线程可能会完全破坏计算机。

创建实时优先级线程需要特权(SeIncreaseBasePriorityPrivilege),因此它只能由管理用户完成。

对于Vista及更高版本,确实要求它们以实时优先级运行的应用程序的一种选择是使用多媒体类调度程序服务(MMCSS),并让它管理线程的优先级。MMCSS可以防止您的应用程序占用过多的CPU时间,因此您不必担心会浪费机器的时间。


4
将单个随机进程(例如视频游戏)置于实时优先级对系统有危险吗?是否会建议高优先级/该应用程序的性能会明显下降?
mrfred 2015年

21
@mrfred我不会说这很危险,只是如果它是一个大型程序,它会使整个系统变慢。尝试将Minecraft的优先级设置为实时。相信我,这很有趣。鼠标速度变慢,按键需要5秒钟才能响应,explorer.exe变得无响应!
AMDG

3
@mrfred我个人一次连续数月在高优先级和实时优先级上运行天际,这使游戏运行更加流畅,只有偶尔的音频伪像(无论出于何种原因)。我从来没有遇到任何问题...我假设,如果发生严重错误,系统至少会过热,但是,当然,我真的不知道会出错。也许拥有多个内核可以抵消对IO设备等资源的任何匮乏
。–图腾

实时优先级线程和实时基本优先级类之间存在差异。后者适用于整个过程,无需对单个线程优先级进行额外设置,不会导致任何线程都是实时的。
dyasta

26

简而言之,“实时”优先级高于“高”优先级。我认为没有什么比这更多的了。哦,是的-您必须具有SeIncreaseBasePriorityPrivilege将线程放入Real Time类的功能。

Windows有时会出于各种原因提高线程的优先级,但不会将线程的优先级提高到另一个优先级类别。它也不会提高实时优先级类中线程的优先级。因此,高优先级线程不会将任何自动临时提升提升为实时优先级类。

Russinovich关于Windows如何处理优先级的“ Inside Windows”一章是了解其工作方式的重要资源:

请注意,在普通Windows系统上,具有实时优先级的线程绝对没有问题-它们不一定适用于专用计算机上运行的特殊进程。我认为多媒体驱动程序和/或进程可能需要具有实时优先级的线程。但是,这样的线程不需要太多的CPU-它应该在大多数时间处于阻塞状态,以便正常的系统事件得到处理。


8
是的,如果您的线程没有太多工作要做,但需要体验良好的响应时间,则适合使用实时线程。
Artelius

我知道我知道这是一篇过时的文章,但是我发现那本书的章节真的很好……让我前进了! google.ca/...
MotherDawg

1
感谢Archive.org的Wayback Machine,我找到了本书章节的链接:web.archive.org/web/20140909124652/http : //… (顺便说一句,我强烈建议在Chrome中创建一个自定义搜索引擎,如下所示:i.imgur .com / 0kNVAi0.png)。然后,您只需键入wayback <tab>并粘贴您所在的相同网址。您可能必须删除http://前缀。
布伦特·里滕豪斯'18

15

这将是最高的可用优先级设置,通常仅在专用于运行该特定程序的盒子上使用。它实际上足够高,可能会导致键盘和鼠标线程无响应,从而导致饥饿。

因此,基本上,如果您要询问,请不要使用它:)


同意 重要的是要知道它的含义(该线程的优先级高于其他所有线程),但是如果您发现自己在问是否应该使用它,则绝对不可以。
Daniel T.

6
如果您不问如何使用它,您将如何学习使用它?我想您可以使用它,然后看看会发生什么,然后您将学习,但我感到您的学习令人沮丧
fifamaniac04 2015年

1

Windows得知程序使用的优先级高于正常优先级时,似乎就限制了进程的优先级。

将优先级从IDLE设置为REALTIME不会更改CPU使用率。

我在多处理器AMD CPU上发现,如果像最后一个那样掉落一个CPU,则CPU使用率将达到最大,而最后一个CPU将保持空闲状态。在我的Quad AMD上,处理器速度提高到75%。

使用任务管理器->选择进程->右键单击进程->选择->设置亲和力单击除最后一个处理器以外的所有处理器。如果处理视频会增加,则CPU使用率将增加到其余处理器的最大值,并且帧数也会增加。


2
没错,只要没有CPU争用,更改进程优先级类就不会影响CPU利用率。但是,您认为Windows根据CPU利用率来限制最大进程优先级是错误的。相反,安全特权可防止设置“实时”以防止随意使用。
dyasta 2014年

1
(多年后阅读)-这里的问题是无法划分线程。因此,您可能有8个内核,但只有2个CPU绑定(100%活动)线程。因此,您说“为什么不使用我的其他6个核心?”。或者,在您的情况下,“为什么不使用我的最后一个核?”。其余的核心似乎无能为力。这就是您想要的。如果线程在内核之间交换,则会降低性能。应用程序开发人员必须具有多线程功能,并非所有内容都可以是多线程的。
dyasta

1

实时是可用于流程的最高优先。因此,它与“高”的区别在于其高出一级,而“高于正常的”之处在于其高两级。

同样,实时也是线程优先级。

进程优先级类别会提高或降低进程中所有有效线程的优先级,因此被视为“基本优先级”。

因此,一个过程具有:

  1. 基本进程优先级
  2. 单个线程优先级,基本优先级类的偏移量。

由于应该将实时保留给绝对必须先于其他正在运行的进程的应用程序,因此存在特殊的安全特权以防止随意使用它。这由安全策略定义。

在NT6 +(Vista +)中,使用Vista多媒体类计划程序是在以下条件下实现实时操作的正确方法: 实时OS。由于OS并非为实时操作而设计,因此它在大多数情况下并不完美。

Microsoft认为此优先级非常危险,这是正确的。除非在非常特殊的情况下,否则任何应用程序都不应使用它,甚至应尝试将其使用限制为临时需要。


0

基本上,其他所有方面都更高/更大。键盘的优先级低于实时过程。这意味着将比键盘更快地考虑该过程,如果无法处理该问题,则键盘速度会变慢。


0

像所有其他实时答案一样,实时赋予该程序最高优先级。在处理完该程序之前,不会进行任何处理。
在我的奔腾4机器上,由于将游戏性能提高了很多,并且系统似乎完全稳定,因此我将Minecraft设置为实时的。因此,实时性并没有看起来那么糟糕,即使您有一个多核将程序与一个或多个特定核的亲和力设置了(只是不是全部核,只是为了让其他所有东西都能够在实时情况下运行)设置程序挂断)并将优先级设置为实时。

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.