Bagikan melalui


Analisis CPU

Panduan ini menyediakan teknik terperinci yang dapat Anda gunakan untuk menyelidiki masalah terkait Central Processing Units (CPU) yang memengaruhi metrik penilaian.

Bagian metrik atau masalah individual dalam panduan analisis khusus penilaian mengidentifikasi masalah umum untuk penyelidikan. Panduan ini menyediakan teknik dan alat yang dapat Anda gunakan untuk menyelidiki masalah tersebut.

Teknik dalam panduan ini menggunakan Windows Penganalisis Kinerja (WPA) dari Windows Performance Toolkit (WPT). WPT adalah bagian dari Windows Assessment and Deployment Kit (Windows ADK) dan dapat diunduh dari Program Windows Insider. Untuk informasi selengkapnya, lihat Referensi Teknis Toolkit Performa Windows.

Panduan ini diatur ke dalam tiga bagian berikut:

Latar belakang

Bagian ini menjelaskan bagaimana sumber daya CPU dikelola di Windows 10.

Alat Windows ADK

Bagian ini menjelaskan cara melihat dan menginterpretasikan informasi CPU di Windows ADK Toolkit.

Teknik

Bagian ini berisi kumpulan teknik yang dapat Anda gunakan untuk menyelidiki dan menyelesaikan masalah umum yang terkait dengan performa CPU.

Latar

Bagian ini berisi deskripsi sederhana dan diskusi dasar tentang performa CPU. Untuk studi yang lebih komprehensif tentang topik ini, kami merekomendasikan buku Windows Internals, Edisi Kelima.

Komputer modern dapat berisi beberapa CPU yang diinstal dalam soket terpisah. Setiap CPU dapat menghosting beberapa inti prosesor fisik, masing-masing mampu memproses satu atau dua aliran instruksi terpisah secara bersamaan. Prosesor aliran instruksi individu ini dikelola oleh sistem operasi Windows sebagai prosesor logis.

Dalam panduan ini, prosesor dan CPU mengacu pada prosesor logis — yaitu, perangkat keras yang dapat digunakan sistem operasi untuk menjalankan instruksi program.

Windows 10 secara aktif mengelola perangkat keras prosesor dengan dua cara utama: manajemen daya, untuk menyeimbangkan konsumsi dan performa daya; dan penggunaan, untuk menyeimbangkan persyaratan pemrosesan program dan driver.

Manajemen Daya Prosesor

Prosesor tidak selalu ada dalam status operasi. Ketika tidak ada instruksi yang siap dijalankan, Windows akan menempatkan prosesor ke dalam status menganggur target (atau C-State), seperti yang ditentukan oleh Windows Power Manager. Berdasarkan pola penggunaan CPU, status C target prosesor akan disesuaikan dari waktu ke waktu.

Status diam adalah status bernomor dari C0 (aktif; tidak menganggur) melalui status daya yang semakin rendah. Status ini termasuk C1 (dihentikan tetapi jam masih diaktifkan), C2 (dihentikan dan jam dinonaktifkan), dan sebagainya. Implementasi status diam bersifat khusus prosesor. Namun, jumlah status yang lebih tinggi di semua prosesor mencerminkan konsumsi daya yang lebih rendah, tetapi juga waktu tunggu yang lebih lama sebelum prosesor dapat kembali ke pemrosesan instruksi. Waktu yang dihabiskan dalam status diam secara signifikan mempengaruhi penggunaan energi dan masa pakai baterai.

Beberapa prosesor dapat beroperasi dalam status performa (P-) dan pembatasan (T-) bahkan ketika mereka secara aktif memproses instruksi. Status P menentukan frekuensi jam dan tingkat tegangan yang didukung prosesor. Status-T tidak secara langsung mengubah frekuensi jam, tetapi dapat menurunkan kecepatan jam yang efektif dengan melompati aktivitas pemrosesan pada beberapa pecahan tanda centang jam. Bersama-sama, status P dan T saat ini menentukan frekuensi operasi prosesor yang efektif. Frekuensi yang lebih rendah sesuai dengan performa yang lebih rendah dan konsumsi daya yang lebih rendah.

Windows Power Manager menentukan status P dan T yang sesuai untuk setiap prosesor, berdasarkan pola penggunaan CPU dan kebijakan daya sistem. Waktu yang dihabiskan dalam status berkinerja tinggi versus status performa rendah secara signifikan mempengaruhi penggunaan energi dan masa pakai baterai.

Manajemen Penggunaan Prosesor

Windows menggunakan tiga abstraksi utama untuk mengelola penggunaan prosesor.

  • Proses

  • Utas

  • Panggilan Prosedur Yang Ditangguhkan (DPC) dan Rutinitas Layanan Interupsi (ISR)

Proses dan Utas

Semua program mode pengguna di Windows berjalan dalam konteks proses. Proses mencakup atribut dan komponen berikut:

  • Ruang alamat virtual

  • Kelas prioritas

  • Modul program yang dimuat

  • Informasi lingkungan dan konfigurasi

  • Setidaknya satu utas

Meskipun proses berisi modul, konteks, dan lingkungan program, proses tersebut tidak dijadwalkan secara langsung untuk dijalankan pada prosesor. Sebagai gantinya, utas yang dimiliki oleh proses dijadwalkan untuk berjalan pada prosesor.

Utas mempertahankan informasi konteks eksekusi. Hampir semua komputasi dikelola sebagai bagian dari utas. Aktivitas utas pada dasarnya memengaruhi pengukuran dan performa sistem.

Karena jumlah prosesor dalam sistem terbatas, semua utas tidak dapat dijalankan secara bersamaan. Windows menerapkan berbagi waktu prosesor, yang memungkinkan utas berjalan selama jangka waktu tertentu sebelum prosesor beralih ke utas lain. Tindakan peralihan antar utas disebut sakelar konteks dan dilakukan oleh komponen Windows yang disebut dispatcher. Dispatcher membuat keputusan penjadwalan utas berdasarkan prioritas, prosesor dan afinitas yang ideal, kuantum, dan status.

Prioritas

Prioritas adalah faktor kunci dalam bagaimana dispatcher memilih utas mana yang akan dijalankan. Prioritas alur adalah bilangan bulat dari 0 hingga 31. Jika utas dapat dieksekusi dan memiliki prioritas yang lebih tinggi daripada utas yang sedang berjalan, utas berprioritas lebih rendah segera didahulukan dan utas berprioritas lebih tinggi dialihkan konteksnya.

Ketika utas berjalan atau siap dijalankan, tidak ada utas berprioritas lebih rendah yang dapat berjalan kecuali ada cukup prosesor untuk menjalankan kedua utas secara bersamaan, atau kecuali utas berprioritas lebih tinggi dibatasi untuk berjalan hanya pada subset prosesor yang tersedia. Utas memiliki prioritas dasar yang dapat ditingkatkan sementara ke prioritas yang lebih tinggi pada waktu-waktu tertentu: misalnya, ketika proses memiliki jendela latar depan, atau ketika I/O selesai.

Prosesor dan Afinitas Ideal

Prosesor dan afinitas ideal utas menentukan prosesor tempat utas tertentu dijadwalkan untuk dijalankan. Setiap utas memiliki prosesor ideal yang diatur baik oleh program atau secara otomatis oleh Windows. Windows menggunakan metodologi round-robin sehingga jumlah utas yang kira-kira sama dalam setiap proses ditetapkan ke setiap prosesor. Jika memungkinkan, Windows menjadwalkan utas untuk berjalan pada prosesor idealnya; namun, utas kadang-kadang dapat berjalan pada prosesor lain.

Afinitas prosesor utas membatasi prosesor tempat utas akan berjalan. Ini adalah pembatasan yang lebih kuat daripada atribut prosesor ideal utas. Program menetapkan afinitas dengan menggunakan SetThreadAffinityMask. Afinitas dapat mencegah utas berjalan pada prosesor tertentu.

Quantum

Sakelar konteks adalah operasi yang mahal. Windows umumnya memungkinkan setiap utas berjalan untuk jangka waktu yang disebut kuantum sebelum beralih ke utas lain. Durasi kuantum dirancang untuk menjaga respons sistem yang jelas. Ini memaksimalkan throughput dengan meminimalkan overhead pengalihan konteks. Durasi kuantum dapat bervariasi antara klien dan server. Durasi kuantum biasanya lebih lama di server untuk memaksimalkan throughput dengan mengorbankan responsivitas yang jelas. Pada komputer klien, Windows menetapkan kuantum yang lebih pendek secara keseluruhan, tetapi menyediakan kuantum yang lebih panjang ke utas yang terkait dengan jendela latar depan saat ini.

Status

Setiap utas ada dalam status eksekusi tertentu pada waktu tertentu. Windows menggunakan tiga status yang relevan dengan performa; ini adalah: Berjalan, Siap, dan Menunggu.

Utas yang saat ini sedang dijalankan berada dalam status Berjalan . Utas yang dapat dijalankan tetapi saat ini tidak berjalan berada dalam status Siap . Utas yang tidak dapat dijalankan karena menunggu peristiwa tertentu berada dalam status Menunggu .

Transisi status ke status diperlihatkan dalam Transisi Status Alur Gambar 1:

gambar 1 transisi status utas

Gambar 1 Transisi Status Utas

Gambar 1 Transisi Status Utas dijelaskan sebagai berikut:

  1. Utas dalam status Berjalan memulai transisi ke status Menunggu dengan memanggil fungsi tunggu seperti WaitForSingleObject atau Sleep(> 0).

  2. Operasi utas atau kernel yang sedang berjalan membaca utas dalam status Menunggu (misalnya, SetEvent atau kedaluwarsa timer). Jika prosesor menganggur atau jika utas yang dibaca memiliki prioritas yang lebih tinggi daripada utas yang sedang berjalan, utas yang disiapan dapat beralih langsung ke status Berjalan. Jika tidak, itu dimasukkan ke dalam status Siap.

  3. Utas dalam status Siap dijadwalkan untuk diproses oleh dispatcher ketika utas yang sedang berjalan menunggu, menghasilkan (Tidur(0)), atau mencapai akhir kuantumnya.

  4. Utas dalam status Berjalan dialihkan dan ditempatkan ke status Siap oleh dispatcher ketika didahului oleh utas prioritas yang lebih tinggi, hasil (Tidur(0)), atau ketika kuantumnya berakhir.

Utas yang ada dalam status Menunggu tidak selalu menunjukkan masalah performa. Sebagian besar utas menghabiskan waktu yang signifikan dalam status Menunggu, yang memungkinkan prosesor memasuki status diam dan menghemat energi. Status utas menjadi faktor penting dalam performa hanya ketika pengguna sedang menunggu utas untuk menyelesaikan operasi.

DPC dan ISR

Selain memproses utas, prosesor merespons pemberitahuan dari perangkat keras seperti kartu jaringan atau timer. Ketika perangkat keras memerlukan perhatian prosesor, perangkat tersebut menghasilkan gangguan. Windows merespons gangguan perangkat keras dengan menangguhkan utas yang sedang berjalan dan menjalankan ISR yang terkait dengan gangguan.

