Gejala
Ketika Anda menggunakan komputer berbasis Windows, Anda akan memperhatikan bahwa proses Penyedia Host (WmiPrvSE.exe) Windows Management Instrumentation (WMI) menggunakan kapasitas CPU tinggi (mendekati 100 persen) untuk beberapa menit setiap 15 sampai 20 menit.
Ketika masalah ini terjadi, gunakan Pengelola Tugas untuk mengidentifikasi pengidentifikasi proses (PID) pada proses WMIPRVSE.EXE yang mengkonsumsi CPU tinggi. Kemudian, buka prompt perintah yang dielevasi dan jalankan perintah berikut ini:
tasklist /m wmiperfclass.dll
Daftar proses WMIPRVSE.EXE yang memuat modul ini akan ditampilkan. Biasanya hanya satu proses yang terdaftar. Namun, jika Anda memiliki klien 32-bit dan 64-bit, Anda mungkin melihat dua proses. Ini adalah contoh output:
Nama Gambar PID Modul
================ ======== ============================================
WmiPrvSE.exe 2140 WmiPerfClass.dll
Jika PID proses yang terdaftar cocok dengan salah satu yang Anda temukan di Pengelola Tugas, sangat mungkin bahwa Anda mengalami masalah yang dijelaskan di artikel ini.
Penyebab
Masalah ini dapat disebabkan oleh salah satu dari yang berikut ini:
Satu atau beberapa proses menggunakan sejumlah besar penanganan
Semua handle disimpan dalam struktur kernel \BaseNamedObjects. Penyedia WMIPerfClass harus memindai struktur ini saat membuat kelas kinerja yang berkaitan dengan objek Pekerjaan.
Jika struktur ini membengkak karena tingginya jumlah penanganan, operasi akan memiliki penggunaan CPU yang tinggi dan akan memakan waktu lebih lama dari normal.
Anda mungkin mengharapkan dampak untuk kondisi ini ketika proses menggunakan lebih dari sekitar 30.000 penanganan, atau jumlah total penanganan pada sistem melebihi 50.000.
Pemutakhiran yang diedarkan pada bulan Maret 2020 untuk versi sistem operasi yang didukung mencakup beberapa optimasi kinerja dan alamat beberapa varian masalah ini. Lihat riwayat Pemutakhiran Windows untuk informasi lebih lanjut tentang pemutakhiran yang berlaku untuk versi Windows Anda.
Satu atau lebih proses yang berjalan pada sistem menggunakan banyak memori
Hal ini akan memengaruhi pembuatan kelas kinerja Proses karena area memori setiap proses yang berjalan harus dipertanyakan. Memori yang digunakan oleh proses mungkin terfragmentasi, dan ini membuat operasi lebih intensif sumber daya. Hal ini terjadi karena WMIPerfClass juga menanyakan penghitung kinerja "Mahal".
Anda dapat memeriksa apakah Penghitung kinerja mahal diaktifkan dengan menjalankan perintah PowerShell berikut ini:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
Jika perintah memberikan hasil, ini menunjukkan penghitung kinerja Mahal yang diaktifkan. Misalnya:
Win32_PerfFormattedData_PerfProc_FullImage_Costly
Win32_PerfRawData_PerfProc_FullImage_Costly
Win32_PerfFormattedData_PerfProc_Image_Costly
Win32_PerfRawData_PerfProc_Image_Costly
Win32_PerfFormattedData_PerfProc_ProcessAddressSpace_Costly
Win32_PerfRawData_PerfProc_ProcessAddressSpace_Costly
Win32_PerfFormattedData_PerfProc_ThreadDetails_Costly
Win32_PerfRawData_PerfProc_ThreadDetails_Costly
Penyelesaian Masalah
Untuk memperbaiki masalah, identifikasi proses yang menggunakan sejumlah besar penanganan atau memori dalam jumlah besar. Proses mungkin memiliki kebocoran memori atau masalah kebocoran penanganan. Untuk mengatasinya, mulai ulang proses.
Secara default jika Anda menggunakan Windows Server 2016 atau versi Windows yang lebih baru, penghitung kinerja Mahal dinonaktifkan mulai dari Pembaruan Kumulatif berikut ini:
-
Windows Server 2016 / Windows 10 versi 1607 (RS1)
18 Oktober 2018—KB4462928 (OS Build 14393.2580) -
Windows 10 versi 1703 (RS2)
24 Juli 2018 — KB4338827 (OS Build 15063.1235) -
Windows 10 versi 1709 (RS3)
24 Juli 2018 — KB4338817 (OS Build 16299.579) -
Windows 10, versi 1803 (RS4)
16 Juli 2018—KB4345421 (OS Build 17134.167)
Catatan Setelah pembaruan kumulatif diinstal, jika Anda memerlukan kelas yang berkaitan dengan Penghitung kinerja yang mahal, tetapkan nilai Mengaktifkan Penyedia Mahal untuk 1 (DWORD) di bawah subkunci registri berikut ini untuk membuatnya tersedia kembali:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
CatatanPemutakhiran kumulatif tidak akan memengaruhi perilaku ketika proses menggunakan sejumlah besar penanganan.
Di Windows Server 2012 R2 dengan 19 September 2017—KB4038774, perilaku standar adalah meninggalkan counter kinerja Yang Memakan Biaya diaktifkan. Untuk menonaktifkannya, gunakan kunci registri Memungkinkan Penyedia yang Mahal dan atur ke 0 (dinonaktifkan).
Masalah ini terjadi ketika klien menanyakan kelas kinerja. Ini biasanya merupakan aplikasi pemantau.
Untuk mengatasinya, Anda juga dapat menonaktifkan aplikasi pemantauan untuk mencegah pembuatan kelas kinerja.
Informasi selengkapnya
WMI menyediakan beberapa kelas kinerja. Untuk informasi selengkapnya, lihat Kelas Penghitung Kinerja.
Kelas ini dibuat secara dinamis berdasarkan Penghitung Kinerja yang tersedia pada sistem. Semua kelas dibuat pada saat yang sama, tidak hanya kelas yang sedang dipertanyakan.
WMIPerfClass adalah modul yang menangani membuat kelas ini ketika klien WMI menanyakan salah satu darinya atau memuat kelas yang tersedia.
Kelas kinerja ini disimpan dalam cache yang tidak valid setelah 15 hingga 20 menit. Segera setelah cache tidak divalidasi, kelas kinerja harus dibuat lagi jika klien memintanya.
Membuat kelas kinerja berarti bahwa modul WMIPerfClass.dll akan harus dimuat dalam proses WMIPRVSE.EXE dan kode terkait dieksekusi.