Ngăn chặn dịch vụ tối ưu hóa thời gian chạy .NET chạy trên pin?


10

Khi tôi mở máy tính xách tay của mình sáng nay, nó đã tự khởi động lại (sau khi cài đặt bản cập nhật). Bây giờ, Dịch vụ Tối ưu hóa Thời gian chạy .NET (ngen?) Đang sử dụng khá nhiều CPU trong khi máy tính đang dùng pin. Tôi tự hỏi, có cách nào để yêu cầu Windows trì hoãn các tác vụ này cho đến khi máy tính xách tay được cắm không? Tôi đã có máy tính xách tay cắm qua đêm nhưng 30% pin của tôi đã hết sau chưa đầy một giờ sử dụng, đó không phải là tình huống thông thường.

Máy tính của tôi không hoạt động trong khi nó đang làm điều này, vì vậy tôi giả sử nó biên dịch các hội đồng ưu tiên cao sau khi cập nhật .Net Framework từ bài viết này .

Tôi đã kiểm tra lịch sử cửa sổ cập nhật, và nó đã được cài đặt một bản cập nhật tích lũy qua đêm trong khi cắm vào. ( Https://support.microsoft.com/en-ie/help/4038788/windows-10-update-kb4038788 ). Tôi ước các cửa sổ sẽ chạy tối ưu hóa .net như một phần của quá trình đó thay vì chờ tôi bắt đầu sử dụng máy tính xách tay bằng pin.

Quản lý công việc


Tôi chỉ thấy cùng một dịch vụ đột nhiên ăn rất nhiều CPU và quạt trở nên ồn ào. Nhưng trong trường hợp của tôi, đó là sau khi tôi đặt máy tính ngủ sau 2 giờ sử dụng. Tôi không thể dừng dịch vụ (trong cửa sổ bạn đã đăng ở trên trong chế độ xem chi tiết). Sau 5-10 phút, nó đã kết thúc, vì vậy tôi đoán đó chỉ là vấn đề chờ đợi một vài phút
hansaplast

Câu trả lời:


4

Câu trả lời ngắn gọn là không, bạn không thể trì hoãn một cách đáng tin cậy (và bạn không nên thử), tùy chọn duy nhất / hữu ích tôi tìm thấy là buộc nó chạy đến hoàn thành và không để nó ẩn trong nền.

Nếu bạn cố gắng tiết kiệm một số chu kỳ CPU trên pin (hoặc trong trường hợp của tôi, ngăn máy chủ chạy ngen sau khi đưa nó trở lại dịch vụ theo các bản cập nhật Windows), thì lựa chọn tốt nhất của bạn là buộc ngen tự chạy. Đối với máy tính để bàn, có 2 tùy chọn xuất hiện:

  1. Tạo tệp .bat hoặc .ps1 trên máy tính để bàn của bạn bằng lệnh ngen thích hợp bên dưới - chỉ cần nhấp đúp chuột và đợi ngen đóng trước khi bạn rút phích cắm. Nếu bạn tạo tập lệnh trong thư mục Windows thay vào đó và lối tắt đến tập lệnh trên máy tính để bàn của bạn, bạn cũng có thể sử dụng Command hoặc Powershell Prompt hoặc hộp thoại Run để thực thi nó theo yêu cầu (trước khi bạn rút / sau khi cập nhật).

  2. Một tùy chọn khác nên hoạt động là sử dụng một tác vụ theo lịch trình để thực thi đoạn script trên. Chạy nó khi khởi động, mà không cần người dùng đăng nhập, với tư cách Quản trị viên. Nếu máy tính xách tay của bạn được phép cài đặt bản cập nhật qua đêm và có thể khởi động lại thì nó sẽ hoạt động tốt.

Để chạy ngen, bạn chỉ cần một trong các lệnh sau, sử dụng tùy chọn đầu tiên / phù hợp nhất cho hệ thống của bạn:

  • .Net 4 hoặc tốt hơn trên 64 bit C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 4 hoặc tốt hơn trên 32 bit C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 3 trở xuống trên 64 bit C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems

  • .Net 3 hoặc ít hơn trên 32 bit C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems

Dưới đây là sản lượng tối thiểu bạn nhận được từ ngen khi không có mục nào được xếp hàng:

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.

Khi ngen.exe được chạy cùng với executeQueuedItemsnó sẽ buộc nó thực hiện tất cả các tác vụ đang chờ xử lý càng nhanh càng tốt. Thông thường ngen chạy trên một luồng nền ưu tiên thấp (và dường như chỉ bắt đầu ngẫu nhiên), ý tưởng là nó không nên bỏ đói các quá trình khác của CPU - mặc dù điều đó không phải lúc nào cũng hoạt động. Chạy ngen tương tác nhanh hơn để nó chạy trong nền - nhưng nó sẽ ảnh hưởng đến hiệu suất nhiều hơn. Mất bao lâu tùy thuộc vào phần cứng của bạn và số lượng / hình ảnh gốc cần biên dịch lại.


Nếu tôi để máy của tôi ở chế độ chờ (tốt, thực tế là Virtualbox VM) trong vài phút thì ngen.exe bắt đầu ăn hết CPU. Tuy nhiên, nếu tôi chạy bất kỳ hoặc tất cả các lệnh trên trong cửa sổ cmd của quản trị viên, tôi sẽ nhanh chóng lấy lại "Tất cả các mục tiêu biên dịch được cập nhật." :-( [Ồ - Có lẽ tôi nên đề cập rằng đây là một cỗ máy phát triển. Tôi tự hỏi liệu một quy trình Visual Studio có gây rắc rối không ...]
mwardm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.