Selama menjalankan ISR, prosesor dapat dicegah untuk menangani aktivitas lain, termasuk gangguan lainnya. Untuk alasan ini, ISR harus diselesaikan dengan cepat atau performa sistem dapat menur Untuk mengurangi waktu eksekusi, ISR biasanya menjadwalkan DPC untuk melakukan pekerjaan yang harus dilakukan sebagai respons terhadap gangguan. Untuk setiap prosesor logis, Windows mempertahankan antrean DPC terjadwal. DPC lebih diprioritaskan daripada utas pada tingkat prioritas apa pun. Sebelum prosesor kembali memproses utas, prosesor menjalankan semua DPC dalam antreannya.

Selama prosesor menjalankan DPC dan ISR, tidak ada utas yang dapat berjalan pada prosesor tersebut. Properti ini dapat menyebabkan masalah untuk utas yang harus melakukan pekerjaan pada throughput tertentu atau dengan waktu yang tepat, seperti utas yang memutar audio atau video. Jika waktu prosesor yang digunakan untuk menjalankan DPC dan ISR mencegah utas ini menerima waktu pemrosesan yang memadai, utas mungkin tidak mencapai throughput yang diperlukan atau menyelesaikan item kerjanya tepat waktu.

Alat Windows ADK

Windows ADK menulis informasi dan penilaian perangkat keras untuk menilai file hasil. WPA menyediakan informasi terperinci tentang penggunaan CPU dalam berbagai grafik. Bagian ini menjelaskan cara menggunakan Windows ADK dan WPA untuk mengumpulkan, melihat, dan menganalisis data performa CPU.

File Hasil Penilaian Windows ADK

Karena Windows hanya mendukung sistem multiproscessing simetris, semua informasi di bagian ini berlaku untuk semua CPU dan inti yang diinstal.

Informasi perangkat keras CPU terperinci tersedia di bagian EcoSysInfo file hasil penilaian di bawah simpul <Processor><Instance id=”0”> .

Contohnya:

<Processor>
  <Instance id="0">
    <ProcessorName>The name of the first CPU</ProcessorName>
    <TSCFrequency>The maximum frequency of the first CPU</TSCFrequency>
    <NumProcs>The total number of processors</NumProcs>
    <NumCores>The total number of cores</NumCores>
    <NumCPUs>The total number of logical processors</NumCPUs>
    ...and so on...

Grafik WPA

Setelah memuat jejak ke WPA, Anda dapat menemukan informasi perangkat keras prosesor di bawah bagian Trace/System Configuration/General dan Trace/System Configuration/PnP dari WPA UI.

Catatan Semua prosedur dalam panduan ini terjadi di WPA.

Grafik Status Diam CPU

Jika informasi status menganggur dikumpulkan dalam pelacakan, grafik Status Diam Power/CPU akan ditampilkan di UI WPA. Grafik ini selalu berisi data pada status Diam Target untuk setiap prosesor. Grafik juga akan berisi informasi tentang status Menganggur Aktual setiap prosesor jika status ini didukung oleh prosesor.

Setiap baris dalam tabel berikut ini menjelaskan perubahan status menganggur untuk status Target atau Aktual prosesor. Kolom berikut tersedia untuk setiap baris dalam grafik:

Kolom Detail

CPU

Prosesor yang dipengaruhi oleh perubahan status.

Waktu Entri

Waktu prosesor memasuki status menganggur.

Waktu Keluar

Waktu prosesor keluar dari status menganggur.

Maks:Durasi(ms)

Waktu yang dihabiskan dalam status menganggur (agregasi default:maximum).

Min:Duration(ms)

Waktu yang dihabiskan dalam status diam (agregasi default:minimum).

Status Berikutnya

Status yang ditransisikan prosesor setelah status saat ini.

Status Sebelumnya

Status dari mana prosesor bertransisi sebelum status saat ini.

Status

Status menganggur saat ini.

Status (Numerik)

Status menganggur saat ini sebagai angka (misalnya, 0 untuk C0).

Jumlah:Durasi(ms)

Waktu yang dihabiskan dalam status diam (agregasi default:sum).

Tabel

Tidak digunakan

Jenis

Baik Target (untuk status target yang dipilih Power Manager untuk prosesor) atau Aktual (untuk status menganggur prosesor yang sebenarnya).

Profil WPA default menyediakan dua prasetel untuk grafik ini: Status menurut Jenis, CPU , dan Diagram Status menurut Jenis, CPU.

Status menurut Jenis, CPU

Status Target dan Aktual dari setiap CPU digrafkan bersama dengan nomor status pada sumbu Y dalam grafik CPU Status menurut Jenis. Gambar 2 Status Menganggur CPU berdasarkan Jenis, CPU menunjukkan status Aktual CPU karena berfluktuasi antara status Aktif dan Diam Target.

gambar 2 status menganggur cpu menurut jenis cpu

Gambar 2 Status Diam CPU berdasarkan Jenis, CPU

Diagram Status menurut Jenis, CPU

Dalam grafik ini, status Target dan Aktual dari setiap CPU disajikan dalam format garis waktu. Setiap status memiliki baris terpisah dalam garis waktu. Gambar 3 Diagram Status Diam CPU menurut Jenis, CPU memperlihatkan data yang sama dengan Gambar 2 Status Diam CPU berdasarkan Jenis, CPU, dalam tampilan garis waktu.

gambar 3 status diam cpu diagram status berdasarkan jenis cpu

Gambar 3 Diagram Status Diam CPU berdasarkan Jenis, CPU

Grafik Frekuensi CPU

Jika data frekuensi CPU dikumpulkan pada sistem yang mendukung beberapa status P atau T, grafik Frekuensi CPU akan tersedia di UI WPA. Setiap baris dalam tabel berikut menunjukkan waktu pada tingkat frekuensi tertentu untuk prosesor. Kolom Frekuensi (MHz) berisi sejumlah frekuensi terbatas yang sesuai dengan status P dan T yang didukung oleh prosesor. Kolom berikut tersedia untuk setiap baris dalam grafik:

Kolom Detail

% Durasi

Durasi dinyatakan sebagai persentase total waktu CPU selama periode waktu yang terlihat saat ini.

Hitung

Jumlah perubahan frekuensi (selalu 1 untuk baris individual).

CPU

CPU yang dipengaruhi oleh perubahan frekuensi.

Waktu Entri

Waktu CPU memasuki status P.

Waktu Keluar

Waktu CPU keluar dari status P.

Frekuensi (MHz)

Frekuensi CPU selama berada dalam status P.

Maks:Durasi(ms)

Waktu yang dihabiskan dalam status P (agregasi default:maximum).

Min:Duration(ms)

Waktu yang dihabiskan dalam status P (agregasi default:minimum).

Jumlah:Durasi(ms)

Waktu yang dihabiskan dalam status P (agregasi default:sum).

Tabel

Tidak digunakan

Jenis

Informasi tambahan tentang P-State.

Profil default menentukan preset Frekuensi menurut CPU untuk grafik ini. Gambar 4 Frekuensi CPU menurut CPU menunjukkan CPU saat transisi antara tiga status P:

gambar 4 frekuensi cpu menurut cpu

Gambar 4 Frekuensi CPU menurut CPU

Grafik Penggunaan CPU (Sampel)

Data yang ditampilkan dalam grafik Penggunaan CPU (Sampel) mewakili sampel aktivitas CPU yang diambil pada interval pengambilan sampel reguler. Di sebagian besar jejak, ini adalah satu milidetik (1ms). Setiap baris dalam tabel mewakili satu sampel.

Berat sampel mewakili signifikansi sampel tersebut, relatif terhadap sampel lain. Beratnya sama dengan tanda waktu sampel saat ini dikurangi tanda waktu sampel sebelumnya. Berat tidak selalu sama persis dengan interval pengambilan sampel karena fluktuasi dalam status sistem dan aktivitas.

Pengambilan Sampel CPU Gambar 5 mewakili bagaimana data dikumpulkan:

gambar 5 pengambilan sampel cpu

Gambar 5 Pengambilan Sampel CPU

Setiap aktivitas CPU yang terjadi di antara sampel tidak direkam oleh metode pengambilan sampel ini. Oleh karena itu, aktivitas dengan durasi yang sangat singkat seperti DPC dan ISR tidak terwakili dengan baik dalam grafik Pengambilan Sampel CPU.

Kolom berikut tersedia untuk setiap baris dalam grafik:

Kolom Detail

% Berat

Bobot dinyatakan sebagai persentase dari total waktu CPU yang dihabiskan selama rentang waktu yang terlihat saat ini.

Alamat

Alamat memori fungsi yang berada di bagian atas tumpukan.

Semua Hitungan

Jumlah sampel yang diwakili oleh baris. Angka ini mencakup sampel yang diambil saat prosesor diam. Untuk baris individual, kolom ini selalu 1.

Hitung

Jumlah sampel yang diwakili oleh baris, tidak termasuk sampel yang diambil saat prosesor diam. Untuk baris individual, kolom ini selalu 1 (atau 0, untuk kasus ketika CPU dalam status daya rendah).

CPU

Indeks berbasis 0 dari CPU tempat sampel ini diambil.

Nama Tampilan

Nama tampilan proses aktif.

DPC/ISR

Apakah sampel mengukur penggunaan CPU reguler, DPC/ISR, atau status daya rendah.

Fungsi

Fungsi di bagian atas tumpukan.

Modul

Modul yang berisi fungsi di bagian atas tumpukan.

Prioritas

Prioritas utas yang sedang berjalan.

Proses

Nama gambar proses yang memiliki kode yang sedang berjalan.

Nama Proses

Nama lengkap (termasuk ID Proses) dari proses yang memiliki kode yang sedang berjalan.

Tumpukan

Tumpukan utas yang sedang berjalan.

ID Utas

ID utas yang sedang berjalan.

Fungsi Mulai Utas

Fungsi yang menjalankan utas dimulai.

Modul Mulai Utas

Modul yang berisi Fungsi Mulai Utas.

TimeStamp

Waktu sampel diambil.

Beban

Waktu (dalam milidetik) yang diwakili oleh sampel (yaitu, waktu sejak sampel terakhir).

Profil default menyediakan prasetel berikut untuk grafik ini:

  • Pemanfaatan oleh CPU

  • Pemanfaatan berdasarkan Prioritas

  • Pemanfaatan berdasarkan Proses

  • Pemanfaatan berdasarkan Proses dan Utas

Pemanfaatan oleh CPU

Grafik Pemanfaatan Penggunaan CPU oleh CPU menunjukkan cara kerja didistribusikan antar prosesor. Gambar 6 Pemanfaatan Penggunaan CPU oleh CPU menunjukkan distribusi ini untuk dua CPU:

gambar 6 pemanfaatan penggunaan cpu berdasarkan cpu

Gambar 6 Pemanfaatan Penggunaan CPU oleh CPU

Pemanfaatan berdasarkan Prioritas

Prioritas Penggunaan CPU yang dikelompokkan menurut utas menunjukkan bagaimana utas prioritas tinggi berdampak pada utas berprioritas lebih rendah. Gambar 7 Penggunaan CPU (Sampel) Pemanfaatan berdasarkan Prioritas menampilkan grafik ini:

gambar 7 penggunaan cpu sampel pemanfaatan berdasarkan prioritas

