Menganalisis performa dengan menggunakan pembuatan profil CPU di Profiler Performa (C#, Visual Basic, C++, F#)

Cara yang baik untuk mulai menyelidiki masalah performa di aplikasi Anda adalah dengan memahami pemanfaatan CPU-nya menggunakan profiler CPU. Alat performa Penggunaan CPU menunjukkan waktu dan persentase CPU yang dihabiskan untuk mengeksekusi kode di C++, C#/Visual Basic.

Alat Penggunaan CPU dapat membantu Anda:

  • Diagnosis pelambatan atau proses yang macet di basis kode tim Anda. Alat ini dapat membantu Anda mendiagnosis masalah dengan kode produksi tim Anda. Alat ini memberikan wawasan otomatis dan berbagai tampilan data Anda sehingga Anda dapat menganalisis dan mendiagnosis masalah performa.

  • Identifikasi masalah performa dalam skenario DevOps, seperti ketika pelanggan melaporkan bahwa beberapa permintaan atau pesanan tidak masuk ke situs web ritel selama musim sibuk. Sering kali, masalahnya sedang dalam produksi, dan sulit untuk men-debug pada saat itu, tetapi alat ini dapat membantu Anda mendapatkan informasi dan bukti masalah yang cukup. Setelah mengumpulkan file pelacakan, analisis dapat dengan cepat membantu Anda memahami potensi penyebab dan memberikan saran dalam konteks kode sehingga Anda dapat mengambil langkah-langkah berikutnya untuk memperbaiki masalah.

  • Jika masalah latensi Anda tidak berada dalam permintaan API, maka Anda dapat memeriksa pemanfaatan CPU yang tinggi dan masalah terkait lainnya dengan alat Penggunaan CPU. Alat Penggunaan CPU dapat membantu Anda mengidentifikasi hambatan sehingga Anda dapat mempersempit tempat untuk mengoptimalkan.

Alat Penggunaan CPU berguna untuk sesi pelacakan lokal dan produksi. Alat Penggunaan CPU juga dapat dimulai dengan menggunakan pintasan keyboard, Alt+F2, lalu memilih Penggunaan CPU, atau dengan membuka jejak yang sudah dikumpulkan menggunakan alat seperti dotnet-trace atau dotnet-monitor. (Untuk kode produksi .NET, ini kemungkinan besar bagaimana Anda akan mengumpulkan jejak.)

Alat Penggunaan CPU dapat berjalan pada proyek Visual Studio terbuka, pada aplikasi Microsoft Store yang diinstal, atau dilampirkan ke aplikasi atau proses yang sedang berjalan. Anda dapat menjalankan alat Penggunaan CPU dengan atau tanpa penelusuran kesalahan. Untuk informasi selengkapnya, lihat Menjalankan alat pemrofilan dengan atau tanpa penelusur kesalahan.

Instruksi berikut menunjukkan cara menggunakan alat Penggunaan CPU tanpa debugger, menggunakan Profiler Performa Visual Studio. Contohnya menggunakan build Rilis pada komputer lokal. Build Rilis memberikan tampilan terbaik dari performa aplikasi aktual. Untuk tutorial yang menunjukkan cara meningkatkan performa menggunakan alat Penggunaan CPU, lihat Panduan pemula untuk mengoptimalkan kode.

Biasanya, komputer lokal paling baik mereplikasi eksekusi aplikasi yang diinstal. Untuk mengumpulkan data dari perangkat jarak jauh, jalankan aplikasi langsung di perangkat, bukan melalui Koneksi Desktop Jarak Jauh.

Mengumpulkan data pemanfaatan CPU

  1. Dalam proyek Visual Studio, atur konfigurasi solusi ke Rilis dan pilih Debugger Windows Lokal (atau Komputer Lokal) sebagai target penyebaran.

    Cuplikan layar yang memperlihatkan Pilih Rilis dan Komputer Lokal.

    Cuplikan layar yang memperlihatkan Pilih Rilis dan Komputer Lokal.

  2. Pilih Debug>Profiler Performa.

  3. Di bawah Alat yang tersedia, pilih Penggunaan CPU, lalu pilih Mulai.

    Cuplikan layar yang memperlihatkan Pilih Penggunaan CPU.

    Cuplikan layar yang memperlihatkan Pilih Penggunaan CPU.

    Jika Anda mengaktifkan opsi Mulai dengan koleksi yang dijeda sebelum memulai profiler, data tidak akan dikumpulkan hingga Anda memilih tombol Rekam dalam tampilan sesi diagnostik.

    Catatan

    Untuk informasi selengkapnya tentang cara membuat alat lebih efisien, lihat Mengoptimalkan pengaturan Pembuat profil.

  4. Setelah aplikasi dimulai, sesi diagnostik dimulai dan menampilkan data pemanfaatan CPU. Setelah selesai mengumpulkan data, pilih Hentikan Koleksi.

    Cuplikan layar yang memperlihatkan Hentikan pengumpulan data Penggunaan CPU.

    Cuplikan layar yang memperlihatkan Hentikan pengumpulan data Penggunaan CPU.

    Alat Penggunaan CPU menganalisis data dan menampilkan laporan. Jika Anda mengalami masalah saat mengumpulkan atau menampilkan data, lihat Memecahkan masalah kesalahan pembuatan profil dan memperbaiki masalah.

    Cuplikan layar yang memperlihatkan laporan Penggunaan CPU.

    Cuplikan layar yang memperlihatkan laporan Penggunaan CPU.

    Gunakan menu drop-down Filter untuk memilih atau membatalkan pilihan utas yang akan ditampilkan, dan gunakan kotak Pencarian untuk mencari utas atau node tertentu.

Kolom data pemanfaatan CPU

Nama Deskripsi
Total CPU [unit, %] Total % persamaan data

Persentase milidetik dan CPU yang digunakan oleh panggilan ke fungsi, dan fungsi yang dipanggil oleh fungsi, dalam rentang waktu yang dipilih. Ini berbeda dari grafik garis waktu Pemanfaatan CPU, yang membandingkan total aktivitas CPU dalam rentang waktu dengan total CPU yang tersedia.
CPU mandiri [unit, %] Persamaan %mandiri

Persentase milidetik dan CPU yang digunakan oleh panggilan ke fungsi dalam rentang waktu yang dipilih, tidak termasuk fungsi yang dipanggil oleh fungsi.
Modul Dalam beberapa tampilan, kolom Modul ditampilkan, yang menunjukkan nama modul yang berisi fungsi.

Menganalisis wawasan CPU

Untuk menganalisis wawasan teratas, fungsi teratas, dan jalur panas, lihat wawasan CPU.

Menganalisis pemanfaatan CPU

Untuk menganalisis laporan Penggunaan CPU, klik Buka detail, atau klik salah satu fungsi teratas untuk membuka tampilan Fungsi .

Laporan ini menyediakan tampilan data diagnostik yang berbeda:

  • Penelepon/penerima panggilan
  • Pohon panggilan
  • Modul
  • Fungsi
  • Grafik api

Untuk menganalisis laporan, klik Buat laporan terperinci.

Laporan ini menyediakan tampilan data diagnostik yang berbeda:

  • Penelepon/penerima panggilan
  • Pohon panggilan

Dalam semua tampilan kecuali Penelepon/penerima panggilan, laporan diagnostik diurutkan menurut Total CPU, dari tertinggi hingga terendah. Ubah urutan pengurutan atau kolom pengurutan dengan memilih header kolom. Anda dapat mengeklik dua kali pada fungsi yang Anda minati, dan Anda akan melihat sumber untuk fungsi serta menyoroti yang menunjukkan di mana waktu dihabiskan dalam fungsi tersebut. Tabel memperlihatkan kolom dengan data seperti waktu yang dihabiskan dalam fungsi, termasuk fungsi yang disebut (Total CPU), dan kolom kedua yang memperlihatkan waktu yang dihabiskan dalam fungsi, tidak termasuk fungsi yang disebut (CPU Mandiri).

Data ini dapat membantu Anda menilai apakah fungsi itu sendiri merupakan penyempitan performa. Tentukan berapa banyak data yang ditampilkan metode untuk melihat apakah kode pihak ketiga atau pustaka runtime adalah alasan titik akhir Anda lambat atau konsumsi sumber daya berat.

Untuk informasi selengkapnya tentang menggunakan grafik Api, lihat Mengidentifikasi jalur panas dengan Grafik Api.

Pohon panggilan Penggunaan CPU

Untuk melihat pohon panggilan, pilih node induk dalam laporan. Secara default, halaman Penggunaan CPU terbuka ke tampilan Penelepon/Callee . Di menu dropdown Tampilan Saat Ini, pilih Pohon Panggilan.

Anda dapat mengklik tombol Perluas Jalur Panas dan Tampilkan Jalur Panas untuk melihat panggilan fungsi yang menggunakan persentase tertinggi CPU dalam tampilan pohon panggilan.

Struktur pohon panggilan

Cuplikan layar yang memperlihatkan Struktur pohon panggilan.

Cuplikan layar yang memperlihatkan Struktur pohon panggilan.

Gambar Deskripsi
Langkah 1 Node tingkat atas di pohon panggilan Penggunaan CPU adalah pseudo-node.
Langkah 2 Di sebagian besar aplikasi, saat opsi Tampilkan Kode Eksternal dinonaktifkan, node tingkat kedua adalah node [Kode Eksternal ]. Node berisi sistem dan kode kerangka kerja yang memulai dan menghentikan aplikasi, menggambar UI, mengontrol penjadwalan utas, dan menyediakan layanan tingkat rendah lainnya ke aplikasi.
Langkah 3 Elemen turunan dari node tingkat kedua adalah metode kode pengguna dan rutinitas asinkron yang dipanggil atau dibuat oleh sistem tingkat kedua dan kode kerangka kerja.
Langkah 4 Node turunan dari suatu metode hanya memiliki data untuk pemanggilan metode induk. Saat Tampilkan Kode Eksternal dinonaktifkan, metode aplikasi juga dapat berisi node [Kode Eksternal].

Kode eksternal

Fungsi sistem dan kerangka kerja yang dijalankan oleh kode Anda disebut kode eksternal. Fungsi kode eksternal memulai dan menghentikan aplikasi, menggambar UI, mengontrol utas, dan menyediakan layanan tingkat rendah lainnya ke aplikasi. Dalam kebanyakan kasus, Anda tidak tertarik dengan kode eksternal, sehingga pohon panggilan Penggunaan CPU mengumpulkan fungsi eksternal dari metode pengguna ke dalam satu node [Kode Eksternal].

Untuk melihat jalur panggilan kode eksternal, alihkan tampilan saat ini ke tampilan Pohon Panggilan atau klik kanan dan pilih Tampilkan di Pohon Panggilan.

Cuplikan layar yang memperlihatkan Perlihatkan di Pohon Panggilan.

Untuk menampilkan jalur panggilan kode eksternal, pada halaman laporan diagnostik utama (panel kanan), pilih Tampilkan Kode Eksternal dari menu dropdown Filter, lalu pilih Terapkan. Tampilan Pohon Panggilan dari halaman Penggunaan CPU lalu memperluas panggilan kode eksternal. (Menu drop-down Filter tersedia di halaman diagnostik utama, bukan tampilan terperinci.)

Cuplikan layar yang memperlihatkan Perlihatkan Kode Eksternal.

Banyak rantai panggilan kode eksternal disarangkan secara mendalam, sehingga lebar rantai dapat melebihi lebar tampilan kolom Nama Fungsi. Nama-nama fungsi kemudian muncul seperti yang ditunjukkan pada gambar berikut.

Cuplikan layar yang memperlihatkan kode eksternal berlapis di pohon panggilan.

Banyak rantai panggilan kode eksternal disarangkan secara mendalam, sehingga lebar rantai dapat melebihi lebar tampilan kolom Nama Fungsi. Nama fungsi kemudian muncul sebagai ....

Cuplikan layar yang memperlihatkan kode eksternal berlapis di pohon panggilan.

Untuk menemukan nama fungsi yang Anda cari, gunakan kotak pencarian. Arahkan kursor ke garis yang dipilih atau gunakan bilah gulir horizontal untuk melihat data.

Cuplikan layar yang memperlihatkan Cari kode eksternal berlapis.

Cuplikan layar yang memperlihatkan Cari kode eksternal berlapis.

Fungsi asinkron di pohon panggilan penggunaan CPU

Ketika menemukan metode asinkron, kompilator membuat kelas tersembunyi untuk mengontrol eksekusi metode. Secara konseptual, kelasnya adalah mesin status. Kelas ini memiliki fungsi yang dihasilkan kompilator yang secara asinkron memanggil metode asli, dan panggilan balik, penjadwal, dan iterator yang diperlukan untuk menjalankannya. Ketika metode induk memanggil metode asli, kompilator menghapus metode dari konteks eksekusi induk, dan menjalankan metode kelas tersembunyi dalam konteks sistem dan kode kerangka kerja yang mengontrol eksekusi aplikasi. Metode asinkron sering kali, tetapi tidak selalu, dijalankan pada satu atau beberapa utas yang berbeda. Kode ini muncul di pohon panggilan Penggunaan CPU sebagai turunan dari node [Kode Eksternal] tepat di bawah node atas pohon.

Dalam contoh berikut, dua node pertama di bawah [Kode Eksternal] adalah metode yang dihasilkan kompilator dari kelas komputer status. Node ketiga adalah panggilan ke metode asli.

Cuplikan layar yang memperlihatkan simpul Asinkron.

Perluas metode yang dihasilkan untuk menunjukkan apa yang terjadi:

Cuplikan layar yang memperlihatkan simpul asinkron yang diperluas.

Cuplikan layar yang memperlihatkan simpul asinkron yang diperluas.

  • MainPage::GetMaxNumberAsyncButton_Click hanya mengelola daftar nilai tugas, menghitung hasil maksimum, dan menampilkan output.

  • MainPage+<GetMaxNumberAsyncButton_Click>d__3::MoveNext menunjukkan aktivitas yang diperlukan untuk menjadwalkan dan meluncurkan 48 tugas yang membungkus panggilan ke GetNumberAsync.

  • MainPage::<GetNumberAsync>b__b menunjukkan aktivitas tugas yang memanggil GetNumber.

Mengumpulkan jumlah panggilan (.NET)

Jika Anda ingin melihat jumlah panggilan dalam tampilan Functions, Anda dapat mengaktifkan pengaturan sebelum memulai profiler. Pengaturan ini didukung untuk jenis proyek .NET dan memerlukan peluncuran proses di bawah profiler. Skenario lampirkan tidak didukung.

  1. Pilih ikon Pengaturan untuk Penggunaan CPU di Profiler Performa.

    Cuplikan layar yang memperlihatkan ikon pengaturan untuk Penggunaan CPU.

  2. Aktifkan opsi Kumpulkan jumlah panggilan (hanya.NET).

    Cuplikan layar yang memperlihatkan pengaturan untuk Penggunaan CPU.

  3. Mengumpulkan data penggunaan CPU.

  4. Buka tampilan Fungsi, lalu pastikan kolom Jumlah panggilan diatur ke terlihat.

    Jika Anda tidak melihat kolom, klik kanan judul kolom untuk memilih kolom yang terlihat.

    Cuplikan layar yang memperlihatkan data jumlah panggilan.