Mengapa Hosti Penyedia WMI (WmiPrvSE.exe) terus spike CPU saya?

88

Saya biasanya menyimpan laptop saya pada 24x7, dan pada akhirnya itu benar-benar menjengkelkan karena paha saya terbakar karena terlalu panas.

Overheating tersebut tampaknya merupakan hasil dari WMI Provider Host (WmiPrvSE.exe) yang meningkatkan pemanfaatan CPU hingga 25% setiap beberapa menit. Mengapa ini terjadi?

Saya memiliki HP Envy 14 (dengan omong kosong yang dibundel HP) yang berjalan pada Windows 7 Home Premium.

(Catatan: Berdasarkan pengamatan masa lalu @ nhinkle , tampaknya HP Wireless Manager mungkin penyebabnya, apakah ada cara untuk mengonfirmasi ini?)

Pertanyaan ini adalah Pertanyaan Pengguna Super Minggu Ini .
Baca entri blog 28 Februari 2011 untuk detail lebih lanjut atau kirimkan Pertanyaan Anda sendiri untuk Minggu ini.

Sathyajith Bhat
sumber
2
Nah, cara terbaik untuk mengonfirmasi itu adalah dengan menonaktifkannya dan melihat apakah itu berlanjut;)
Matthieu Cartier
@neuro heh, benar tapi saya ingin melihat apakah ada Pengguna Super memiliki pendekatan yang berbeda :)
Sathyajith Bhat
2
"Sungguh menjengkelkan membakar pahaku" -> Pahanya tidak ada, periksa ini .
Tamara Wijsman
1
Apakah Anda memiliki gadget di desktop? misalnya. monitor ruang disk
Kez
1
@kez Tidak - tanpa gadget - desktop yang bersih.
Sathyajith Bhat

Jawaban:

110

Seperti yang disebutkan Sathya dalam pertanyaannya, saya pernah memiliki pengalaman sebelumnya dengan masalah ini pada laptop HP saya yang serupa, dan saya sekarang telah mengonfirmasi menggunakan metode ilmiah bahwa lonjakan CPU pada laptop HP disebabkan oleh HP Wireless Assistant. Atau, HP CPU Assassin, seperti saya mulai menyebutnya.

Gambaran Umum Eksperimen

  • Pertanyaan : Apa yang menyebabkan CPU pada laptop HP melonjak secara berkala, khususnya WmiPrvSE.exe prosesnya?

  • Hipotesis : HP Wireless Assistant (HPWA) yang menyebabkan masalah

  • Metode :

    1. Lihat apakah masalah mulai terjadi ketika HPWA diinstal.
    2. Lihat apakah CPU berhenti melonjak dan WmiPrvSE.exeproses berhenti menggunakan> 20% CPU ketika proses HPWA ditangguhkan.
    3. Lihat apakah CPU mulai spiking lagi ketika proses HPWA diaktifkan kembali
    4. Ulangi langkah 2 dan 3 untuk beberapa uji coba untuk memastikan hasil yang akurat
       
  • Hasil : HPWA menyebabkan penggunaan CPU yang ekstrem

  • Kesimpulan : Anda harus menghapus HPWA karena tidak ada manfaatnya

Informasi latar belakang

Ketika saya mendapatkan laptop HP Pavillion dm4t saya, saya perhatikan bahwa CPU akan sering melonjak hingga 50% penggunaan, hampir setiap detik. Ini menghabiskan masa pakai baterai, dan memanaskan laptop; banyak gejala yang sama seperti yang dialami Sathya. Hanya dengan melihat Resource Monitor di Windows 7, saya dapat melihat bahwa prosesnya WmiPrvSE.exesalah.

cpu nom nom

Pencarian google cepat mengkonfirmasi asumsi saya bahwa ini adalah proses host Windows Management Instrumentation (WMI). Singkatnya, WMI dapat digunakan untuk permintaan informasi sistem, seperti penggunaan prosesor, proses yang sedang berjalan, siapa yang logon, dan segala macam informasi lainnya. Proses host WMI menjalankan kueri WMI untuk proses lain yang membuatnya, jadi WmiPrvSE.exebukan pelakunya, itu hanya perantara.