Gambar 7 Penggunaan CPU (Sampel) Pemanfaatan berdasarkan Prioritas

Pemanfaatan berdasarkan Proses

Penggunaan CPU yang dikelompokkan menurut proses menunjukkan penggunaan proses relatif. Gambar 8 Penggunaan CPU (Sampel) Pemanfaatan menurut Proses menunjukkan prasetel ini. Dalam grafik sampel ini, satu proses terbukti memakan lebih banyak waktu CPU daripada proses lainnya.

gambar 8 penggunaan cpu sampel pemanfaatan berdasarkan proses

Gambar 8 Penggunaan CPU (Sampel) Pemanfaatan berdasarkan Proses

Pemanfaatan berdasarkan Proses dan Utas

Penggunaan CPU yang dikelompokkan menurut proses lalu dikelompokkan menurut utas menunjukkan penggunaan relatif proses dan utas di setiap proses. Gambar 9 Penggunaan CPU (Sampel) Pemanfaatan berdasarkan Proses dan Utas menunjukkan prasetel ini. Alur dari satu proses dipilih dalam grafik ini.

gambar 9 penggunaan cpu sampel pemanfaatan berdasarkan proses

Gambar 9 Penggunaan CPU (Sampel) Pemanfaatan berdasarkan Proses dan Utas

Grafik Penggunaan CPU (Tepat)

Grafik Penggunaan CPU (Tepat) merekam informasi yang terkait dengan peristiwa pengalihan konteks. Setiap baris mewakili sekumpulan data yang terkait dengan sakelar konteks tunggal; yaitu, ketika utas mulai berjalan. Data dikumpulkan untuk urutan peristiwa berikut:

  1. Utas baru dialihkan.

  2. Utas baru dibuat siap untuk dijalankan oleh utas yang siap.

  3. Utas baru dialihkan, sehingga mengalihkan utas lama.

  4. Utas baru dialihkan lagi.

Pada Gambar 10 Diagram Tepat Penggunaan CPU, waktu mengalir dari kiri ke kanan. Label diagram sesuai dengan nama kolom dalam grafik Penggunaan CPU (Tepat ). Label untuk kolom Tanda Waktu ditampilkan di bagian atas diagram, dan label untuk kolom Durasi Interval ditampilkan di bagian bawah diagram.

gambar 10 diagram tepat penggunaan cpu

Gambar 10 Diagram Tepat Penggunaan CPU

Jeda garis waktu dalam Gambar 10 Diagram Tepat Penggunaan CPU membagi garis waktu menjadi wilayah yang dapat terjadi secara bersamaan pada CPU yang berbeda. Garis waktu ini dapat tumpang tindih selama urutan peristiwa bernomor tidak dimodifikasi. Misalnya, Rangkaian Siap dapat berjalan pada Prosesor-2 pada saat yang sama ketika utas baru dialihkan dan kemudian kembali ke Prosesor-1).

Informasi dicatat untuk empat target berikut pada garis waktu:

  • Utas baru, yang merupakan utas yang dialihkan. Ini adalah fokus utama baris ini dalam grafik.

  • Utas NewPrev, yang mengacu pada waktu sebelumnya bahwa utas baru dialihkan.

  • Rangkaian siap, yang merupakan utas yang menyiapkan utas baru untuk diproses.

  • Utas lama, yang merupakan utas yang dialihkan ketika utas baru dialihkan.

Data dalam tabel berikut berkaitan dengan setiap utas target:

Kolom Detail

% Penggunaan CPU

Penggunaan CPU utas baru setelah dialihkan. Nilai ini dinyatakan sebagai persentase dari total waktu CPU selama periode waktu yang terlihat saat ini.

Hitung

Jumlah sakelar konteks yang diwakili oleh baris. Ini selalu 1 untuk baris individual.

Count:Waits

Jumlah tunggu yang diwakili oleh baris. Ini selalu 1 untuk baris individual kecuali ketika utas dialihkan ke status diam; dalam hal ini, diatur ke 0.

CPU

CPU tempat sakelar konteks terjadi.

Penggunaan CPU (ms)

Penggunaan CPU utas baru setelah sakelar konteks. Ini sama dengan NewInSwitchTime, tetapi ditampilkan dalam milidetik.

IdealCpu

CPU ideal yang dipilih oleh penjadwal untuk utas baru.

LastSwitchOutTime (s)

Waktu sebelumnya utas baru dialihkan.

NewInPri

Prioritas utas baru yang dialihkan.

NewInSwitchTime

NextSwitchOutTime dikurangi SwitchInTime

NewOutPri

Prioritas utas baru saat dialihkan.

NewPrevOutPri

Prioritas utas baru ketika sebelumnya dialihkan.

NewPrevState

Status utas baru setelah sebelumnya dialihkan.

NewPrevWaitMode

Mode Tunggu utas baru saat sebelumnya dialihkan.

NewPrevWaitReason

Alasan bahwa utas baru dialihkan.

NewPriDecr

Peningkatan prioritas yang memengaruhi utas.

NewProcess

Proses utas baru.

Nama NewProcess

Nama proses utas baru, termasuk PID.

NewQnt

Tidak digunakan.

NewState

Status utas baru setelah dialihkan.

NewThreadId

ID utas utas baru.

NewThreadStack

Tumpukan utas baru saat dialihkan.

NewThreadStartFunction

Fungsi awal utas baru.

NewThreadStartModule

Modul awal utas baru.

NewWaitMode

Mode tunggu utas baru.

NewWaitReason

Alasan bahwa utas baru dialihkan.

NextSwitchOutTime

Waktu ketika utas baru berikutnya dialihkan.

OldInSwitchTime

Waktu saat utas lama dialihkan sebelum dialihkan.

OldOutPri

Prioritas utas lama ketika dialihkan.

OldProcess

Proses yang memiliki utas lama.

Nama OldProcess

Nama proses yang memiliki utas lama, termasuk PID.

OldQnt

Tidak digunakan.

OldState

Status utas lama setelah dialihkan.

OldThreadId

ID utas utas lama.

OldThreadStartFunction

Fungsi awal utas lama.

OldThreadStartModule

Modul awal utas lama.

OldWaitMode

Mode tunggu utas lama.

OldWaitReason

Alasan bahwa utas lama dialihkan.

PrevCState

CState sebelumnya dari prosesor. Jika ini bukan 0 (Aktif), prosesor berada dalam status menganggur sebelum utas baru dialihkan konteksnya.

Siap

SwitchInTime minusReadyTime (s)

ThreadId Siap

ID utas dari utas siap.

ThreadStartFunction Siap

Fungsi mulai dari utas yang siap.

Alur SiapStartModule

Modul awal utas siap.

ReadyingProcess

Proses yang memiliki utas siap.

Nama ReadyingProcess

Nama proses yang memiliki utas siap, termasuk PID.

ReadyThreadStack

Tumpukan utas siap.

ReadyTime (s)

Waktu ketika utas baru sudah disiapan.

SwitchInTime

Waktu ketika utas baru dialihkan.

TimeSinceLast (s)

SwitchInTime dikurangi LastSwitchOutTime (s)

Menunggu (s)

ReadyTime (s) dikurangi LastSwitchOutTime (s)

Profil default menggunakan prasetel berikut untuk grafik ini:

  • Garis waktu menurut CPU

  • Garis waktu menurut Proses, Utas

  • Penggunaan berdasarkan Prioritas di Pengalihan Konteks Dimulai

  • Pemanfaatan oleh CPU

  • Pemanfaatan berdasarkan Proses, Utas

Garis waktu menurut CPU

Penggunaan CPU pada garis waktu per CPU menunjukkan cara kerja didistribusikan di antara prosesor. Garis Waktu Penggunaan CPU Gambar 11 (Tepat) oleh CPU menampilkan garis waktu pada sistem delapan prosesor:

gambar 11 garis waktu tepat penggunaan cpu menurut cpu

Gambar 11 Garis Waktu Penggunaan CPU (Tepat) oleh CPU

Garis waktu menurut Proses, Utas

Penggunaan CPU pada garis waktu per proses per alur, menunjukkan proses mana yang memiliki utas yang berjalan pada waktu tertentu. Gambar 12 Penggunaan (Tepat) Garis Waktu menurut Proses, Utas menunjukkan garis waktu ini di beberapa proses:

gambar 12 garis waktu tepat penggunaan menurut utas proses

Gambar 12 Penggunaan (Tepat) Garis Waktu menurut Proses, Utas

Penggunaan berdasarkan Prioritas di Pengalihan Konteks Dimulai

Grafik ini mengidentifikasi semburan aktivitas utas berprioritas tinggi di setiap tingkat prioritas. Gambar 13 Penggunaan CPU (Tepat) Penggunaan berdasarkan Prioritas di Pengalihan Konteks Mulai menunjukkan distribusi prioritas:

gambar 13 penggunaan tepat penggunaan cpu berdasarkan prioritas di c

Gambar 13 Penggunaan CPU (Tepat) Penggunaan berdasarkan Prioritas pada Pengalihan Konteks Dimulai

Pemanfaatan oleh CPU

Dalam grafik ini, penggunaan CPU dikelompokkan dan di grafik oleh CPU untuk menunjukkan bagaimana pekerjaan didistribusikan di antara prosesor. Gambar 14 Penggunaan CPU (Tepat) Pemanfaatan oleh CPU menunjukkan grafik ini untuk sistem yang memiliki delapan prosesor.

gambar 14 pemanfaatan tepat penggunaan cpu berdasarkan cpu

Gambar 14 Penggunaan CPU (Presisi) Pemanfaatan oleh CPU

Pemanfaatan berdasarkan Proses, Utas

Dalam grafik ini, penggunaan CPU dikelompokkan terlebih dahulu menurut proses lalu berdasarkan utas. Ini menunjukkan penggunaan relatif proses dan utas dalam setiap proses Gambar 15 Penggunaan CPU (Tepat) Pemanfaatan berdasarkan Proses, Utas menunjukkan distribusi ini di beberapa proses:

gambar 15 pemanfaatan tepat penggunaan cpu berdasarkan proses

Gambar 15 Penggunaan CPU (Presisi) Pemanfaatan berdasarkan Proses, Utas

Grafik DPC/ISR

Grafik DPC/ISR adalah sumber utama untuk informasi DPC/ISR di WPA. Setiap baris dalam grafik mewakili fragmen, yang merupakan periode waktu di mana DPC atau ISR berjalan tanpa gangguan. Data dikumpulkan di awal dan akhir fragmen. Data tambahan dikumpulkan ketika DPC/ISR selesai. Gambar 16 Diagram DPC/ISR menunjukkan cara kerjanya:

gambar 16 diagram isr dpc

Gambar 16 Diagram DPC/ISR

Gambar 16 Diagram DPC/ISR menjelaskan data yang dikumpulkan selama aktivitas berikut:

  1. DPC/ISR-A mulai berjalan.

  2. Gangguan perangkat yang memiliki tingkat interupsi yang lebih tinggi daripada DPC/ISR-A menyebabkan ISR-B mengganggu DPC/ISR A, sehingga mengakhiri fragmen pertama DPC/ISR-A.

  3. ISR-B selesai dan dengan demikian mengakhiri fragmen ISR-B. DPC/ISR-A melanjutkan eksekusi dalam fragmen kedua.

  4. DPC/ISR-A selesai, sehingga mengakhiri fragmen kedua DPC/ISR-A.

