Ketika saya membuka laptop saya pagi ini, ia telah reboot sendiri (setelah menginstal pembaruan). Sekarang .NET Runtime Optimization Service (ngen?) Menggunakan cukup banyak CPU saat komputer menggunakan baterai. Saya bertanya-tanya, apakah ada cara untuk meminta Windows menunda tugas-tugas ini sampai laptop terpasang? Laptop saya terpasang dalam semalam tetapi 30% baterai saya hilang setelah kurang dari satu jam penggunaan, yang bukan situasi yang biasa.
Komputer saya tidak menganggur saat melakukan hal ini, jadi saya menganggap kompilasi rakitan prioritas tinggi setelah pembaruan .Net Framework dari artikel ini .
Saya memeriksa riwayat pembaruan windows, dan itu telah menginstal pembaruan kumulatif semalam saat terhubung. ( Https://support.microsoft.com/en-ie/help/4038788/windows-10-update-kb4038788 ). Saya berharap windows akan menjalankan optimasi .net sebagai bagian dari proses itu alih-alih menunggu saya untuk mulai menggunakan laptop pada baterai.
Jawaban:
Jawaban singkatnya adalah tidak, Anda tidak dapat dengan mudah menunda ngen (dan Anda tidak boleh mencoba), satu-satunya pilihan yang konsisten / berguna yang saya temukan adalah memaksanya untuk menjalankannya sampai selesai dan tidak membiarkannya mengintai di latar belakang.
Jika Anda mencoba menyimpan beberapa siklus CPU pada baterai (atau dalam kasus saya hentikan server dari menjalankan ngen setelah mengembalikannya ke layanan setelah pembaruan Windows) pilihan terbaik Anda adalah memaksa ngen untuk menjalankan sendiri. Untuk PC desktop, 2 pilihan muncul di pikiran:
Buat file .bat atau .ps1 di desktop Anda dengan perintah ngen yang sesuai di bawah ini - cukup klik dua kali dan tunggu ngen untuk menutup sebelum Anda mencabut kabel. Jika Anda membuat skrip di folder Windows sebagai gantinya dan pintas ke skrip di desktop Anda, Anda juga dapat menggunakan Command atau Powershell Prompt atau dialog Run untuk menjalankannya seperti yang diperlukan (sebelum Anda mencabut / setelah pembaruan).
Opsi lain yang seharusnya berfungsi adalah menggunakan tugas terjadwal untuk mengeksekusi skrip di atas. Jalankan saat startup, tanpa pengguna login, sebagai Administrator. Jika laptop Anda diizinkan menginstal pembaruan dalam semalam dan dapat mem-boot ulang ini seharusnya berfungsi dengan baik.
Untuk menjalankan ngen Anda hanya perlu salah satu dari perintah berikut, gunakan opsi pertama / paling tepat untuk sistem Anda:
Net 4 atau lebih baik pada 64bit
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems
Net 4 atau lebih baik pada 32bit
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
Net 3 atau kurang pada 64bit
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems
Net 3 atau kurang pada 32bit
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems
Di bawah ini adalah output minimal yang Anda dapatkan dari ngen ketika tidak ada item yang antri:
Ketika ngen.exe dijalankan dengan
executeQueuedItems
itu akan memaksanya untuk melakukan semua tugas yang tertunda secepat mungkin. Biasanya ngen berjalan pada utas latar belakang prioritas rendah (dan tampaknya baru saja dimulai secara acak), idenya adalah tidak seharusnya kelaparan proses CPU lainnya - meskipun itu tidak selalu berhasil. Menjalankan ngen secara interaktif lebih cepat daripada membiarkannya berjalan di latar belakang - tetapi itu akan lebih memengaruhi kinerja. Berapa lama waktu yang dibutuhkan tergantung pada perangkat keras Anda dan berapa banyak / gambar asli mana yang perlu dikompilasi ulang.sumber