根据我过去所了解的,你被鼓励不要通过编程方式更改Windows应用程序的优先级,如果你这样做,也不应将它们更改为“实时”。
与“高”和“高于正常”相比,“实时”进程优先级设置有什么作用?
根据我过去所了解的,你被鼓励不要通过编程方式更改Windows应用程序的优先级,如果你这样做,也不应将它们更改为“实时”。
与“高”和“高于正常”相比,“实时”进程优先级设置有什么作用?
实时优先级线程无法被计时器中断抢占,并且比系统中的任何其他线程都具有更高的优先级。因此,CPU绑定的实时优先级线程可以完全破坏一台机器。
创建实时优先级线程需要特权 (SeIncreaseBasePriorityPrivilege),因此只能由管理员用户完成。
对于 Vista 及更高版本,应用程序如果确实需要以实时优先级运行,则可以使用多媒体类调度程序服务 (MMCSS) 并让其管理您的线程优先级。 MMCSS 将防止您的应用程序使用过多的 CPU 时间,因此您不必担心使机器瘫痪。
简单来说,“实时”优先级类别高于“高”优先级类别。我认为除此之外就没有更多的内容了。哦对了,你必须拥有SeIncreaseBasePriorityPrivilege
权限才能将线程放入实时类别。
Windows有时会提高线程的优先级,但它不会将线程的优先级提升到另一个优先级类别。它也不会提高实时优先级类别中的线程优先级。因此,高优先级线程不会在实时优先级类别中获得任何自动临时提升。
Russinovich在《Windows内部》一书中关于Windows如何处理优先级的章节是学习这个内容的好资源:
请注意,在普通的Windows系统上,线程具有实时优先级绝对没问题,它们并不一定是专用机器上运行的特殊进程。我想多媒体驱动程序和/或进程可能需要具有实时优先级的线程。但是,这样的线程不应该需要太多CPU-它应该阻塞大部分时间以便正常系统事件得到处理。
这将是可用的最高优先级设置,通常仅用于专门运行该特定程序的计算机。它实际上高到足以导致键盘和鼠标线程饥饿,使它们无响应。
因此,基本上,如果你不知道如何使用,请不要使用它 :)
实时是一个进程可用的最高优先级类。因此,它与“高”不同,因为它更高一步,与“高于正常”不同,因为它更高两步。
同样,实时也是线程优先级级别之一。
进程优先级类会提高或降低进程中所有有效线程的优先级,因此被认为是“基本优先级”。
因此,一个进程具有:
由于实时应该保留给绝对必须抢占其他运行进程的应用程序,因此有一个特殊的安全权限来防止其随意使用。这由安全策略定义。
在NT6+(Vista+)中,使用Vista多媒体类调度程序是实现非实时操作中的实时操作的正确方法。它在很大程度上起作用,尽管不完美,因为操作系统并非设计用于实时操作。
微软认为这种优先级非常危险,这是正确的。除非在非常专业的情况下,否则没有应用程序应该使用它,即使在这种情况下,也要尽量将其使用限制为临时需求。
和其他回答一样,实时性能使得程序具有最高优先级。在该程序处理完之前,不会处理任何内容。
在我的Pentium 4机器上,我经常将Minecraft设置为实时模式,因为这可以大大提高游戏性能,而且系统似乎非常稳定。因此,实时并不像看起来那么糟糕,只需将多核设置为特定的核心或核心集(不要全部设置),以便让其他所有程序能够运行,以防实时设置程序卡住),并将优先级设置为实时。
一旦Windows学习到一个程序使用高于正常优先级,它似乎会限制该进程的优先级。
将优先级从IDLE设置为REALTIME并不会改变CPU使用率。
我发现在我的多处理器AMD CPU上,如果我关闭其中一个CPU,比如最后一个,CPU使用率将达到最大值,而最后一个CPU保持空闲。我的四核AMD处理器速度增加到75%。
使用任务管理器->选择进程->右键单击进程->选择->设置亲和性,除了最后一个处理器,其他都选中。剩余处理器的CPU使用率将增加到最大值,如果处理视频,则帧数也会增加。
在其他方面,它基本上是更高/更大的。键盘不如实时进程重要。这意味着进程将比键盘更快地考虑到,如果无法处理,则会减慢键盘。
实时进程优先级主要用于使特定进程以牺牲其他一切的代价更快地运行。我个人将我的Discord机器人的进程优先级设置为实时,因为机器人很轻量化,我需要让它快速响应,但随意更改进程优先级是一个坏主意,除非你知道自己在做什么,例如,如果你将Google Chrome的优先级设置为低,它不会引起任何问题,但如果你将注册表的优先级设置为低,它可能会引起足够多的问题。除非设备完全专用于该程序,否则不要将重型程序设置为实时。