Untuk memburu proses spesifik mana yang menyebabkan masalah ini, saya menggunakan Systinternals Process Explorer . Saya menemukan contoh WmiPrvSE.exeproses yang menggunakan CPU dalam jumlah besar, dan mengkliknya untuk membuka informasi terperinci.

proses penjelajah

Sayangnya, saya tidak dapat menemukan cara untuk mengetahui proses apa yang membuat semua pertanyaan, tetapi karena saya telah mengisolasi ini sebagai sumber lonjakan CPU, dan tahu itu adalah sebuah layanan, saya pergi ke manajer layanan untuk melihat mana layanan tergantung pada WMI, berpikir yang mungkin membawa saya ke petunjuk lain.

layanan nom nom

Saya pikir itu bukan layanan Windows bawaan yang menyebabkan masalah, jadi menghilangkan itu, saya memutuskan untuk mengerjakan daftar dan mencoba menonaktifkan setiap layanan, dan melihat apakah masalahnya tetap ada. Tepat di atas daftar adalah Layanan Asisten Nirkabel HP. Saya kembali ke menu layanan, dan menonaktifkan layanan itu. Melihat kembali ke task manager, saya melihat bahwa penggunaan CPU hampir tidak ada. Saya menghidupkan kembali layanan HPWA. Penggunaan CPU kembali meningkat. Saya sekarang memiliki cukup data untuk membentuk teori saya. Saya menghapus layanan HPWA, dan tidak pernah mengalami masalah lagi.

Memverifikasi Hipotesis

Beberapa bulan kemudian, Sathya mengajukan pertanyaan ini. Saya memutuskan untuk membuktikan sekali-untuk-semua bahwa ini adalah kesalahan HPWA. Saya menginstal ulang HP Wireless Assistant, yang sudah beberapa bulan tidak saya instal. Segera, penggunaan prosesor meningkat. Saya kemudian melanjutkan dengan percobaan yang diuraikan di atas.

Pertama, saya mengisolasi proses yang bertanggung jawab untuk layanan HPWA di Resource Monitor. HPWA_Service.exedan HPWA_Main.exekeduanya. Inilah tampilan penggunaan CPU dengan kedua proses yang diproses ini:

task manager dengan hpwa berjalan

Kemudian, saya menunda kedua proses. Penggunaan CPU segera turun; inilah yang terlihat setelah beberapa saat untuk penggunaan CPU sebelumnya pada grafik untuk menghapus:

task manager tanpa hpwa running

Saya mengaktifkan proses lagi untuk melihat apakah penggunaan akan kembali naik. Itu memang:

task manager baru saja mengaktifkan hpwa
Lonjakan pertama saat saya mengaktifkan HPWA

task manager setelah mengaktifkan hpwa
Beberapa saat setelah saya mengaktifkan HPWA

Menangguhkan proses lagi mengakibatkan penggunaan CPU kembali turun:

menurunkan penggunaan cpu setelah menonaktifkan hpwa

Saya menguji ini untuk satu iterasi lagi, dan pada percobaan ketiga, hal yang persis sama terjadi lagi. Saya menganggap bukti yang cukup ini untuk menunjukkan bahwa HP Wireless Assistant menyebabkan masalah, dan kemudian menonaktifkan layanan, dan sekarang akan menghapus instalannya.

Yang tampaknya dilakukan oleh HPWA adalah memberi tahu pengguna ketika nirkabel mereka dihidupkan atau dimatikan, dan melahap CPU. Tidak ada yang dapat Anda lakukan dengan itu yang tidak dapat Anda lakukan dengan alat manajemen nirkabel built-in, jadi saya akan menyarankan bahwa jika Anda memiliki perangkat lunak ini diinstal, Anda menghapusnya.