Baris untuk setiap fragmen ditampilkan dalam tabel data. Fragmen untuk DPC/ISR-A berbagi informasi yang identik dengan kolom non-fragmen.

Kolom untuk grafik DPC/ISR menjelaskan informasi tingkat fragmen, atau kolom tingkat DPC/ISR. Setiap data dissimilar fragmen dalam kolom tingkat fragmen, dan data yang identik di kolom DPC/ISR.

Kolom Detail

% Durasi (Terfragmentasi)

Durasi (terfragmentasi) yang dinyatakan sebagai persentase dari total waktu CPU selama periode waktu yang terlihat saat ini.

% Durasi Eksklusif

Durasi eksklusif yang dinyatakan sebagai persentase dari total waktu CPU selama periode waktu yang terlihat saat ini.

% Durasi Inklusif

Durasi inklusif yang dinyatakan sebagai persentase dari total waktu CPU selama periode waktu yang terlihat saat ini.

Alamat

Alamat memori fungsi DPC atau ISR.

Hitungan (DPC/ISR)

Jumlah DPC/ISR yang diwakili oleh baris ini. Ini selalu 1 untuk baris yang mewakili fragmen akhir DPC/ISR; jika tidak, jumlah ini adalah 0.

Hitungan (Fragmen)

Jumlah fragmen yang diwakili oleh baris. Ini selalu 1 untuk baris individual.

CPU

Indeks prosesor logis tempat DPC atau ISR dijalankan.

Jenis DPC

Untuk DPC, jenis DPC,- baik Reguler atau Timer. Nilai ini kosong untuk ISR.

Waktu Masuk DPC/ISR (s)

Waktu dalam jejak ketika DPC/ISR dimulai.

Waktu Keluar DPC/ISR

Waktu dari awal pelacakan hingga ketika DPC/ISR selesai.

Durasi (Terfragmentasi) (ms)

Waktu Keluar Fragmen (s) minus Fragmen Enter Time (s) dalam milidetik.

Durasi Eksklusif (ms)

Jumlah durasi terfragmentasi dalam ms. untuk semua fragmen DPC/ISR ini.

Fragmen

Jika DPC/ISR baris ini memiliki beberapa fragmen, nilai ini True; jika tidak, itu adalah False.

Fragmen

Jika ini bukan satu-satunya fragmen untuk DPC/ISR ini, nilai ini True; jika tidak, itu adalah False.

Fragmen Masukkan Waktu (s)

Waktu fragmen mulai berjalan.

Waktu Keluar Fragmen (s)

Waktu fragmen berhenti berjalan.

Fungsi

Fungsi DPC atau ISR yang berjalan.

Durasi Inklusif (mdtk)

Waktu Keluar DPC/ISR dikurangi Waktu Masuk DPC/ISR dalam milidetik.

MessageIndex

Indeks interupsi untuk interupsi yang disinyalir pesan.

Modul

Modul yang berisi fungsi DPC atau ISR.

Tampilkan Nilai

Nilai pengembalian DPC/ISR

Jenis

Jenis peristiwa; ini- baik DPC atau Interupsi (ISR).

Vektor

Nilai vektor interupsi pada perangkat.

Profil default menggunakan prasetel berikut untuk grafik ini:

  • [DPC,ISR,DPC/ISR] Durasi menurut CPU

  • [DPC,ISR,DPC/ISR] Durasi menurut Modul, Fungsi

  • [DPC,ISR,DPC/ISR] Garis waktu menurut Modul, Fungsi

[DPC,ISR,DPC/ISR] Durasi menurut CPU

Peristiwa DPC/ISR dikumpulkan oleh CPU tempat peristiwa dijalankan dan diurutkan menurut durasi. Grafik ini menunjukkan alokasi aktivitas DPC di seluruh CPU. Gambar 17 Durasi DPC/ISR oleh CPU menunjukkan grafik ini untuk sistem yang memiliki delapan prosesor.

gambar 17 dpc durasi isr menurut cpu

Gambar 17 Durasi DPC/ISR menurut CPU

[DPC,ISR,DPC/ISR] Durasi menurut Modul, Fungsi

Peristiwa DPC/ISR dikumpulkan dalam grafik ini oleh modul dan fungsi rutinitas DPC/ISR, dan diurutkan menurut durasi. Ini menunjukkan rutinitas DPC/ISR mana yang menggunakan Durasi Gambar 18 DPC/ISR paling lama menurut Modul, Fungsi menunjukkan periode waktu yang menimbulkan aktivitas DPC/ISR dalam dua modul:

gambar 18 dpc isr durasi menurut fungsi modul

Gambar 18 Durasi DPC/ISR menurut Modul, Fungsi

[DPC,ISR,DPC/ISR] Garis waktu menurut Modul, Fungsi

Peristiwa DPC/ISR dikumpulkan dalam grafik ini oleh modul dan fungsi rutinitas DPC/ISR. Mereka diberi grafik sebagai garis waktu. Grafik ini memberikan tampilan terperinci tentang periode waktu di mana DPC/ISR berjalan. Grafik ini juga dapat menunjukkan bagaimana DPC/ISR tunggal dapat difragmentasi. Gambar 19 Garis Waktu DPC/ISR menurut Modul, Fungsi menunjukkan garis waktu aktivitas dalam tiga modul:

gambar 19 dpc isr timeline menurut fungsi modul

Gambar 19 Garis Waktu DPC/ISR menurut Modul, Fungsi

Pohon Tumpukan

Pohon tumpukan ditampilkan dalam tabel Penggunaan CPU (Sampel), Penggunaan CPU (Tepat) dan DPC/ISR di WPA, dan dalam masalah yang dilaporkan dalam laporan penilaian. Pohon tumpukan menggambarkan tumpukan panggilan yang terkait dengan beberapa peristiwa selama periode waktu tertentu. Setiap simpul di pohon mewakili segmen tumpukan yang dibagikan oleh subset peristiwa. Pohon dibangun dari tumpukan individu dan ditunjukkan dalam Gambar 20 Tumpukan dari Tiga Peristiwa:

gambar 20 tumpukan dari tiga peristiwa

Gambar 20 Tumpukan dari Tiga Peristiwa

Gambar 21 Segmen Umum yang Diidentifikasi menunjukkan seberapa umum urutan diidentifikasi untuk grafik ini:

gambar 21 segmen umum yang diidentifikasi

Gambar 21 Segmen Umum Diidentifikasi

Gambar 22 Pohon Dibangun dari Tumpukan menunjukkan bagaimana segmen umum digabungkan untuk membentuk simpul pohon:

gambar 22 pohon yang dibangun dari tumpukan

Gambar 22 Pohon Dibangun dari Tumpukan

Kolom Tumpukan di UI WPA berisi expander untuk setiap simpul non-daun. Dalam masalah yang dilaporkan penilaian, pohon ditampilkan bersama dengan bobot agregat. Beberapa cabang dapat dihapus dari grafik jika bobotnya tidak memenuhi ambang yang ditentukan. Tumpukan sampel di bawah ini menunjukkan bagaimana peristiwa yang diwakili di atas ditampilkan sebagai bagian dari masalah yang dilaporkan penilaian.

5ms   ModuleA!Function1
5ms   ModuleA!Function2
5ms   ModuleA!Function3
      |
4ms   |-ModuleA!Function4
4ms   |   ModuleB!Function1
| &nbsp; |
1ms   |   |-ModuleB-Function2
1ms   |   |    ModuleB-Function3
| &nbsp; |
3ms   |   |-ModuleB!Function3
3ms   |        ModuleB!Function4
      |
1ms   |-ModuleA!Function5
1ms        ModuleC!Function1
1ms        ModuleC!Function2

Simpul <itself> dalam tumpukan mewakili waktu fungsi itu sendiri berada di bagian atas tumpukan. Simpul <itself> tidak menyertakan waktu yang dihabiskan dalam fungsi yang dipanggil oleh fungsi induk. Durasi itu disebut waktu eksklusif yang dihabiskan dalam fungsi .

Misalnya, Function1 memanggil Function2. Function2 menghabiskan 2ms dalam perulangan intensif CPU dan disebut fungsi lain yang berjalan selama 4ms. Ini dapat diwakili oleh tumpukan berikut:

6ms   ModuleA!Function1
      |
2ms   |-<itself>
4ms   |-ModuleA!Function2
4ms        ModuleB!Function3
4ms        ModuleB-Function4

Teknik

Bagian ini menjelaskan pendekatan standar untuk analisis performa. Ini menyediakan teknik yang dapat Anda gunakan untuk menyelidiki masalah performa umum terkait CPU.

Analisis performa adalah proses empat langkah:

  1. Tentukan skenario dan masalahnya.

  2. Identifikasi komponen yang terlibat dan rentang waktu yang relevan.

  3. Buat model tentang apa yang seharusnya terjadi.

  4. Gunakan model untuk mengidentifikasi masalah dan menyelidiki akar penyebabnya.

Tentukan Skenario dan Masalah

Langkah pertama dalam analisis performa adalah menentukan skenario dan masalah dengan jelas. Banyak masalah performa memengaruhi skenario yang diukur oleh metrik penilaian. Contohnya:

Skenario 1: Sumber daya fisik tidak sepenuhnya digunakan. Misalnya, server tidak dapat sepenuhnya menggunakan koneksi jaringan karena tidak dapat mengenkripsi paket dengan cukup cepat.

Skenario 2: Sumber daya fisik sedang digunakan lebih dari yang seharusnya. Misalnya, sistem menggunakan sumber daya CPU yang signifikan selama periode diam yang menggunakan daya baterai.

Skenario 3: Aktivitas tidak diselesaikan pada tingkat yang diperlukan. Misalnya, bingkai dihilangkan selama pemutaran video karena bingkai tidak didekode dengan cukup cepat.

Skenario 4: Aktivitas tertunda. Misalnya, pengguna meluncurkan Internet Explorer tetapi membutuhkan waktu lebih lama dari yang diharapkan untuk membuka tab.

Skenario 3 dan 4 karena terkait dengan sumber daya CPU tercakup dalam panduan ini. Skenario 1 dan 2 berada di luar cakupan dan tidak tercakup. Untuk menganalisis masalah ini, Anda dapat memulai dengan pengamatan ambigu seperti "terlalu lambat" dan mengajukan pertanyaan tambahan untuk mengidentifikasi skenario dan masalah yang tepat.

Mengidentifikasi Komponen dan Periode Waktu

Setelah skenario dan masalah diidentifikasi, Anda dapat mengidentifikasi komponen yang terlibat dan periode waktu yang diminati. Komponen termasuk sumber daya perangkat keras, proses, dan utas.

Anda sering dapat menemukan rentang waktu yang diminati dengan mengidentifikasi aktivitas terkait dalam panduan analisis. Aktivitas adalah interval antara peristiwa mulai dan peristiwa berhenti yang dapat Anda pilih dan perbesar tampilannya, di WPA. Jika aktivitas tidak ditentukan, Anda dapat menemukan rentang waktu dengan mencari peristiwa umum tertentu yang terkait dengan skenario, atau dengan mencari perubahan dalam pemanfaatan sumber daya yang mungkin menandai awal dan akhir skenario. Misalnya, jika CPU menganggur selama dua detik dan kemudian sepenuhnya digunakan selama empat detik dan kemudian menganggur lagi selama dua detik, empat detik pemanfaatan penuh mungkin menjadi area yang menarik dalam jejak yang menangkap pemutaran video.

