阻止.NET Runtime Optimization Service依靠电池运行?


10

今天早上我打开笔记本电脑时,它已经重新启动(安装更新后)。现在,当计算机由电池供电时,.NET运行时优化服务(ngen?)正在使用大量CPU。我想知道,有没有办法要求Windows将这些任务推迟到插入笔记本电脑之后?我一夜之间插上了笔记本电脑,但使用不足一个小时后,电池的30%电量就没了,这不是通常的情况。

有人这样做,而我的电脑是没有闲着,所以我一个.NET Framework更新后承担其编制高优先级的组件从这篇文章

我检查了Windows更新历史记录,并在插入电源后隔夜安装了累积更新。(https://support.microsoft.com/zh-cn/help/4038788/windows-10-update-kb4038788)。我希望Windows在该过程中运行.net优化,而不是等待我开始使用电池供电的笔记本电脑。

任务管理器


我只是看到同一服务突然吞噬了很多CPU,并且风扇响了。但就我而言,这是在使用计算机两个小时后让计算机进入睡眠状态之后。我无法停止该服务(在您在详细视图中的上方上方发布的窗口中)。5到10分钟之后,一切都结束了,所以我想这只是等待几分钟的时间
hansaplast

Answers:


4

简短的答案是不,您不能可靠地推迟使用ngen(并且您不应该尝试),我发现的唯一一致/有用的选择是强制其运行到完成状态,而不是让它潜伏在后台。

如果您试图节省电池的CPU周期(或者在Windows更新后将服务器重新投入使用,则停止服务器运行ngen的工作),最好的选择是强制ngen自行运行。对于台式机,有两种选择:

  1. 使用下面的相应ngen命令在桌面上创建.bat或.ps1文件-只需双击并等待ngen关闭,然后再拔出电源。如果改为在Windows文件夹中创建脚本,然后在桌面上创建该脚本的快捷方式,则还可以根据需要使用Command或Powershell Prompt或“运行”对话框来执行该脚本(在拔出/更新之后)。

  2. 另一个可行的选择是使用计划任务执行上述脚本。在启动时以管理员身份运行,无需登录用户。如果您的笔记本电脑可以在一夜之间安装更新程序并可以重新启动,则应该可以正常工作。

要运行ngen,您仅需要以下命令之一,请为您的系统使用第一个/最合适的选项:

  • .Net 4或更高版本(64位) C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 4或更高版本(32位) C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 3或更少(64位) C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems

  • .Net 3或以下(32位) C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems

以下是没有排队项目时从ngen获得的最小输出:

PS C:\Users\Administrator> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems
Microsoft (R) CLR Native Image Generator - Version 4.6.1586.0
Copyright (c) Microsoft Corporation.  All rights reserved.
All compilation targets are up to date.

当运行ngen.exe时executeQueuedItems,它将强制其尽快执行所有待处理的任务。通常,ngen在低优先级的后台线程上运行(并且显然只是随机启动),这种想法是它不应该饿死其他CPU进程-尽管这并不总是有效。交互式运行ngen比在后台运行ngen更快,但是它将对性能产生更大的影响。需要多长时间取决于您的硬件以及需要重新编译多少本机映像。


如果我让计算机空闲几分钟(实际上是一个Virtualbox VM)几分钟,则ngen.exe将开始消耗所有CPU。但是,如果我在管理员cmd窗口中运行上述任何或所有命令,我很快就会得到“所有编译目标都是最新的”信息。:-( [[哦-我可能应该提到这是一台开发机器。我想知道Visual Studio进程是否引起麻烦...]
mwardm
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.