什么是“实时”stream程优先级设置?
从我以前阅读的内容来看,鼓励您不要以编程方式更改Windows应用程序的优先级,如果这样做,则不应将其更改为“实时”。
与“高”和“高于正常”相比,“实时”过程优先级设置是做什么的?
实时优先级线程永远不能被定时器中断抢占,并以比系统中任何其他线程更高的优先级运行。 因为这样一个CPU绑定的实时优先级线程可以完全破坏一台机器。
创build实时优先级线程需要特权( SeIncreaseBasePriorityPrivilege ),因此只能由pipe理用户完成。
对于Vista及更高版本,确实需要以实时优先级运行的应用程序的一种select是使用多媒体类调度程序服务 (MMCSS),并让它pipe理线程的优先级。 MMCSS将阻止您的应用程序使用太多CPU时间,因此您不必担心机器的宕机。
简单地说,“实时”优先等级高于“高”优先等级。 我不认为这比它更多。 哦,是的 – 你必须有SeIncreaseBasePriorityPrivilege
把一个线程进入实时类。
Windows有时会因各种原因提高线程的优先级,但不会将线程的优先级提高到另一个优先级。 它也不会提高实时优先级中线程的优先级。 所以高优先级的线程不会得到任何实时优先级的自动临时提升。
Russinovich关于Windows如何处理优先级的“Windows内部”章节是学习如何工作的一个很好的资源:
请注意,在正常的Windows系统上具有实时优先级的线程绝对没有问题 – 它们不一定适用于在专用机器上运行的特殊进程。 我想象,多媒体驱动程序和/或进程可能需要具有实时优先级的线程。 然而,这样的线程不应该需要太多的CPU – 它应该阻止大部分时间才能正常的系统事件得到处理。
这将是可用的最高优先级设置,通常只能用于专门运行该特定程序的框。 它实际上足够高,可能导致键盘和鼠标线程的饥饿,从而导致它们无法响应。
所以基本上,如果你不得不问,不要用它:)
实时是一个进程可用的最高优先级 。 因此,与“高”不同的是,它比“一般”高一步,因为它比“高”高两步。
同样,实时也是线程优先级别。
stream程优先级提高或降低stream程中所有有效的线程优先级,因此被视为“基本优先级”。
所以,一个过程有一个:
- 基础进程优先级 。
- 单独的线程优先级 ,基本优先级的偏移。
由于实时应该被预留给那些绝对必须抢占其他正在运行的进程的应用程序,因此有一个特殊的安全特权来保护它不被任意使用。 这是由安全策略定义的。
在NT6 +(Vista +)中,使用Vista多媒体类调度程序是在非实时操作系统中实现实时操作的正确方法。 它的工作,大部分,虽然是不完美的,因为操作系统不是为实时操作而devise的。
微软认为这个优先级非常危险,对。 没有应用程序应该使用它,除非在非常特殊的情况下,甚至然后尝试限制它的使用临时需求。
一旦Windows学习一个程序使用高于正常的优先级,似乎它会限制进程的优先级。
将IDLE的优先级设置为REALTIME不会改变CPU使用率。
我在我的多处理器AMD CPU上发现,如果我放下其中一个CPU,就像LAST一样,CPU使用率将会最大,而最后一个CPU保持空闲状态。 AMD四核处理器的处理器速度提高到75%。
使用任务pipe理器 – >select进程 – >右键单击进程 – >select – >设置关联点击除最后一个处理器外的所有进程。 其余处理器的CPU使用率将增加到MAX,如果处理video将增加,则帧数将会增加。
它在其他方面基本上是更高/更高。 键盘比实时过程更不重要。 这意味着该过程将被更快地考虑到键盘,如果它不能处理,那么你的键盘会变慢。
像所有其他的答案,在实时之前给这个程序的最高优先级。 在程序处理完成之前没有任何处理。
在我的奔腾4机器上,我把“我的世界”设置为实时,因为它提高了游戏性能,而且系统似乎完全稳定。 所以实时并没有看起来那么糟糕,只是如果你有一个多核设置程序与特定的一个或多个核心的亲和力(只是不是所有的核心,只是为了让其他一切都能够运行,以防实时设置的程序会挂起)并将优先级设置为实时。