Buat model

Untuk memahami akar penyebab masalah, Anda harus memiliki model tentang apa yang seharusnya terjadi. Model dimulai dengan masalah atau tujuan terkait untuk metrik; misalnya, "Operasi ini seharusnya selesai dalam waktu kurang dari 5 detik."

Model yang lebih lengkap berisi informasi tentang performa komponen. Misalnya, komunikasi apa yang diharapkan antar komponen? Pemanfaatan sumber daya apa yang khas? Berapa lama operasi biasanya berlangsung?

Informasi untuk model sering dapat ditemukan dalam panduan analisis penilaian. Jika sumber daya tersebut tidak tersedia, Anda dapat menghasilkan jejak dari perangkat keras dan perangkat lunak serupa yang tidak menunjukkan masalah performa, untuk membuat model.

Gunakan Model untuk Mengidentifikasi Masalah, lalu Selidiki Akar Penyebabnya

Setelah memiliki model, Anda dapat membandingkan jejak dengan model untuk mengidentifikasi masalah. Misalnya, model untuk aktivitas tertentu yang disebut Tangguhkan Perangkat mungkin menyarankan bahwa seluruh aktivitas harus selesai dalam tiga detik, sementara setiap instans sub-aktivitas yang disebut Suspend <Device Name> harus memakan waktu tidak lebih dari 100ms. Jika dua instans sub-aktivitas Menangguhkan <Nama> Perangkat masing-masing membutuhkan waktu 800ms, Anda harus menyelidiki instans tersebut.

Setiap penyimpangan dari model dapat dianalisis untuk menemukan akar penyebabnya. Anda harus memeriksa status utas yang terlibat dan mencari akar penyebab umum. Beberapa akar penyebab utama terkait CPU, untuk aktivitas yang tidak selesai pada tingkat yang diperlukan atau tertunda, dijelaskan di sini:

Penggunaan CPU langsung: Utas yang sesuai menerima sumber daya CPU penuh tetapi program yang diperlukan tidak dijalankan dengan cukup cepat. Ini dapat disebabkan oleh kerusakan program atau oleh perangkat keras yang lambat.

Gangguan Utas: Utas tidak mendapatkan cukup waktu berjalan karena utas lain berjalan sebagai gantinya. Dalam hal ini, utas dianggap kelaparan atau didahului.

Gangguan DPC/ISR: Utas tidak mendapatkan cukup waktu berjalan karena CPU sibuk memproses DPC atau ISR.

Dalam banyak kasus, salah satu akar penyebab ini tidak terlalu mempengaruhi utas, dan utas menghabiskan sebagian besar waktunya dalam keadaan menunggu. Dalam hal ini, Anda harus mengidentifikasi dan menyelidiki peristiwa yang menunggu utas. Jenis investigasi rekursif ini disebut analisis tunggu, dan dimulai dengan mengidentifikasi jalur penting.

Teknik Lanjutan: Analisis Tunggu dan Jalur Kritis

Aktivitas adalah jaringan operasi, beberapa berurutan dan beberapa paralel, yang mengalir dari peristiwa awal ke peristiwa akhir. Setiap pasangan peristiwa mulai/akhir dalam pelacakan dapat dilihat sebagai aktivitas. Jalur terpanjang melalui jaringan operasi ini dikenal sebagai jalur kritis. Mengurangi durasi operasi apa pun di jalur kritis secara langsung mengurangi durasi aktivitas keseluruhan, meskipun juga dapat mengubah jalur kritis.

Gambar 23 Operasi Aktivitas menunjukkan aktivitas tiga utas. Thread-1 mengirimkan peristiwa mulai aktivitas lalu menunggu Thread-2 dan Thread-3 untuk menyelesaikan tugas mereka. Thread-2 menyelesaikan tugasnya terlebih dahulu, diikuti oleh Thread-3. Ketika kedua utas telah menyelesaikan tugas mereka, Thread-1 akan disiapan dan menyelesaikan peristiwa aktivitas.

gambar 23 operasi aktivitas

Gambar 23 Operasi Aktivitas

Dalam skenario ini, jalur kritis mencakup bagian dari Thread-3 dan Thread-1. Ini ditelusuri di Gambar 24 Jalur Kritis. Karena Thread-2 tidak berada di jalur kritis, waktu yang diperlukan untuk menyelesaikan tugasnya tidak memengaruhi waktu aktivitas secara keseluruhan.

gambar 24 jalur kritis

Gambar 24 Jalur Kritis

Jalur kritis adalah jawaban harfiah tingkat rendah untuk pertanyaan mengapa aktivitas membutuhkan waktu sebanyak itu. Setelah segmen utama jalur kritis diketahui, mereka dapat dianalisis untuk menemukan masalah yang berkontribusi pada penundaan keseluruhan.

Pendekatan Umum untuk Menemukan Jalur Kritis

Langkah pertama untuk menemukan jalur penting adalah meninjau model skenario untuk memahami tujuan dan implementasi aktivitas.

Memahami aktivitas dapat membantu mengidentifikasi operasi, proses, dan utas tertentu yang mungkin berada di jalur penting. Misalnya, penundaan aktivitas Init Resume Explorer Startup Cepat dapat disebabkan oleh aplikasi RunOnce dan proses inisialisasi Explorer, yang keduanya memerlukan sejumlah besar I/O.

Setelah Anda meninjau model skenario, periksa untuk melihat apakah penilaian melaporkan masalah untuk aktivitas yang terpengaruh. Sering kali, perkiraan jalur kritis disertakan dalam masalah keterlambatan yang dilaporkan penilaian. Jalur kritis ditampilkan sebagai urutan tindakan tunggu dan siap. Ini dapat dibaca dari awal hingga akhir sebagai urutan peristiwa, dengan segmen utama tertunda dari jalur kritis di tengah daftar. Entri terakhir dalam daftar adalah tindakan yang membaca utas yang menyelesaikan aktivitas.

Jika Anda harus mencari jalur penting secara manual, kami sarankan Anda mengidentifikasi proses dan utas yang menyelesaikan aktivitas dan bekerja mundur dari seketika aktivitas selesai. Anda dapat mengidentifikasi proses dan utas yang memulai aktivitas, serta proses dan utas yang menyelesaikan aktivitas, melalui grafik Aktivitas di WPA.

Grafik Aktivitas ditampilkan saat pelacakan dimuat melalui file XML hasil penilaian. Untuk mengidentifikasi proses dan utas yang terkait dengan aktivitas tertentu, perluas grafik ke Aktivitas yang menarik lalu alihkan tampilan ke Graph+Table. Atur mode grafik ke Tabel. Kolom Mulai Proses, Mulai Id Utas, Proses Akhir, dan Id Utas Akhir ditampilkan untuk setiap aktivitas dalam tabel.

Setelah Anda mengetahui proses awal dan akhir, utas, dan implementasi aktivitas, jalur kritis dapat dilacak mundur. Mulailah dengan menganalisis utas yang menyelesaikan aktivitas, untuk menentukan bagaimana utas tersebut menghabiskan sebagian besar waktunya: berjalan, siap, atau menunggu.

Waktu berjalan yang signifikan menunjukkan bahwa penggunaan CPU langsung mungkin telah berkontribusi pada durasi jalur kritis. Waktu yang dihabiskan dalam mode siap menunjukkan bahwa utas lain berkontribusi pada durasi jalur kritis dengan mencegah utas di jalur kritis dijalankan. Waktu yang dihabiskan untuk titik tunggu ke I/O, timer, atau utas dan proses lainnya pada jalur kritis tempat utas saat ini menunggu.

Setiap utas yang membaca utas saat ini mungkin merupakan tautan lain di jalur kritis, dan juga dapat dianalisis sampai durasi jalur kritis diperhitungkan.

Prosedur: Menemukan Jalur Kritis di WPA

Prosedur berikut mengasumsikan bahwa Anda telah mengidentifikasi aktivitas dalam grafik Aktivitas yang ingin Anda temukan jalur pentingnya.

  1. Anda dapat mengidentifikasi proses yang menyelesaikan aktivitas dengan mengarahkan mouse ke atas aktivitas di grafik Aktivitas .

  2. Tambahkan grafik Penggunaan CPU (Tepat). Perbesar ke aktivitas yang terpengaruh, dan terapkan preset Pemanfaatan menurut Proses, Alur .

  3. Klik kanan header kolom dan buat kolom ReadyThreadStack dan Penggunaan CPU (ms) terlihat. Hapus kolom Siap (kami) [Maks] dan Tunggu (kami) [Maks].

  4. Perluas proses target dan urutkan masing-masing menurut Penggunaan CPU (ms), Siap (kami) [Jumlah], dan Tunggu (kami) [Jumlah].

  5. Cari NewThreadIds dalam proses yang memiliki jumlah waktu tertinggi yang dihabiskan dalam status Berjalan, Siap, atau Menunggu.

    Utas yang menghabiskan waktu yang signifikan dalam status Berjalan atau Siap mungkin mewakili penggunaan CPU langsung pada jalur kritis. Perhatikan ID utas mereka.Utas yang menghabiskan waktu yang signifikan dalam status Menunggu mungkin menunggu I/O, timer, atau pada utas lain di jalur kritis.

  6. Untuk menemukan apa yang ditunggu utas, perluas grup NewThreadId untuk menampilkan ReadyThreadStack.

  7. Perluas [Root].

  8. Tumpukan yang dimulai dengan KiDispatchInterrupt tidak terkait dengan utas lain. Untuk menentukan apa yang ditunggu utas dalam tumpukan ini, perluas KiDispatchInterrupt dan lihat fungsi pada tumpukan anak. IopfCompleteRequest menunjukkan bahwa utas yang sudah dibaca sedang menunggu I/O. KiTimerExpiration menunjukkan bahwa utas yang sudah dibaca sedang menunggu timer.

  9. Perluas tumpukan yang tidak dimulai dengan KiDispatchInterrupt hingga Anda melihat ReadyingProcess dan ReadyingThread. Jika proses sudah diperluas, perluas NewThreadId yang sesuai dengan ReadyingThread. Ulangi langkah ini sampai Anda menemukan utas yang berjalan, siap, menunggu alasan lain, atau menunggu proses yang berbeda. Jika utas menunggu proses yang berbeda, ulangi prosedur ini dengan menggunakan proses tersebut.

Contoh