Catatan: Setidaknya satu orang telah melaporkan bahwa menghapus HPWA menyebabkan switch nirkabel mereka pada keyboard berhenti bekerja. Di laptop saya, itu tetap berfungsi dengan baik setelah menghapus HPWA, tetapi jika Anda berhenti berfungsi, Anda selalu dapat menonaktifkan kartu nirkabel dari dalam Windows. Tekan Winkey+ xuntuk membuka Windows Mobility Center, lalu klik Turn Wireless Offtombol.

pusat mobilitas windows


Menurut sebuah diskusi di Forum Dukungan HP, masalahnya telah diperbaiki pada versi terbaru dari HP Wireless Assistant. Jika laptop Anda membutuhkan HPWA untuk menggunakan tombol on / off wifi, Anda dapat mengunduh versi terbaru dari situs web driver HP, dan mungkin tidak akan mengalami masalah ini lagi. Namun demikian, jika Anda tidak memerlukannya untuk tombol on / off wifi, sepertinya tidak ada nilai tambah dari menginstal perangkat lunak ini.

nhinkle
sumber
+1 - jawaban yang sangat bagus dan komprehensif. Inilah kondisi CPU saya - dengan Assassin CPU HP - i.imgur.com/dMwaJ.png
Sathyajith Bhat
Dan ini adalah pos yang menangguhkan layanan i.imgur.com/dn2Em.png
Sathyajith Bhat
18
WHOA! ini adalah posting yang benar-benar luar biasa ! Salah satu pos yang paling terdokumentasi dan screenshotted yang pernah saya lihat! +1 !!
studiohack
2
+1, pekerjaan detektif yang luar biasa dan posting keren dengan tangkapan layar, yang menggunakan perangkat lunak asisten nirkabel di Windows, itu adalah hal pertama yang saya hapus pada PC baru.
Moab
1
Bagi saya itu adalah Layanan Vault Data Dell yang menyebabkan lonjakan CPU pada Penyedia WMI. Itu juga ketergantungan seperti yang disebutkan dalam jawaban ini. Saya menemukan ini dengan Metode Boot Bersih Windows .
Cerveser
38

Penyelesaian masalah

  1. Unduh ProcDump dari Microsoft Sysinternals.

  2. Biarkan dump setelah WmiPrvSE.EXE mencapai 25% selama 1 detik:

    procdump.exe -c 25 -s 1 -x WmiPrvSE.EXE %HOMEPATH%\WmiPrvSE.dmp
    

    Ini akan membuat dump di folder Pengguna Anda.

    Jangan ragu untuk mengulangi ini 1-2 kali lebih banyak sehingga Anda memiliki lebih banyak kesedihan dan dapat dipastikan bahwa penyebabnya dibuang dan bukan kejadian lain yang lebih normal.

  3. Analisis dump Anda secara online dan bagikan secara opsional di SpeedyShare .

    Alternatif : WinDBG dapat digunakan dengan perintah !analyze -v, pastikan untuk mengatur simbol .

  4. Jejak tumpukan yang menunjukkan harus mencakup prosedur yang menyebabkan ini.

Mungkin google beberapa prosedur teratas stack untuk mendapatkan ide yang lebih baik apa yang mereka lakukan.
Jika tidak membantu Anda mungkin perlu analisis lebih lanjut. Lihat bagian saya selanjutnya:


  1. Unduh pengaturan dari Alat Analisis Kinerja Windows untuk versi Windows Anda.
  2. Instal perangkat lunak pada sistem Anda.
  3. Buka prompt perintah sebagai administrator , dan salin tempel perintah selanjutnya:

    xperf -start perf!GeneralProfiles.InBuffer -stackwalk profile && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer %HOMEPATH%\myTrace.etl
    
  4. Tekan ENTER sekali untuk memulai perintah, sekarang Anda harus menunggu sampai spike terjadi.

  5. Tepat setelah spike Anda, Anda pergi ke konsol dan tekan ENTER.
  6. Setelah menunggu beberapa saat file log myTrace.etl akan diproduksi di folder pengguna Anda.
  7. Jalankan perintah berikut untuk menampilkan file dan menganalisisnya ( WinDBG / Simbol diperlukan):

    xperf %HOMEPATH%\myTrace.etl
    

