在我看来,整个良好/优先方案实际上并没有起到什么作用。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10084 dick 39 19 1221848 225120 6128 S 407.6 1.4 23478:00 povrayws
5311 dick 20 0 2904912 325728 40324 S 382.1 2.0 133:06.54 qtpovray
考虑到这两个作业,我预计当 qtpovray 繁忙时,povrayws 的 CPU 占用率为 0%。当我在 Windows 上运行此设置时,就会发生这种情况。
povrayws 是一个 CPU/FPU 密集型守护进程,将运行数月(构建动画)。如果计算机还有其他事情要做,我希望这个任务基本上停止。
qtpovray 是一个有时占用大量 CPU/FPU 的 GUI 作业,用于开发动画。如果要运行,它应该抢占守护进程并接近 800% 的 CPU。(如果守护进程未运行,它将占用 800% 的 CPU。)
我重新优化了 top 中的 povrayws,并运行
chrt -i --pid 0 10084
以将其设置为空闲优先级。但他仍然更多的CPU 比交互式作业多。没有 I/O 来扰乱调度。它只是几兆内存和我能投入的尽可能多的 CPU。
再次,当我在 Windows 8 上运行此设置时,如果发生其他事情,povrayws.exe 将停留在 0% 附近。
我想知道是不是我的 i7 的超线程让调度程序感到困惑,但我在六核 i5 上看到了同样的行为。(在 i5 上,Minecraft 正在与空闲守护进程争夺 CPU。)
我记得,20 年前,这个功能还是可以正常工作的,但最近 5 年,我注意到了这种“不正常”的行为。它终于让我恼火到不得不问,
有人见过空闲任务实际上让位于更高优先级吗? 800% CPU、0% I/O 空闲任务的情况相当罕见。