Contoh ini menyajikan penundaan dalam aktivitas Init Penjelajah Resume Startup Cepat. Pencarian di panel Masalah menunjukkan bahwa tujuh masalah jenis penundaan dilaporkan untuk aktivitas ini. Masing-masing masalah ini dapat ditinjau sebagai segmen dari jalur kritis. Segmen kunci berikut diidentifikasi:

  • Alur 3872 TestBootStrapper.exe proses (3024) didahului selama 2,1 detik.

  • Thread 3872 proses TestBootStrapper.exe (3024) menggunakan waktu CPU 1 detik.

  • Thread 3872 proses TestBootStrapper.exe (3024) menyiram sarang registri selama 544 milidetik.

  • Thread 3872 proses TestBootStrapper.exe (3024) tidur selama 513 milidetik.

  • Utas 4052 dan 4036 Explorer.exe dibaca dari disk, menyebabkan penundaan 461 milidetik.

  • Thread 3872 proses TestBootStrapper.exe (3024) kelaparan selama 187 milidetik.

  • Utas 3872 proses TestBootStrapper.exe menulis 3,5MB ke disk, menyebabkan penundaan 178 milidetik.

Masalah menunjukkan bahwa aktivitas ini tertunda 5,2 detik. Penundaan ini berkontribusi besar dari proporsi aktivitas secara keseluruhan durasi 6,3 detik. Aplikasi TestBootStrapper.exe terutama bertanggung jawab atas penundaan, terutama karena mendahului tugas pemrosesan lainnya.

Menyelidiki Masalah di Jalur Kritis

  1. Perbesar ke wilayah yang terpengaruh dan tambahkan kolom ReadyThreadStack dan Penggunaan CPU (ms).

  2. Dalam hal ini, Explorer.exe adalah proses yang menyelesaikan aktivitas. Perluas proses explorer.exe dan urutkan masing-masing menurut Penggunaan CPU (ms), Siap (kami) [Jumlah], dan Tunggu (kami) [Jumlah], seperti yang ditunjukkan pada gambar berikut:

    gambar 25 aktivitas berdasarkan penggunaan cpu ms

    Gambar 25 Aktivitas berdasarkan Penggunaan CPU (ms)

    gambar 26 aktivitas dengan siap kami

    Gambar 26 Aktivitas berdasarkan Siap (kami)

    gambar 27 aktivitas dengan menunggu kami

    Gambar 27 Aktivitas berdasarkan Tunggu (kami)

  3. Mengurutkan menurut kolom Penggunaan CPU (ms) memperlihatkan baris anak teratas 299 milidetik. Mengurutkan menurut kolom Siap (kami) [Jumlah] memperlihatkan baris anak atas 46ms. Mengurutkan menurut kolom Tunggu (us) [Jumlah] memperlihatkan baris anak teratas 5749 milidetik dan baris kedua 4902 milidetik. Karena baris ini berkontribusi secara signifikan terhadap penundaan, Anda harus menyelidikinya lebih lanjut.

  4. Perluas tumpukan untuk mengungkapkan utas siap, seperti yang ditunjukkan pada gambar berikut:

    proses siap dan rangkaian siap

    Gambar 28 Proses Siap dan Rangkaian Siap untuk Utas

    gambar 29 proses siap dan rangkaian siap untuk

    Gambar 29 Proses Siap dan Rangkaian Siap untuk Utas lain

    Dalam contoh ini, utas pertama menghabiskan sebagian besar waktunya menunggu proses RunOnce.exe keluar. Anda harus menyelidiki mengapa proses RunOnce.exe membutuhkan begitu banyak waktu untuk diselesaikan. Utas kedua menunggu pada utas pertama, dan mungkin merupakan tautan yang tidak signifikan dalam rantai tunggu yang sama.

  5. Ulangi langkah-langkah dalam prosedur ini untuk RunOnce.exe. Kolom kontribusi utama adalah Tunggu (kami), dan memiliki empat kemungkinan kontributor.

  6. Perluas setiap kontributor untuk melihat bahwa tiga kontributor pertama masing-masing menunggu kontributor keempat. Situasi ini membuat tiga kontributor pertama tidak signifikan untuk rantai tunggu. Kontributor keempat menunggu proses lain, TestBootStrapper.exe.

    Skenario ini ditunjukkan pada Gambar 30 Proses Siap dan Rangkaian Siap untuk Utas di RunOnce.exe:

    gambar 30 proses siap dan rangkaian siap untuk

    Gambar 30 Proses Siap dan Rangkaian Siap untuk Utas di RunOnce.exe

  7. Ulangi langkah-langkah dalam prosedur ini untuk TestBootStrapper.exe. Hasilnya ditunjukkan dalam tiga angka berikut:

    gambar 31 utas berdasarkan penggunaan cpu ms

    Gambar 31 Utas berdasarkan Penggunaan CPU (ms)

    gambar 32 utas dengan siap kami

    Gambar 32 Utas berdasarkan Siap (kami)

    gambar 33 utas dengan menunggu kita

    Gambar 33 Utas menurut Tunggu (kami)

    Thread 3872 menghabiskan sekitar 1 detik berjalan, 2 detik siap, dan 1,3 detik menunggu. Karena utas ini juga merupakan rangkaian siap untuk utas 3872, waktu berjalan dan siap mungkin berkontribusi pada penundaan. Penilaian melaporkan masalah berikut yang waktunya cocok dengan penundaan:

    • Thread 3872 proses TestBootStrapper.exe (3024) didahului selama 2,1 detik.

    • Thread 3872 proses TestBootStrapper.exe (3024) kelaparan selama 187 milidetik.

    • Thread 3872 proses TestBootStrapper.exe (3024) menggunakan waktu CPU 1 detik.

  8. Untuk menemukan masalah berkontribusi lainnya, lihat peristiwa tempat utas 3872 menunggu. Perluas ReadyThreadStack untuk melihat kontributor ke 1,3 detik menunggu, seperti yang ditunjukkan pada Gambar 34 Kontributor untuk Waktu Tunggu:

    gambar 34 kontributor untuk waktu tunggu

    Gambar 34 Kontributor untuk Waktu Tunggu

    KiRetireDpcList biasanya terkait I/O dan KiTimerExpiration adalah timer. Anda dapat melihat bagaimana I/Os dan timer dimulai dengan menghapus ReadyThreadStack lalu melihat NewThreadStack. Tampilan ini memperlihatkan tiga fungsi terkait, seperti yang ditunjukkan pada Gambar 35 I/Os dan Timer di NewThreadStack:

    gambar 35 ios dan timer pada newthreadstack

    Gambar 35 I/Os dan Timer di NewThreadStack

    Tampilan ini mengungkapkan detail berikut:

    • Thread 3872 proses TestBootStrapper.exe (3024) menyiram sarang registri selama 544 milidetik.

    • Thread 3872 proses TestBootStrapper.exe (3024) tidur selama 513 milidetik.

    • Utas 3872 proses TestBootStrapper.exe menulis 3,5MB ke disk, sehingga menyebabkan penundaan 178 milidetik.

  9. Ketika Anda mulai menyelidiki jalur kritis, Anda menganalisis penyebab tunggu paling signifikan di Explorer.exe dan mengabaikan bagian mana pun dari jalur kritis yang terjadi setelah penyebab tunggu itu. Untuk mengambil bagian yang sebelumnya diabaikan dari jalur kritis ini, Anda harus melihat garis waktu. Tambahkan Penggunaan CPU (Presisi) dan terapkan Garis Waktu menurut Proses, Preset utas .

  10. Filter untuk menyertakan hanya proses yang diidentifikasi sebagai bagian dari jalur kritis. Grafik yang dihasilkan ditampilkan dalam Gambar 36 Garis Waktu Jalur Kritis:

    gambar 36 garis waktu jalur kritis

    Gambar 36 Garis Waktu Jalur Kritis

    Gambar 36 Garis Waktu Jalur Kritis menunjukkan bahwa Explorer.exe melakukan lebih banyak pekerjaan setelah berhenti menunggu RunOnce.exe. Perbesar ke periode waktu setelah rantai tunggu yang dianalisis sebelumnya dan lakukan analisis lain. Dalam hal ini, analisis mengungkapkan sejumlah besar utas yang bersifat internal untuk Explorer.exe dan tidak ada jejak yang jelas melalui jalur kritis. Dalam hal ini, analisis lebih lanjut tidak mungkin menghasilkan wawasan yang dapat ditindak lanjuti.

Penggunaan CPU Langsung

Aktivitas sering tertunda karena utas di jalur kritis menggunakan waktu CPU yang signifikan. Dengan menggunakan model status utas, Anda dapat melihat bahwa masalah ini ditandai oleh utas pada jalur penting yang menghabiskan jumlah waktu yang luar biasa dalam status Berjalan. Pada beberapa perangkat keras, penggunaan CPU berat ini dapat berkontribusi pada penundaan.

Identifikasi Masalah

Banyak penilaian menggunakan heuristik untuk mengidentifikasi masalah terkait penggunaan CPU langsung. Penggunaan CPU yang signifikan pada jalur kritis dilaporkan sebagai masalah dalam bentuk berikut:

Penggunaan CPU berdasarkan proses P menunda aktivitas A yang terkena dampak selama x detik

Di mana P adalah proses yang berjalan, A adalah aktivitas, dan x adalah waktu dalam detik.

Jika masalah ini dilaporkan untuk aktivitas yang menimbulkan keterlambatan, penggunaan CPU langsung mungkin menjadi penyebabnya.

Menyelidiki Penggunaan CPU Langsung

  1. Anda dapat mengidentifikasi masalah secara manual dengan mencari CPU individual yang menimbulkan penggunaan CPU 100% dalam grafik Penggunaan CPU (Sampel).

  2. Perbesar ke area yang menarik dalam grafik dan pilih prasetel Pemanfaatan menurut Proses dan Utas .

    Secara default, tabel menampilkan baris di bagian atas yang memiliki penggunaan CPU agregat tertinggi. Utas ini juga ditampilkan di bagian atas grafik Penggunaan CPU (Sampel ).

    Catatan Pada sistem yang memiliki beberapa prosesor, utas yang menggunakan 100% dari satu prosesor akan tampak mengonsumsi 100/(jumlah prosesor logis). Pada sistem semacam ini, hanya utas diam virtual (PID 0, TID 0) yang dapat menunjukkan pemanfaatan prosesor yang lebih besar dari 100/(jumlah prosesor logis). Jika proses dan utas yang mengonsumsi CPU terbanyak sesuai dengan utas apa pun di jalur kritis, penggunaan CPU langsung mungkin merupakan faktor.

Contoh masalah Penggunaan CPU Langsung yang Dilaporkan Penilaian

Penggunaan CPU oleh proses TestUM.exe (4024) menunda aktivitas yang terkena dampak, proses matikan startup cepat TestIM.exe, selama 2,1 detik. Contoh ini ditunjukkan pada Gambar 37 Utas 3208:

gambar 37 utas 3208

Gambar 37 Utas 3208

Investigasi

Setelah Anda menemukan bahwa penggunaan CPU langsung berkontribusi pada penundaan pada jalur penting, Anda harus mengidentifikasi modul dan fungsi tertentu yang berkontribusi pada penundaan.

Teknik: Meninjau Masalah Penggunaan CPU Langsung yang Dilaporkan Penilaian

Anda dapat memperluas masalah penggunaan CPU langsung yang dilaporkan penilaian untuk menampilkan jalur penting yang terpengaruh oleh penggunaan CPU langsung. Jika Anda memperluas simpul yang terkait dengan penggunaan CPU, tumpukan yang terkait dengan penggunaan CPU dan modul terkait akan ditampilkan. Tampilan ini ditampilkan di Gambar 38 Segmen Penggunaan CPU yang Diperluas:

gambar 38 memperluas segmen penggunaan cpu

Gambar 38 Segmen Penggunaan CPU diperluas

Teknik: Menjelajahi Tumpukan Masalah Penggunaan CPU Langsung secara Manual

Jika penilaian tidak melaporkan masalah, atau jika Anda memerlukan verifikasi tambahan, Anda dapat menggunakan grafik Penggunaan CPU (Sampel) untuk mengumpulkan informasi secara manual tentang modul dan fungsi yang terlibat dalam masalah penggunaan CPU. Untuk melakukan ini, Anda harus memperbesar ke area yang menarik dan melihat tumpukan yang diurutkan menurut Penggunaan CPU.

Menjelajahi Tumpukan Masalah Penggunaan CPU Langsung secara Manual

  1. Pada menu Pelacakan, klik Muat Simbol.

  2. Perbesar garis waktu untuk menampilkan hanya bagian dari jalur penting yang terpengaruh oleh masalah CPU.

  3. Terapkan preset Pemanfaatan berdasarkan Proses dan Utas .

  4. Tambahkan kolom Tumpukan ke tampilan, lalu seret kolom ini ke kanan ID Utas (kiri bilah).

  5. Perluas proses dan utas untuk menampilkan pohon tumpukan.

    Baris dalam tumpukan diurutkan dalam urutan menurun menurut % Berat Penggunaan CPU. Ini menempatkan tumpukan yang paling menarik di atasnya. Saat Anda memperluas tumpukan, tonton kolom % Bobot untuk memastikan bahwa fokus Anda tetap pada baris yang memiliki penggunaan tertinggi.

  6. Untuk mengekstrak salinan tumpukan, pilih semua baris, klik kanan, dan klik Salin Pilihan.

Resolusi

Anda dapat menerapkan perbaikan pada tingkat konfigurasi dan komponen untuk mengatasi penggunaan CPU yang tinggi.

Penggunaan CPU langsung berdampak lebih tinggi pada komputer yang memiliki prosesor ujung bawah. Dalam kasus ini, Anda dapat menambahkan lebih banyak daya pemrosesan ke komputer. Atau, Anda mungkin dapat menghapus modul masalah dari jalur kritis atau dari sistem. Jika Anda dapat mengubah komponen, pertimbangkan upaya desain ulang untuk mencapai salah satu hasil berikut:

  • Menghapus kode intensif CPU dari jalur kritis

  • Gunakan algoritma yang lebih efisien CPU

  • Tangguhkan atau cache berfungsi

Gangguan Utas

Penggunaan CPU dengan utas yang tidak berada di jalur kritis (dan yang mungkin tidak terkait dengan aktivitas), dapat menyebabkan utas yang berada di jalur kritis tertunda. Model status utas menunjukkan bahwa masalah ini ditandai oleh utas pada jalur kritis yang menghabiskan sejumlah waktu yang tidak biasa dalam status Siap.

Identifikasi Masalah

Banyak penilaian menggunakan heuristik untuk mengidentifikasi masalah terkait gangguan. Ini dilaporkan dalam salah satu dari dua formulir berikut:

  • Proses P kelaparan. Kelaparan menyebabkan penundaan pada aktivitas yang terkena dampak A x ms.

  • Proses P didahului. Pemisahan menyebabkan penundaan aktivitas yang terkena dampak A x ms.

Di mana P adalah proses, A adalah aktivitas, dan x adalah waktu dalam ms.

Formulir pertama mencerminkan gangguan dari utas pada tingkat prioritas yang sama dengan utas pada jalur kritis. Bentuk kedua mencerminkan gangguan dari utas yang berada pada tingkat prioritas yang lebih tinggi daripada utas pada jalur kritis.

Jika jenis masalah ini dilaporkan untuk aktivitas yang tertunda, gangguan utas dapat menjadi penyebabnya. Anda dapat menggunakan grafik Penggunaan CPU (Tepat) untuk mengidentifikasi masalah secara manual.

Identifikasi Masalah Gangguan Utas

  1. Perbesar ke interval dan terapkan preset Pemanfaatan menurut CPU . Pemanfaatan 100% di semua CPU menunjukkan masalah gangguan.

  2. Terapkan Pemanfaatan menurut Proses, Prasetel utas, dan urutkan menurut kolom Siap (kami) pertama. (Ini adalah kolom yang menyertakan Jumlah agregasi.)

  3. Perluas proses aktivitas yang terpengaruh dan lihat Waktu siap untuk utas di jalur kritis. Nilai ini adalah waktu maksimum penundaan dapat dikurangi dengan menyelesaikan masalah Gangguan utas apa pun. Nilai dengan besarnya relatif signifikan terhadap penundaan yang diselidiki menunjukkan bahwa ada masalah gangguan utas.

Gambar 39 Pemanfaatan CPU Mendekati 100% dan Gambar 40 Masalah Gangguan Utas mewakili skenario ini:

angka 39 pemanfaatan cpu mendekati 100%

Gambar 39 Pemanfaatan CPU Mendekati 100%

masalah gangguan utas gambar 40

Gambar 40 Masalah Gangguan Utas

Investigasi

Setelah masalah diidentifikasi, Anda harus menentukan mengapa utas yang terpengaruh menghabiskan begitu banyak waktu dalam status Siap.

Teknik: Menentukan Mengapa Utas Menghabiskan Waktu dalam Status Siap

Anda dapat menggunakan grafik Penggunaan CPU (Tepat) untuk menentukan mengapa utas menghabiskan waktu dalam status Siap. Anda harus terlebih dahulu menentukan apakah utas dibatasi untuk prosesor tertentu. Meskipun Anda tidak dapat langsung mendapatkan informasi ini, Anda dapat memeriksa riwayat penggunaan CPU utas selama periode pemanfaatan CPU yang tinggi. Ini adalah periode ketika utas cenderung sering beralih antar prosesor.

Menentukan Pembatasan Prosesor Utas

  1. Perbesar ke wilayah yang terpengaruh.

  2. Tambahkan grafik Penggunaan CPU (Presisi) dan terapkan Pemanfaatan menurut Proses, Preset utas.

  3. Gunakan dialog Tingkat Lanjut untuk menambahkan kolom Cpu yang memiliki mode agregasi Jumlah Unik di sebelah kanan NewThreadId.

  4. Filter grafik untuk memperlihatkan hanya utas tempat Anda tertarik.

    Nilai dalam kolom Cpu mencerminkan jumlah prosesor tempat utas berjalan selama interval waktu saat ini. Selama periode pemanfaatan CPU 100%, jumlah ini memperkirakan jumlah prosesor tempat utas ini diizinkan untuk dijalankan. Jika nilainya kurang dari jumlah prosesor yang tersedia, utas mungkin dibatasi untuk CPU tertentu.

    Gambar 41 Utas Terbatas memberikan contoh grafik ini:

    gambar 41 utas terbatas

    Gambar 41 Utas Terbatas

Setelah Anda mengetahui pembatasan prosesor utas, Anda dapat menentukan utas yang didahulukan atau kelaparan. Untuk melakukan ini, Anda harus mengidentifikasi interval yang dihabiskan utas dalam status Siap dan kemudian memeriksa utas atau proses lain apa yang berjalan selama interval tersebut.

Menentukan Thread yang Didahului atau Kelaparan

  1. Buat grafik yang menunjukkan kapan utas berada dalam status Siap dan terapkan preset Pemanfaatan menurut Proses, Utas .

  2. Buka Editor Tampilan, klik Tingkat Lanjut, dan pilih tab Konfigurasi Grafik.

  3. Atur Waktu Mulai ke ReadyTime (s) dan atur Durasi ke Siap (kami), seperti yang ditunjukkan pada Gambar 42 Kolom Waktu Siap. Klik OK.

    gambar 42 kolom waktu siap

    Gambar 42 Kolom Waktu Siap

  4. Di Editor Tampilan, ganti kolom Penggunaan CPU (%) dengan kolom Siap (kami) [Jumlah].

  5. Pilih utas yang menarik untuk menghasilkan grafik yang mirip dengan Gambar 43 Ready Time Graph:

    gambar 43 grafik waktu siap

    Gambar 43 Grafik Waktu Siap

  6. Dalam hal ini, utas menghabiskan waktu yang signifikan dalam status Siap. Untuk menentukan prioritas umumnya, tambahkan agregasi Rata-rata ke kolom NewInPri .

    Dalam hal ini, prioritas rata-rata utas adalah tepat 8. Angka ini menunjukkan bahwa itu mungkin utas latar belakang yang tidak pernah menerima elevasi prioritas.

  7. Setelah prioritas rata-rata diketahui, lihat aktivitas CPU untuk CPU tempat utas diizinkan untuk dijalankan.

    Dalam hal ini, utas ditentukan untuk memiliki afinitas untuk CPU 1 saja.

  8. Tambahkan grafik Penggunaan CPU (Presisi) lain dan terapkan prasetel Pemanfaatan oleh CPU. Pilih CPU yang relevan.

  9. Buka tampilan Tingkat Lanjut dan tambahkan filter untuk prioritas yang Anda temukan sebelumnya untuk memfilter utas tersebut. Skenario ini ditampilkan dalam Gambar 44 Filter Utas:

    gambar 44 filter utas

    Gambar 44 Filter Utas

    Dalam Gambar 45 Penggunaan CPU, Waktu Siap, dan Aktivitas Utas Lainnya, grafik teratas menunjukkan penggunaan CPU utas 3548. Grafik tengah menunjukkan waktu alur siap, dan grafik bawah menunjukkan aktivitas pada CPU tempat utas diizinkan untuk dijalankan (dalam hal ini, Cpu1).

    gambar 45 waktu siap penggunaan cpu dan ac utas lainnya

    Gambar 45 Penggunaan CPU, Waktu Siap, dan Aktivitas Utas Lainnya

  10. Perbesar ke wilayah tempat utas siap, tetapi tidak berjalan, selama sebagian besar waktu selama interval tersebut.

  11. Dalam grafik Penggunaan CPU, tambahkan NewInPri di sebelah kiri bilah dan periksa hasilnya.

    Alur atau proses yang memiliki prioritas yang sama dengan prioritas utas target menunjukkan waktu bahwa utas kelaparan. Utas atau proses yang memiliki prioritas lebih tinggi daripada prioritas utas target menunjukkan waktu bahwa utas didahului. Anda dapat menghitung total waktu utas didahulukan dengan menambahkan waktu semua utas dan tindakan preemptive.

    Gambar 46 Penggunaan berdasarkan Prioritas Ketika Utas Target Siap menunjukkan bahwa 730ms dari waktu utas didahului, dan 300ms dari waktu utas kelaparan. (Gambar ini diperbesar ke interval 1192ms.)

    gambar 46 penggunaan berdasarkan prioritas ketika utas target

    Gambar 46 Penggunaan berdasarkan Prioritas Ketika Utas Target Siap

  12. Untuk menentukan utas mana yang bertanggung jawab atas preemption dan kelaparan utas ini, tambahkan kolom NewProcess di sebelah kanan kolom NewInPri dan tinjau tingkat prioritas tempat proses berjalan. Dalam hal ini, preemption dan kelaparan terutama disebabkan oleh utas lain dalam proses yang sama dan oleh TestResidentApp.exe. Anda dapat berasumsi bahwa proses ini menerima elevasi prioritas berkala di atas prioritas dasarnya.