Jika Anda ingin saya melihatnya:

  1. Kompres myTrace.etl dari Folder Pengguna Anda ke file zip.
  2. Bagikan file zip terkompresi di SpeedyShare .
  3. Bagikan tautan di sini, saya akan melakukan upaya untuk menemukan dan menunjukkan kepada Anda penyebab masalah Anda.

Karena WmiPrvSE.EXE adalah tuan rumah untuk menjalankan kueri WMI terhadap toko CAPI, Anda mungkin tidak dapat menemukan penyebabnya bahkan dengan XPerf karena IPC , solusi lain yang baru saja saya temukan adalah mengaktifkan WMI logging dan memeriksa log. seperti yang dijelaskan di sini , ClientProcessId akan menjadi PID dari Proses yang membuat kueri WMI. PID ini dapat dilacak kembali ke proses dengan menambahkan kolom PID ke Task Manager atau Process Explorer , atau dengan tasklist /FI "PID eq X"X adalah PID yang Anda temukan ...


Analisis Dump 1 : Baris 94-115 menunjukkan Panggilan Prosedur Jarak Jauh .
Analisis Dump 2 : Baris 84-105 menunjukkan Panggilan Prosedur Jarak Jauh .

Di Kernel, utas baru mulai menangani rintisan Panggilan Prosedur Jarak Jauh , yang intinya adalah permintaan kueri yang akan dijalankan dan ditanggapi oleh Penyedia WMI. Ini menghasilkan aktivitas CPU yang tinggi karena membaca Registry dan / atau informasi Kinerja.

Karena dump adalah tangkapan momen tunggal, Anda tidak akan dapat melihat proses mana yang melakukan RPC.
Jadi, Anda memerlukan program yang melacak seperti XPerf untuk melihat utas sebelumnya yang akan melakukan RPC.

Atau, jika Anda mengaktifkan Informasi Negara RPC , Anda dapat menggunakan rpcdbg untuk melihat siapa yang memulai panggilan.

Contoh:

0:000> bp rpcrt4!RpcServerUseProtseqEpA
0:000> g
Breakpoint 0 hit
eax=00452000 ebx=7ffd5000 ecx=00452008 edx=00000014 esi=00d5f55c edi=7c911970
eip=77e97a0b esp=0012ff3c ebp=0012ff6c iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
RPCRT4!RpcServerUseProtseqEpA:
77e97a0b 8bff mov edi,edi
0:000> kb
ChildEBP RetAddr Args to Child
0012ff38 00401046 00452000 00000014 00452008 RPCRT4!RpcServerUseProtseqEpA
0012ff6c 00401e37 00000001 003330a0 00333120 hellos!main+0x46 [e:\projects\hello\hellos.c @ 21]

Contoh di atas menetapkan breakpoint pada RPC, sehingga Anda bisa melihat siapa yang menjalankannya di baris kedua stack. Namun, sepertinya tidak mungkin menetapkan breakpoint pada panggilan pertama (harap dicatat bahwa ini adalah debugging langsung) akan membantu Anda untuk melihat siapa yang memanggil Penyedia WMI setiap kali ...

Ada banyak informasi lebih banyak dalam artikel tentang Informasi Status RPC yang mungkin membantu, tetapi bukan untuk yang lemah hati seperti kita untuk melalui semua itu ketika kita bisa menggunakan XPerf saja. :-)


