【发布时间】:2010-12-12 10:46:12
【问题描述】:
根据我过去阅读的内容,我们鼓励您不要以编程方式更改 Windows 应用程序的优先级,如果这样做,则永远不要将它们更改为“实时”。
与“高”和“高于正常”相比,“实时”进程优先级设置有什么作用?
【问题讨论】:
标签: windows task taskmanager thread-priority task-management
根据我过去阅读的内容,我们鼓励您不要以编程方式更改 Windows 应用程序的优先级,如果这样做,则永远不要将它们更改为“实时”。
与“高”和“高于正常”相比,“实时”进程优先级设置有什么作用?
【问题讨论】:
标签: windows task taskmanager thread-priority task-management
实时优先级线程永远不会被定时器中断抢占,并以高于系统中任何其他线程的优先级运行。因此,受 CPU 限制的实时优先级线程完全可以毁掉一台机器。
创建实时优先级线程需要特权 (SeIncreaseBasePriorityPrivilege),因此只能由管理用户完成。
对于 Vista 及更高版本,需要以实时优先级运行的应用程序的一种选择是使用 Multimedia Class Scheduler Service (MMCSS) 并让它管理您的线程优先级。 MMCSS 将防止您的应用程序使用过多的 CPU 时间,因此您不必担心会导致机器瘫痪。
【讨论】:
简单地说,“实时”优先级高于“高”优先级。我认为没有比这更多的了。哦,是的 - 您必须拥有 SeIncreaseBasePriorityPrivilege 才能将线程放入 Real Time 类中。
Windows 有时会出于各种原因提高线程的优先级,但不会将线程的优先级提高到另一个优先级。它也不会提高实时优先级中线程的优先级。所以高优先级线程不会自动临时提升到实时优先级。
Russinovich 关于 Windows 如何处理优先级的“Windows 内部”一章是了解其工作原理的绝佳资源:
请注意,在普通 Windows 系统上具有实时优先级的线程绝对没有问题 - 它们不一定适用于在专用机器上运行的特殊进程。我想多媒体驱动程序和/或进程可能需要具有实时优先级的线程。但是,这样的线程不应该需要太多 CPU - 它应该在大部分时间处于阻塞状态,以便正常的系统事件得到处理。
【讨论】:
这将是最高可用的优先级设置,通常只用于专用于运行该特定程序的盒子。它实际上已经足够高,可能会导致键盘和鼠标线程缺乏响应,以至于它们变得无响应。
所以基本上,如果你不得不问,不要使用它:)
【讨论】:
实时是进程可用的最高优先级类。因此,它与“High”的不同之处在于它高出一级,而“Above Normal”的不同之处在于它高出两级。
同样,实时也是线程优先级。
进程优先级类提高或降低进程中所有有效的线程优先级,因此被视为“基本优先级”。
所以,一个进程有一个:
由于应该为绝对必须抢占其他正在运行的进程的应用程序保留实时性,因此有一个特殊的安全权限可以防止随意使用它。这是由安全策略定义的。
在 NT6+ (Vista+) 中,使用 Vista Multimedia Class Scheduler 是在不是实时操作系统中实现实时操作的正确方法。它在大多数情况下都可以工作,但并不完美,因为操作系统不是为实时操作而设计的。
Microsoft 认为此优先级非常危险,这是正确的。除非在非常特殊的情况下,否则任何应用程序都不应使用它,即使在这种情况下,也应尽量将其使用限制为临时需求。
【讨论】:
一旦 Windows 得知程序使用高于正常的优先级,它似乎会限制进程的优先级。
将优先级从 IDLE 设置为 REALTIME 不会改变 CPU 使用率。
我在我的多处理器 AMD CPU 上发现,如果我丢弃其中一个 CPU 而不是最后一个 CPU,CPU 使用率将达到 MAX OUT,最后一个 CPU 保持空闲状态。我的 Quad AMD 处理器速度提高到 75%。
使用任务管理器->选择进程->右键进程->选择->设置亲和度 单击除最后一个处理器之外的所有处理器。如果处理视频增加,则剩余处理器和帧数的 CPU 使用率将增加到 MAX。
【讨论】:
它基本上在其他所有方面都更高/更大。键盘的优先级低于实时进程。这意味着该过程将比键盘更快地被考虑在内,如果它无法处理,那么您的键盘就会变慢。
【讨论】:
像所有其他答案一样,实时赋予该程序最高优先级。在处理该程序之前,不会处理任何内容。
在我的 pentium 4 机器上,我将 minecraft 设置为实时很多,因为它大大提高了游戏性能,并且系统看起来完全稳定。所以实时并不像看起来那么糟糕,只要你有一个多核设置程序对特定核心或核心的亲和力(只是不是全部,只是为了让其他一切都能够运行以防实时设置程序挂断)并将优先级设置为实时。
【讨论】: