Bagaimana saya bisa mengidentifikasi penyebab Windows shutdown saya yang lambat?

30

Komputer saya membutuhkan waktu yang sangat lama untuk dimatikan.

Bagaimana saya bisa mengidentifikasi pelakunya? Saya tidak ingin menunggu beberapa menit sampai komputer saya mati ...

Apakah ada program yang bisa saya gunakan untuk melacak berapa lama waktu yang dibutuhkan untuk mematikan?

wizlog
sumber
1
Kami tidak tahu bagaimana sistem Anda sudah diatur dan apa yang bisa berjalan di latar belakang
random
1
OK ... Saya melihat orang lain bertanya, lalu menghapusnya ketika saya sedang menyusun jawaban yang sangat panjang dan lengkap ... (merasa agak kasihan pada diri saya sendiri)
wizlog
Anda selalu dapat menyarankannya untuk blog
acak
2
Tekan dan tahan tombol daya selama beberapa detik.
Daniel R Hicks
5
Pertanyaan ini valid, saya bisa menjawab ini secara objektif sehingga masalahnya teratasi. Tidak ada yang ambigu (masalahnya adalah waktu shutdownnya lama), kabur (dia ingin mempercepat shutdownnya), tidak lengkap (detail tidak diperlukan, tentu saja setiap komputer berbeda tetapi itu tidak membuat teknik untuk mengidentifikasi pelakunya ada yang berbeda), terlalu luas (Anda mungkin berpikir begitu, tapi saya tidak melihat pertanyaan lain pemecahan masalah shutdown jadi ini adalah pertanyaan yang sangat berharga untuk dimiliki, saya pikir itu akan luas jika dia ingin mempercepat hal-hal lain ) atau retorika (Ini melibatkan xperf).
Tamara Wijsman

Jawaban:

31

Windows menyediakan Penghitung Kinerja serta Pelacakan Peristiwa yang memungkinkan aplikasi melakukan analisis kinerja sehingga orang dapat menunjukkan dengan tepat penyebab masalah kinerja, di antara yang ada ada satu toolkit yang luar biasa: Windows Performance Toolkit tersedia di Windows SDK .

Dalam toolkit ini Anda akan menemukan xbootmgr.exe, dimaksudkan untuk Analisis Kinerja Transisi On / Off Windows .

Meskipun dokumen tertaut di atas menjelaskan semua detail untuk setiap transisi on / off, berikut adalah gagasan umum tentang melacak dan menganalisis transisi shutdown menggunakan xbootmgrdan GUI xperf:

  1. Unduh Windows SDK, lalu instal Windows Performance Toolkit dengan menggunakannya.

  2. Buka prompt perintah sebagai administrator, lalu jalankan:

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. Jika Anda ingin bantuan di masa mendatang, Anda dapat mengetik xbootmgr -helpjuga xperf /?.

  4. Lakukan pelacakan reboot seperti ini:

    xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot

  5. Setelah boot, itu akan menghasilkan jejak dalam waktu dua menit.

  6. Jejak telah disimpan %ProgramFiles%\Microsoft Windows Performance Toolkit, Anda dapat menariknya xperf.exedan akan dibuka dalam GUI.

  7. Anda akan melihat GUI dengan grafik yang berbeda, panah di sebelah kiri memungkinkan Anda untuk menambah / menghapus grafik.

  8. Lihat grafik dan lihat apakah Anda dapat mengidentifikasi sesuatu yang tidak biasa, Anda dapat memilih interval dan memperbesarnya jika Anda mau. Klik kanan dan batalkan zoom saat Anda ingin melihat keseluruhannya.

  9. Untuk setiap grafik, Anda dapat mengklik kanan untuk mendapatkan tabel ringkasan untuk interval yang saat ini dipilih .

  10. Dalam tabel ini, urutkan berdasarkan berat atau waktu untuk mencari tahu yang paling banyak dihabiskan. Harap perhatikan bahwa Anda dapat menyeret di sekitar kolom, jadi misalnya tabel I / O memungkinkan Anda untuk memeriksa proses penggunaan tertinggi serta jalur penggunaan tertinggi.

    Pembagi (kolom tajuk kuning) membuatnya sehingga kolom di sebelah kanannya menunjukkan total untuk kolom di sebelah kiri. Jadi, jika Anda memiliki Path terlebih dahulu dan kemudian Proses, maka Anda dapat membuka pohon untuk file untuk melihat proses apa yang telah mengaksesnya dan kemudian Anda mendapatkan total untuk kombinasi proses / file tersebut.

  11. Anda dapat menemukan informasi lebih lanjut tentang bagaimana grafik dan tabel berfungsi di sini .

  12. Jika Anda entah bagaimana harus turun untuk melihat jejak tumpukan; lakukan jejak boot lain dan tambahkan -stackWalk profileparameter, atur _NT_SYMBOL_PATH dan klik kanan pada grafik apa pun dan aktifkan "Muat Simbol". Ini akan memungkinkan Anda untuk memeriksa fungsi apa yang sebenarnya dipanggil, secara umum Anda tidak akan memerlukan ini untuk shutdown; tetapi dapat memungkinkan untuk hal-hal seperti menemukan bahwa firewall Anda mengganggu debugger Anda sebagai seorang programmer. Cukup bagus ...

Semoga beruntung, saya harap Anda dapat menemukan pelakunya. Jika tidak, hapus jejaknya dan kami akan mencari Anda ...

Harap dicatat bahwa DPC adalah Panggilan Prosedur yang Ditangguhkan dan Interupsi adalah Interupsi Perangkat Lunak , keduanya terkait dengan driver / perangkat keras.

Tamara Wijsman
sumber
1
Jawaban bermanfaat yang luar biasa. Setiap tutorial tentang ETW sangat berguna; ini adalah area Windows tanpa dokumentasi dan gui untuk memandu.
Ian Boyd
@Tom Wijsman Links perlu diperbarui
Moab
Sekarang ini merupakan bagian dari Windows Assessment and Deployment Kit, sebuah Tautan dapat ditemukan misalnya di msdn.microsoft.com/en-us/windows/hardware/commercialize/test/… atau hanya dengan mencari "Windows ADK". Selama instalasi, dimungkinkan untuk memilih Performance Toolkit.
Andreas Reiff
Sekarang ini juga bagian ..., karena masih tersedia di SDK.
Tamara Wijsman
22

Shutdowns saya membutuhkan waktu lama untuk dijalankan. Berikut ini adalah contoh saya dengan jawaban Tom .

Grafik pertama menunjukkan masalah, Disk I / O :

masukkan deskripsi gambar di sini

Shutdown saya memakan waktu lebih dari satu menit dan itu semua I / O hard drive.

Grafik berikutnya, Disk Utilization menunjukkan drive hampir mencapai maksimum 100% penggunaan:

masukkan deskripsi gambar di sini

Grafik terakhir menunjukkan Pemanfaatan Disk oleh Proses :

masukkan deskripsi gambar di sini

Menyaring saya menyadari itu semua disebabkan oleh WinInit.exe:

masukkan deskripsi gambar di sini

Dengan mengklik kanan salah satu grafik hard drive dan memilih Tabel Ringkasan , saya bisa mendapatkan detail file apa yang diakses oleh proses apa:

masukkan deskripsi gambar di sini

56,4 detik dari shutdown saya dihabiskan dengan WinInitmenulis 6,7GB untuk C:\hiberfil.sys.


Tetapi pertanyaannya adalah mengapa Windows menulis ke file hibernasi saya saat shutdown ?

Kemudian saya ingat opsi yang telah saya aktifkan untuk menghapus file paging itu pada saat shutdown:

  • Mulai -> Jalankan -> SecPol.msc
    • Pengaturan Keamanan, Kebijakan Lokal, Opsi Keamanan
    • Shutdown: Bersihkan pagefile memori virtual

masukkan deskripsi gambar di sini

Jadi saya menonaktifkan opsi, dan menjalankan xbootmgrlagi. Sekarang shutdown saya adalah 22 detik:

masukkan deskripsi gambar di sini

Sekarang 9sdari 22sshutdown dihabiskan oleh Systemmenulis beberapa unknownberkas. Itu mungkin layak untuk diselidiki lebih lanjut.

Tetapi untuk sekarang saya telah memecahkan menit dan setengah shutdown saya.


saya melangkah lebih jauh dan menyelesaikan shutdown lambat 22-an saya. Dari t = 12suntuk t = 21smenunjukkan 100% Disk Pemanfaatan , tapi nol Disk I / O . Itu membingungkan.

Sampai saat satu shutdown saya mendengar suara yang familiar dari salah satu drive saya berputar. Shutdown terhenti selama 9 detik karena Windows berusaha mengakses disk yang sudah tertidur. Sembilan detik kemudian drive merespons, dan sesaat kemudian mesin dimatikan.

Ironisnya Windows membangunkan disk untuk memberi tahu bahwa sudah waktunya tidur.

Itu akan membuat shutdown saya yang sebenarnya 13,5 detik. Itu mungkin perlu penyelidikan lebih lanjut. Tetapi untuk sekarang saya telah menyelesaikan shutdown 22 detik saya.

Ian Boyd
sumber
1
+1 Senang Anda menyelesaikannya dalam kasus Anda, dan pos yang bagus!
Tamara Wijsman
1
Jawaban ini layak mendapat posting blog, bukan? ;)
Ivo Flipse