Seperti yang sekarang kita ketahui tentang pekerjaan internal tentang cara kerja RPC, kita juga bisa menggunakan Monitor API :

  1. Unduh, instal, dan mulai Monitor API. ( dua kali jika Anda memiliki 64 bit: sekali x86, sekali x64)
  2. Buka File -> Run As Administrator
  3. Atur Filter Pengambilan API ke Rpcrt4.dllmodul.

    masukkan deskripsi gambar di sini

  4. Mirip dengan breakpoint, kami ingin tahu siapa yang memanggil RpcServerUseProtSeqfungsi:

    masukkan deskripsi gambar di sini

  5. Kaitkan setiap Proses Menjalankan kecuali untuk mereka yang memiliki PID rendah (untuk mencegah crash).
    Ideal, Anda tidak ingin terhubung dwm.exe/ winlogon.exeatau lebih rendah.
    Anda juga dapat mencoba satu proses dan melepaskannya nanti dari jendela Proses Berikat ...

    Meskipun ... Saya sudah mencobanya dan bisa mengaitkan proses apa pun.

  6. Jika semuanya berjalan dengan baik, Proses Hooked yang membuat panggilan RPC akan berisi utas.
    Dan setelah mengklik utas ini, Anda akan melihat banyak panggilan.
    Jika ya, Anda telah menemukan proses yang menyebabkan masalah!

Larutan

Menjaga komputer Anda selalu terbarui adalah penting, menginstal HPWA 4.0.10.0 menyelesaikan ini! ;-)

Tamara Wijsman
sumber
@ TomWij - Analisis dump online 1 , 2 . Buang di dropbox . Juga, saya tahu PID. apa yang bisa saya lakukan dengan itu
Sathyajith Bhat
1
jawaban yang sangat bagus, @TomWiji, dokumentasinya sangat membantu ...
studiohack
Baru saja menginstal HPWA, sepertinya tidak masuk. Mungkin perlu reboot. Jika hal yang sama terjadi pada PC saya, saya akan mencoba memperbarui posting dan menunjukkan bagaimana sebagian besar metode pemecahan masalah dapat menunjukkan kepada Anda bahwa masalah terjadi.
Tamara Wijsman
2
Saya menyukai jawaban nhinkles sedikit lebih baik - tapi ini bagus dan bermanfaat juga - tetapi yang paling penting, alat seperti monitor API adalah sesuatu yang mulai saya lewatkan akhir-akhir ini, jadi terima kasih dan beri +1 untuk petunjuknya.
Tobias Plutat
2
@ Tom, saya tidak berada di bawah kesan itu dan saya tentu tidak ingin menyiratkannya. Namun saya tidak merasakan dorongan untuk mengenali dua jawaban yang sangat baik untuk masalah dengan lebih bertele-tele sedikit dan diferensiasi daripada yang saya bisa dengan upvotes saja. :)
Tobias Plutat
13

Entri blog Microsoft Apakah WMI memberikan penjahat sungguhan? memperlihatkan bagaimana menemukan proses mana yang bertanggung jawab atas CPU yang digunakan WmiPrvSE.exe.

Metode ini menggunakan opsi penampil peristiwa "Tampilkan Analitik dan Debug Log" untuk melacak semua aktivitas WMI, sehingga mendapatkan id proses dari proses yang bersalah.

harrymc
sumber
Ya, mengatakan bahwa beberapa hari sebelumnya dan itu juga tercantum dalam posting saya antara XPerf dan Analisis Dump tetapi dia belum memeriksa PID, melakukan XPerf, atau melakukan API Monitor sejauh ini sehingga saya harus menunggunya sebelum menerapkan lebih lanjut analisis.
Tamara Wijsman
7

Hanya menambahkan ini untuk orang lain di kapal yang sama, halaman ini ada di seluruh Google. Saya memiliki masalah yang sama dengan spacing CPU WmiProvderHost hingga 50% dan menguras baterai pada Lenovo Yoga2 Pro saya pada Windows 8.1.

Mengikuti beberapa saran investigasi yang sangat baik di atas, saya menemukan masalah bagi saya sebenarnya adalah GoPro Studio (perangkat lunak pengedit video gratis yang datang dengan kamera GoPro). Itu menginstal layanan pemantauan yang menunggu Anda untuk menghubungkan kamera Anda dan bagi saya ini adalah pelakunya.

DannyT
sumber
3
Windows 8.1, setelah menutup program residen GoPro, penggunaan CPU Host WMI Penyedia saya turun dari 40% menjadi 8%
user63227
Windows 8.1, juga mengalami penggunaan CPU yang tinggi berkat perangkat lunak GoPro. Tutup dari baki sistem dan kembali normal (dan dinonaktifkan saat mulai sekarang).
Robin
4