Resolusi

Anda dapat mengatasi masalah pendahuluan atau kelaparan dengan mengubah konfigurasi atau komponen. Pertimbangkan solusi berikut:

  • Hapus proses bermasalah dari sistem.

  • Sesuaikan prioritas dasar proses bermasalah...

  • Ubah waktu ketika proses bermasalah berjalan; misalnya, tunda waktu mulai mereka terjadi ketika komputer di-boot ulang.

  • Jika komponen masalah dapat diubah, desain ulang menjadi kurang intensif CPU atau untuk dijalankan dengan prioritas yang lebih rendah.

Gangguan DPC/ISR

Ketika waktu prosesor yang berlebihan dikonsumsi dengan menjalankan DPC dan ISR, mungkin tidak ada cukup waktu CPU yang tersedia untuk menjalankan utas. Situasi ini dapat menyebabkan penundaan serupa pada gangguan utas. Ketika utas harus menyelesaikan operasi pada tingkat frekuensi tinggi reguler, seperti dalam pemutaran video atau animasi, gangguan oleh DPC dan ISR dapat menyebabkan masalah operasional.

Identifikasi Masalah

Banyak penilaian menggunakan heuristik untuk mengidentifikasi masalah terkait DPC/ISR. Aktivitas DPC/ISR diidentifikasi mencurigakan ketika dilaporkan sebagai masalah dalam bentuk berikut:

DPC D melebihi ambang batas m milidetik x kali selama P. Instans n dari DPC ini berjalan untuk total gabungan t milidetik.

Di mana D adalah DPC, m adalah jumlah milidetik yang mengatur ambang batas, x adalah berapa kali DPC melebihi ambang batas, P adalah proses saat ini, n adalah jumlah instans yang dijalankan DPC, dan t adalah total waktu dalam milidetik bahwa DPC melewati ambang batas.

Misalnya, masalah berikut dilaporkan oleh penilaian:

DPC sdbus.sys! SdbusWorkerDpc melebihi tujuan 3,0 milidetik 153 kali selama Masa Pakai Mesin Media. 153 instans DPC ini berjalan dengan total gabungan 864 milidetik

Jika masalah ini dilaporkan untuk aktivitas yang menunjukkan peristiwa masalah atau penundaan, aktivitas DPC/ISR mungkin menjadi penyebabnya.

Mengidentifikasi gangguan DPC/ISR secara manual

  1. Untuk mengidentifikasi gangguan DPC/ISR secara manual, buka jejak di WPA dan identifikasi peristiwa masalah yang menarik. Ini adalah peristiwa umum khusus penilaian seperti Microsoft-Windows-Dwm-Core:SCHEDULE_GLITCH atau Microsoft-Windows-MediaEngine:DroppedFrame.

  2. Di samping grafik peristiwa, tambahkan Durasi DPC/ISR menurut grafik CPU . Jika puncak dalam Durasi DPC/ISR oleh grafik CPU berbaris dengan peristiwa masalah, DPC/ISR mungkin menjadi faktor dalam menyebabkan masalah.

  3. Untuk data tambahan, perbesar ke periode waktu yang terjadi 100ms sebelum beberapa peristiwa masalah ditampilkan. Jika aktivitas DPC/ISR yang signifikan ditampilkan pada satu atau beberapa prosesor di wilayah 100ms sebelum peristiwa masalah terjadi, Anda dapat menyimpulkan bahwa peristiwa masalah disebabkan oleh aktivitas DPC/IRS.

  4. Untuk menentukan apakah gangguan DPC/ISR menyebabkan penundaan, perbesar ke wilayah yang menunjukkan utas yang sedang berjalan. Catat CPU atau CPU tempat utas ini berjalan.

  5. Dalam grafik DPC/ISR, terapkan Durasi DPC/ISR dengan prasetel CPU dan lihat aktivitas DPC/ISR pada CPU yang relevan dalam rentang waktu tersebut.

Gambar 47 Peristiwa Masalah dan Aktivitas DPC/ISR menunjukkan bahwa utas 864 iexplore.exe relevan dengan aktivitas yang terpengaruh. Thread 864 berada dalam status Berjalan pada CPU2 untuk 10,65% dari rentang waktu yang dilihat. Namun, grafik DPC/ISR menunjukkan bahwa CPU2 sibuk menjalankan DPC/ISR selama 10% dari waktu tersebut.

Catatan Sebagian besar DPC/ISR tidak memiliki dampak yang tinggi seperti yang ditunjukkan dalam contoh ini.

gambar 47 peristiwa masalah dan aktivitas isr dpc

Gambar 47 Peristiwa Masalah dan Aktivitas DPC/ISR

Pada Gambar 48 DPC/ISR Yang Tidak Terkait dengan Peristiwa Masalah, DPC/ISR dinyatakan tidak terkait dengan masalah performa:

gambar 48 dpc isr tidak terkait dengan peristiwa masalah

Gambar 48 DPC/ISR Tidak Terkait dengan Peristiwa Masalah

Pada Gambar 49 Keterlambatan yang disebabkan oleh Gangguan DPC/ISR, DPC/ISR ditunjukkan untuk menyebabkan masalah performa:

gambar 49 keterlambatan yang disebabkan oleh gangguan isr dpc

Gambar 49 Keterlambatan yang disebabkan oleh Gangguan DPC/ISR

Investigasi

Setelah Anda menentukan bahwa DPC/ISR terkait dengan masalah atau keterlambatan, Anda harus menentukan DPC/ISR tertentu mana yang terlibat dan mengapa mereka sering terjadi atau menjalankan untuk jangka waktu yang berlebihan.

Teknik: Meninjau Masalah DPC/ISR yang Dilaporkan Penilaian

Dalam masalah DPC/ISR yang dilaporkan penilaian, Anda dapat memperluas masalah yang menampilkan proses utama yang didahulukan oleh DPC atau ISR. Perluas tumpukan untuk melihat aktivitas DPC untuk proses yang paling terkait dengan aktivitas yang terkena dampak, seperti yang ditunjukkan, perluas tumpukan untuk memahami apa yang dilakukan DPC. Gambar 50 Expanded DPC Stack menunjukkan tumpukan yang diperluas:

gambar 50 diperluas tumpukan dpc

Gambar 50 Tumpukan DPC yang Diperluas

Teknik: Temukan DPC/ISR Durasi Tertinggi dan Tinjau Tumpukan

Jika penilaian tidak melaporkan DPC/ISR menjadi masalah, Anda dapat menggunakan grafik DPC/ISR dan Penggunaan CPU (Sampel) untuk mendapatkan informasi tumpukan untuk DPC yang paling relevan. Kami menyarankan agar Anda menemukan DPC/ISR yang menarik, perhatikan modul dan fungsinya, lalu temukan sampel dalam grafik Penggunaan CPU (Sampel) untuk mendapatkan informasi tumpukan lengkap.

Temukan DPC/ISR Durasi Tertinggi dan Tinjau Tumpukan

  1. Perbesar ke interval minat.

  2. Dalam grafik DPC/ISR, pilih Durasi DPC/ISR prasetel menurut Modul, Fungsi.

    Jika simbol dimuat, peristiwa DPC/ISR diurutkan menurut total durasi dan kemudian dipecah menurut Modul dan Fungsi. Baris teratas dalam daftar berisi peristiwa DPC/ISR yang mungkin menyebabkan masalah peristiwa. Catat nama modul dan fungsi.

  3. Dalam grafik Penggunaan CPU (Sampel) , pilih prasetel Pemanfaatan menurut Proses. Secara default, prasetel ini menyembunyikan aktivitas DPC/ISR.

  4. Buka Editor Tampilan, dan klik Tingkat Lanjut.

  5. Pada tab Filter , ubah sembunyikan baris yang cocok dengan pengaturan filter untuk Pertahankan baris yang cocok dengan filter. Ini akan memungkinkan aktivitas DPC/ISR ditampilkan.

  6. Hapus kolom Proses dan tambahkan kolom Tumpukan untuk menampilkan DPC/ISR yang diurutkan menurut tumpukan.

  7. Bersihkan pilihan baris saat ini.

  8. Klik kanan sel di kolom Tumpukan lalu klik Temukan di kolom ini.

  9. Masukkan modul dan fungsi yang Anda catat di Langkah 2 prosedur ini.

  10. Centang Tambahkan ke pilihan saat ini, dan klik Temukan Semua untuk memilih semua instans fungsi.

  11. Setelah semua baris dipilih, klik kanan dan klik Kupu-kupu/Lihat Panggilan.

Tampilan ini memperlihatkan aktivitas fungsi khusus ini, diurutkan menurut total durasi. Tampilan ini mirip dengan tampilan tumpukan dalam tampilan terperinci dari masalah yang dilaporkan penilaian. Kolom Bobot memperkirakan waktu inklusif yang dihabiskan oleh setiap fungsi pada tumpukan, dalam milidetik.

Tampilan ini diperlihatkan dalam Gambar 51 Callees dari DPC yang Diurutkan berdasarkan Perkiraan Durasi:

gambar 51 callees dari dpc yang diurutkan menurut perkiraan d

Gambar 51 Callees dari DPC yang Diurutkan berdasarkan Perkiraan Durasi

Teknik: Tinjau DPC/ISR yang Berjalan Lama

Durasi total DPC/ISR penting, tetapi DPC/ISR individu yang berjalan lama lebih cenderung menyebabkan penundaan. Dalam grafik DPC/ISR, kolom Durasi Inklusif (ms), diurutkan dalam urutan menurun, menampilkan durasi maksimum masing-masing DPC/ISR. DPC /ISR Panjang yang tersedia di beberapa profil penilaian memungkinkan Anda memfilter tampilan ini untuk hanya menampilkan DPC/ISR yang memiliki durasi inklusif yang lebih besar dari 1m.

Catatan Jika preset ini tidak tersedia, Anda dapat membuka bagian Tampilkan Editor, Tingkat Lanjut , untuk menambahkan filter.

Resolusi

Aktivitas DPC/ISR sering mencerminkan masalah perangkat keras atau perangkat lunak yang harus dikoreksi pada tingkat perangkat keras atau komponen. Pada tingkat konfigurasi, Anda dapat mengganti perangkat keras atau meningkatkan driver terkait ke versi tetap. Pada tingkat komponen, perangkat keras dan driver harus mengikuti praktik terbaik untuk DPC/ISR dari MSDN, dan harus menggunakan DPC berulir jika memungkinkan. DPC utas tidak berjalan pada tingkat pengiriman pada edisi klien Windows. Untuk informasi selengkapnya tentang praktik terbaik untuk DPC/ISR, lihat Panduan tentang perilaku ISR dan DPC dan Pengenalan DPC Utas.

Pengantar DPC Utas

Memuat Simbol

Power Management dan ACPI - Arsitektur dan Dukungan Driver

PPM di Windows Vista dan Windows Server 2008

Prioritas Penjadwalan

Penjadwalan, Konteks Utas, dan IRQL

Windows Internals, Edisi Keenam

Penganalisis Performa Windows

Referensi Teknis Toolkit Performa Windows