Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Cara yang baik untuk mulai menyelidiki masalah performa di aplikasi Anda adalah dengan memahami pemanfaatan CPU-nya menggunakan profiler CPU. Alat performa Penggunaan CPU Visual Studio menunjukkan waktu komputasi aktif CPU dan persentase yang dihabiskan untuk menjalankan kode dalam C++, C#/Visual Basic.
Alat Penggunaan CPU dapat membantu Anda:
Mendiagnosis kinerja lambat atau proses yang terhenti dalam basis kode tim Anda. Alat ini dapat membantu Anda mendiagnosis masalah dengan kode produksi tim Anda. Ini memberikan wawasan otomatis dan berbagai tampilan data Anda sehingga Anda dapat menganalisis dan mendiagnosis masalah performa.
Mengidentifikasi masalah performa dalam skenario DevOps Misalnya, alat ini dapat membantu ketika pelanggan melaporkan bahwa beberapa permintaan atau pesanan tidak masuk ke situs web ritel selama musim sibuk. Seringkali, masalahnya sedang dalam produksi, dan sulit untuk men-debug pada saat itu, tetapi alat ini dapat membantu Anda menangkap 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 Anda sehingga Anda dapat mengambil langkah-langkah berikutnya untuk memperbaiki masalah.
Periksa pemanfaatan CPU yang tinggi 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 sangat membantu untuk sesi pelacakan lokal dan produksi. Anda dapat menjalankan alat Penggunaan CPU dengan menggunakan pintasan keyboard, Alt+F2, lalu memilih Penggunaan CPU, atau dengan membuka rekaman yang sudah dikumpulkan menggunakan alat seperti dotnet-trace atau dotnet-monitor. (Untuk kode produksi .NET, ini kemungkinan besar adalah cara Anda akan mengumpulkan pelacakan.)
Anda dapat menjalankan alat Penggunaan CPU pada proyek Visual Studio yang terbuka, pada aplikasi Microsoft Store yang diinstal, atau dilampirkan ke aplikasi atau proses yang sedang berjalan. Anda dapat menjalankan alat Penggunaan CPU pada build rilis atau debug. Untuk informasi selengkapnya, lihat Menjalankan alat pembuatan profil pada build rilis atau debug.
Instruksi berikut menunjukkan cara menggunakan alat Penggunaan CPU tanpa debugger, menggunakan Visual Studio Performance Profiler. Contohnya menggunakan build Rilis pada komputer lokal. Build rilis memberikan tampilan terbaik dari performa sebenarnya dari aplikasi. Untuk tutorial yang menunjukkan cara meningkatkan performa menggunakan alat "Penggunaan CPU," lihat Studi Kasus: 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 Jauh.
Mengumpulkan data pemanfaatan CPU
Di proyek Visual Studio, atur konfigurasi solusi ke Rilis dan pilih target penyebaran.
Target penyebaran biasanya cocok dengan nama proyek, yang menunjukkan penyebaran lokal.
Pilih Debug>Performance Profiler.
Di bawah Alat yang tersedia, pilih Penggunaan CPU, lalu pilih Mulai.
Jika Anda mengaktifkan opsi Mulai dengan pengumpulan dijeda sebelum memulai profiler, data tidak akan dikumpulkan hingga Anda memilih tombol Record dalam tampilan sesi diagnostik.
Nota
Untuk beberapa jenis proyek, seperti CMake, Anda harus mengatur target startup ke Executable. Untuk informasi selengkapnya, lihat Alat mana yang didukung untuk proyek saya?. Untuk informasi selengkapnya tentang cara membuat alat lebih efisien, lihat Mengoptimalkan pengaturan Profiler.
Setelah aplikasi dimulai, sesi diagnostik dimulai dan menampilkan data pemanfaatan CPU. Setelah selesai mengumpulkan data, pilih Hentikan Koleksi.
pengumpulan data Penggunaan CPUAlat 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.
Gunakan menu dropdown Filter untuk memilih atau membatalkan pilihan utas yang akan ditampilkan, dan gunakan kotak Pencarian untuk mencari utas atau simpul tertentu.
Kolom data pemanfaatan CPU
| Nama | Deskripsi |
|---|---|
| Total CPU [unit, %] |
Milidetik waktu komputasi CPU dan persentase CPU yang digunakan oleh panggilan ke fungsi dan fungsi yang dipanggilnya 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, %] |
Milidetik waktu komputasi CPU dan persentase 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 informasi CPU
Jika ada wawasan yang muncul di bagian Top Insights, gunakan tautan yang disediakan untuk mendapatkan informasi lebih lanjut tentang masalah yang teridentifikasi. Selain itu, jika Anda menggunakan Copilot, tombol Ask Copilot akan membuka jendela obrolan Copilot, dan Copilot akan memberikan saran berdasarkan kode Anda dan masalah yang diidentifikasi.
Untuk informasi selengkapnya, lihat wawasan CPU.
Menganalisis pemanfaatan CPU
Untuk analisis mendalam dari laporan Penggunaan CPU, pertama-tama buka salah satu tampilan laporan terperinci:
Klik Buka detail di halaman ringkasan laporan, atau pilih salah satu fungsi teratas untuk membuka tampilan Fungsi .
Dari daftar Tampilan Saat Ini , Anda bisa memilih salah satu tampilan laporan terperinci.
Tabel berikut ini menyediakan deskripsi tampilan terperinci.
| Tampilkan | Deskripsi |
|---|---|
| Penelepon/penerima panggilan | Tampilan terperinci waktu CPU untuk fungsi tertentu, fungsi yang memanggilnya, dan fungsi yang dipanggilnya. Data performa dikumpulkan untuk periode pengumpulan data. Anda dapat memilih fungsi panggilan dan memanggil fungsi untuk melintasi jalur panggilan. |
| Pohon panggilan | Tampilan hierarkis jalur panggilan fungsi. Digunakan untuk mengidentifikasi jalur panggilan yang membutuhkan waktu CPU terbanyak (jalur panas). |
| Modul | Tampilan waktu CPU yang dihabiskan dalam modul individual, dikumpulkan selama periode pengumpulan data. Digunakan untuk mengidentifikasi modul yang mungkin menjadi hambatan performa karena kombinasi jumlah panggilan tinggi dan/atau masalah performa. |
| Functions | Tampilan waktu CPU yang dihabiskan dalam fungsi individual, dikumpulkan selama periode pengumpulan data. Digunakan untuk mengidentifikasi fungsi yang mungkin menjadi hambatan performa karena kombinasi jumlah panggilan tinggi dan/atau masalah performa. |
| Grafik Api | Tampilan hierarkis jalur panggilan fungsi dalam visualisasi grafik api. Digunakan untuk mengidentifikasi jalur panggilan yang membutuhkan waktu CPU terbanyak (jalur panas). |
Dalam semua tampilan kecuali Penelepon/penerima panggilan, laporan diagnostik diurutkan menurut Total CPU, dari tertinggi hingga terendah. Ubah urutan atau kolom pengurutan dengan memilih judul kolom. Anda dapat mengeklik dua kali pada fungsi yang Anda minati, dan Anda akan melihat kode sumber fungsi tersebut serta sorotan 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 seberapa banyak data yang ditampilkan oleh metode tersebut untuk mengetahui apakah kode pihak ketiga atau pustaka runtime menyebabkan titik akhir Anda menjadi lambat atau banyak mengonsumsi sumber daya.
Untuk informasi selengkapnya tentang menggunakan grafik Api, lihat Mengidentifikasi jalur panas dengan Flame Graph.
Pohon panggilan Penggunaan CPU
Untuk melihat pohon panggilan, pilih simpul induk dalam laporan. Secara bawaan, halaman Penggunaan CPU terbuka ke tampilan Pemanggil/Penerima Panggilan. Di menu dropdown Tampilan Saat Ini, pilih Pohon Panggilan.
Anda dapat mengklik tombol Perluas Hot Path dan Tampilkan Hot Path untuk melihat panggilan fungsi yang menggunakan persentase tertinggi CPU dalam tampilan pohon panggilan.
Struktur pohon panggilan
| Gambar | Deskripsi |
|---|---|
|
Simpul tingkat atas dalam pohon panggilan Penggunaan CPU, mewakili aplikasi. |
|
Di sebagian besar aplikasi, saat opsi Tampilkan Kode Eksternal dinonaktifkan, simpul tingkat kedua adalah simpul [Kode Eksternal]. Simpul berisi sistem dan kode kerangka kerja yang memulai dan menghentikan aplikasi, menampilkan UI, mengontrol penjadwalan utas, dan menyediakan layanan tingkat rendah lainnya untuk aplikasi. |
|
Anak-anak simpul tingkat kedua adalah metode kode pengguna dan rutinitas asinkron yang dipanggil atau dibuat oleh sistem tingkat kedua dan kode kerangka kerja. |
|
Simpul anak dari suatu metode hanya memiliki data untuk panggilan dari metode induknya. Saat Tampilkan Kode Eksternal dinonaktifkan, metode aplikasi juga dapat berisi node [Kode Eksternal]. |
Untuk bantuan memahami data tak terduga di pohon panggilan, lihat Memahami pohon panggilan.
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 menggabungkan fungsi eksternal dari suatu metode pengguna menjadi satu simpul [Panggilan Eksternal].
Untuk melihat jalur panggilan kode eksternal, pada halaman ringkasan laporan utama (panel kanan), batalkan pilihan Perlihatkan Hanya Kode Saya dari menu dropdown Pengaturan, lalu pilih Terapkan. (Dropdown Pengaturan tersedia di halaman ringkasan laporan utama, bukan di halaman tampilan terperinci.)
Saat Anda menonaktifkan Tampilkan Hanya Kode Saya, tampilan Pohon Panggilan pada halaman Penggunaan CPU akan memperluas panggilan kode eksternal.
Banyak rantai panggilan kode eksternal disarangkan secara mendalam, sehingga lebar rantai dapat melebihi lebar tampilan kolom Nama Fungsi. Nama fungsi kemudian muncul seperti yang ditunjukkan pada gambar berikut.
Untuk menemukan nama fungsi yang Anda cari, gunakan kotak pencarian. Arahkan mouse ke atas baris yang dipilih atau gunakan bilah gulir horizontal untuk melihat data.
Fungsi asinkron di pohon panggilan penggunaan CPU
Ketika kompilator menemukan metode asinkron, ia 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, pengkompilasi 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 [Kode Eksternal] simpul tepat di bawah simpul atas pohon.
Perluas metode yang dihasilkan untuk menunjukkan apa yang terjadi:
simpul asinkron yang diperluas
Menganalisis kinerja banyak proses
Mulai visual Studio 2022 versi 17.13, Anda dapat menganalisis data multiproses di alat Penggunaan CPU. Ini memudahkan penganalisis performa untuk aplikasi multiproses seperti .NET Aspire. Fitur ini memungkinkan Anda membedakan dan menganalisis pemanfaatan CPU di seluruh proses dalam satu sesi, yang memberikan wawasan yang lebih jelas tentang konsumsi sumber daya.
Anda perlu mengumpulkan data multiproses sebelum dapat menganalisisnya. Untuk mengumpulkan data, pilih Kumpulkan data dari beberapa proses untuk alat Penggunaan CPU di Profiler Performa.
Grafik garis waktu yang menunjukkan penggunaan CPU aplikasi Anda menampilkan data performa dengan pengkodian warna yang berbeda untuk setiap proses. Grafik ditampilkan sebagai bagan area bertumpuk.
Anda dapat memfilter proses menggunakan dropdown di kiri atas grafik garis waktu CPU. Saat Anda memilih atau membatalkan pilihan proses, halaman ringkasan profiler dan laporan terperinci diperbarui berdasarkan pilihan baru, memungkinkan analisis yang lebih tepat.
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.
Pilih ikon Pengaturan untuk Penggunaan CPU di Profiler Performa.
Aktifkan opsi Kumpulkan jumlah panggilan (.NET saja).
Mengumpulkan data penggunaan CPU.
Buka tampilan fungsi, lalu pastikan kolom jumlah panggilan ditampilkan.
Jika Anda tidak melihat kolom, klik kanan judul kolom untuk memilih kolom yang terlihat.