Untuk men-debug-nya, gunakan xperf dari Windows Performance toolkit dan jalankan file cmd ini:

xperf -on PROC_THREAD+LOADER+PROFILE+INTERRUPT+DPC+DISPATCHER -stackwalk profile -BufferSize 1024 -MaxFile 256 -FileMode Circular -f Kernel.etl
xperf -start WMILogger -on Microsoft-Windows-WMI-Activity::0xff -BufferSize 1024 -f WMI.etl

echo Please capture about 30s of the WMI activity.

pause

xperf -stop
xperf -stop WMILogger
xperf -merge WMI.etl kernel.etl WMItracing.etl

del WMI.etl
del kernel.etl

Buka WMItracing.etl yang dihasilkan di WPA.exe dan ambil & jatuhkan grafik "Acara Umum" dari sisi kiri ke panel analisis.

masukkan deskripsi gambar di sini

Sekarang filter hanya untuk aktivitas Microsoft-Windows-WMI-Aktivitas , dan cari operasi WMI dan ClientProcessId.

Dalam contoh saya ini CLientProcessId milik alat yang disebut Veeam ONE Monitor Server . Menghentikannya, memperbaiki masalah penggunaan CPU .

Dan contoh kedua ditunjukkan di sini:

masukkan deskripsi gambar di sini

DIA Anda melihat panggilan berulang dari Proses dengan PID 1924 yang termasuk dalam layanan Intel ProSet Monitoring.

Di sini, penggunaan CPU juga ditampilkan dalam callstacks sampling CPU:

masukkan deskripsi gambar di sini

Jadi, alat Intel melakukan permintaan pemberitahuan WMI terlalu sering dan ini menyebabkan masalah. Menghentikannya, memperbaiki masalahnya.

magicandre1981
sumber
1

Sudahkah Anda mencoba melihat apakah itu virus? Beberapa virus sangat suka parade sekitar karena layanan Windows seperti itu. Pastikan WmiPrvSE.exeprosesnya berada di c:\windows\system32\wbemdirektori. Jika tidak, Anda mungkin ingin menjalankan program pendeteksi spyware umum. Jika bukan spyware, itu mungkin layanan lain yang memanggilnya. Saya tahu saya memiliki beberapa gadget cepat yang berjalan di komputer saya, dan ironisnya gadget monitor kinerja terkadang membuat CPU saya sedikit lonjakan. Juga, bisa jadi layanan lain yang menekan gas itu setiap sekarang dan kemudian. Misalnya, bloatware dari HP, Dell, dll.

Selain itu, jawaban lain dari TomWij tampaknya cukup bagus untuk memecahkan masalah!

Duall
sumber
1
Cara lain yang lebih umum untuk memeriksa ini adalah dengan menggunakan Process Explorer dari Sysinternals dan kemudian aktifkan Verify Signaturesopsi; kemudian, jika dikatakan (Verified) Xdi Verified Signerkolom maka itu diverifikasi oleh Microsoft dan yang dapat dieksekusi adalah bagian dari produk / perusahaan X, dalam hal ini Microsoft Windows.
Tamara Wijsman
Saya cukup yakin tidak ada virus / malware. Juga, WmiPrvSE hadir di C:\Windows\system32\wbemdan kolom terverifikasi menunjukkan bahwa file diverifikasi. @TomWij
Sathyajith Bhat
@ Sathya, saya mungkin akan mengatakan itu bloatware saat itu, terutama karena Anda berkomentar bahwa Anda memiliki HP "dg omong kosong bundel HP". Coba gunakan msconfig dan nonaktifkan semua layanan dan program HP saat startup dan lihat apakah itu membantu.
Duall
Intinya, saya memang ingin menginstal ulang Win 7 begitu saya memperbaiki SSD saya, berpikir ini akan menjadi pertanyaan yang menarik - lebih untuk mempelajari cara debug
Sathyajith Bhat