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.
Artikel ini menjelaskan metrik bawaan untuk pustaka runtime .NET yang diproduksi menggunakan System.Diagnostics.Metrics API. Untuk daftar metrik berdasarkan API EventCounters yang lebih lama, lihat Penghitung yang tersedia.
Tip
Untuk informasi selengkapnya tentang cara mengumpulkan dan melaporkan metrik ini, lihat Mengumpulkan metrik.
System.Runtime
Meter System.Runtime melaporkan pengukuran dari bagian GC, JIT, AssemblyLoader, Threadpool, dan penanganan pengecualian dari runtime .NET serta beberapa metrik CPU dan memori dari OS. Metrik ini tersedia secara otomatis untuk semua aplikasi .NET.
Metrik: dotnet.process.cpu.time
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.process.cpu.time |
Counter<T> | s |
Waktu CPU yang digunakan oleh proses. |
| Atribut | Tipe | Deskripsi | Contoh | Kehadiran |
|---|---|---|---|---|
cpu.mode |
string |
The mode of the CPU. |
user; system |
Selalu |
Metrik ini melaporkan nilai yang sama dengan mengakses properti System.Diagnostics.Process waktu prosesor untuk proses saat ini.
system Mode sesuai dengan PrivilegedProcessorTime dan user mode sesuai denganUserProcessorTime
Tersedia mulai dari: .NET 9.
Metrik: dotnet.process.memory.working_set
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.process.memory.working_set |
UpDownCounter<T> | By |
Jumlah byte memori fisik yang dipetakan ke konteks proses. |
Metrik ini melaporkan nilai yang sama dengan properti panggilan Environment.WorkingSet .
Tersedia mulai dari: .NET 9.
Metrik: dotnet.gc.collections
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.gc.collections |
Counter<T> | {collection} |
Jumlah pengumpulan sampah yang terjadi sejak proses dimulai. |
| Atribut | Tipe | Deskripsi | Contoh | Kehadiran |
|---|---|---|---|---|
gc.heap.generation |
string |
Nama pembuatan timbunan terkelola maksimum yang dikumpulkan. |
gen0; gen1; gen2 |
Selalu |
.NET GC adalah pengumpul sampah generasi. Setiap kali pengumpul sampah berjalan, ia menggunakan heuristik untuk memilih generasi maksimum dan kemudian mengumpulkan objek dalam semua generasi hingga maksimum yang dipilih. Misalnya, gen1 koleksi mengumpulkan semua objek dalam generasi 0 dan 1. Koleksi gen2 mengumpulkan semua objek dalam generasi 0, 1, dan 2. Untuk informasi selengkapnya tentang .NET GC dan pengumpulan sampah generasi, lihat panduan pengumpulan sampah .NET.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.gc.heap.total_allocated
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.gc.heap.total_allocated |
Counter<T> | By |
Perkiraan jumlah byte yang dialokasikan pada tumpukan GC terkelola sejak proses dimulai. Nilai yang dikembalikan tidak menyertakan alokasi asli apa pun. |
Metrik ini melaporkan nilai yang sama dengan memanggil GC.GetTotalAllocatedBytes. Untuk informasi selengkapnya tentang .NET GC, lihat panduan pengumpulan sampah .NET.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.gc.last_collection.memory.committed_size
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.gc.last_collection.memory.committed_size |
UpDownCounter<T> | By |
Jumlah memori virtual yang diterapkan yang digunakan oleh .NET GC, seperti yang diamati selama pengumpulan sampah terbaru. |
Metrik ini melaporkan nilai yang sama dengan memanggil GCMemoryInfo.TotalCommittedBytes. Memori virtual yang diterapkan mungkin lebih besar dari ukuran timbunan karena mencakup kedua memori untuk menyimpan objek yang ada (ukuran timbunan) dan beberapa memori tambahan yang siap untuk menangani objek yang baru dialokasikan di masa mendatang. Untuk informasi selengkapnya tentang .NET GC, lihat panduan pengumpulan sampah .NET.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.gc.last_collection.heap.size
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.gc.last_collection.heap.size |
UpDownCounter<T> | By |
Ukuran tumpukan GC terkelola (termasuk fragmentasi), seperti yang diamati selama pengumpulan sampah terbaru. |
| Atribut | Tipe | Deskripsi | Contoh | Kehadiran |
|---|---|---|---|---|
gc.heap.generation |
string |
Nama pengumpul sampah yang dikelola pembuatan tumpukan. |
gen0; gen1; ; gen2loh; poh |
Selalu |
GC .NET membagi tumpukan menjadi beberapa generasi. Selain generasi bernomor standar, GC juga menempatkan beberapa objek ke dalam dua generasi khusus:
- Tumpukan objek besar (LOH) menyimpan objek .NET yang sangat besar dibandingkan dengan objek umum.
- Timbunan objek yang disematkan (POH) menyimpan objek yang dialokasikan menggunakan GC.AllocateArray API saat
pinnedparameter benar.
Kedua generasi khusus ini dikumpulkan selama gen2 koleksi GC. Untuk informasi selengkapnya tentang .NET GC, lihat panduan pengumpulan Sampah .NET.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.gc.last_collection.heap.fragmentation.size
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.gc.last_collection.heap.fragmentation.size |
UpDownCounter<T> | By |
Fragmentasi tumpukan, seperti yang diamati selama pengumpulan sampah terbaru. |
| Atribut | Tipe | Deskripsi | Contoh | Kehadiran |
|---|---|---|---|---|
gc.heap.generation |
string |
Nama pengumpul sampah yang dikelola pembuatan tumpukan. |
gen0; gen1; ; gen2loh; poh |
Selalu |
Metrik ini melaporkan nilai yang sama dengan memanggil GCGenerationInfo.FragmentationAfterBytes.
Ketika objek .NET dialokasikan, awalnya objek cenderung ditata secara berdekatan dalam memori. Namun, jika beberapa objek tersebut kemudian dikumpulkan oleh GC, ini menciptakan celah memori yang tidak digunakan antara objek langsung yang tersisa. Celah ini mewakili bagian dari tumpukan GC yang saat ini tidak digunakan untuk menyimpan objek, sering disebut "fragmentasi." GC dapat menggunakan kembali byte fragmentasi di masa depan untuk alokasi objek baru jika ukuran objek cukup kecil agar pas di salah satu celah. GC juga dapat melakukan pengumpulan sampah khusus yang menggerakkan objek langsung yang tersisa di samping satu sama lain selama objek belum disematkan di tempat.
Untuk informasi selengkapnya tentang cara kerja .NET GC, menganalisis performa GC, dan peran apa yang dimainkan fragmentasi peran, lihat analisis performa memori .NET.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.gc.pause.time
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.gc.pause.time |
Counter<T> | s |
Jumlah total waktu yang dijeda di GC sejak proses dimulai. |
Metrik ini melaporkan nilai yang sama dengan memanggil GC.GetTotalPauseDuration().
Setiap kali .NET GC melakukan koleksi yang diperlukan untuk menjeda semua utas yang menjalankan kode terkelola secara singkat untuk menentukan objek mana yang masih dirujuk. Metrik ini melaporkan jumlah semua waktu jeda ini sejak proses dimulai. Anda dapat menggunakan metrik ini untuk menentukan sebagian kecil dari utas waktu yang dihabiskan dijeda untuk GC versus waktu mereka dapat menjalankan kode terkelola.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.jit.compiled_il.size
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.jit.compiled_il.size |
Counter<T> | By |
Jumlah byte bahasa perantara yang telah dikompilasi sejak proses dimulai. |
Metrik ini melaporkan nilai yang sama dengan memanggil JitInfo.GetCompiledILBytes.
Saat Anda membuat aplikasi .NET, kode terkelola awalnya dikompilasi dari bahasa tingkat tinggi seperti C#, VB, atau F# ke dalam bahasa perantara (IL). Kemudian ketika program dijalankan, kompilator .NET just-in-time (JIT) mengonversi IL menjadi kode mesin.
Karena kompilasi JIT terjadi pertama kali metode berjalan, sebagian besar kompilasi JIT cenderung terjadi selama startup aplikasi. Mengurangi jumlah IL yang dikompilasi JIT dapat meningkatkan waktu startup aplikasi.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.jit.compiled_methods
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.jit.compiled_methods |
Counter<T> | {method} |
Berapa kali pengkompilasi JIT (re)metode yang dikompilasi sejak proses dimulai. |
Metrik ini melaporkan nilai yang sama dengan memanggil JitInfo.GetCompiledMethodCount.
Saat Anda membuat aplikasi .NET, kode terkelola awalnya dikompilasi dari bahasa tingkat tinggi seperti C#, VB, atau F# ke dalam bahasa perantara (IL). Kemudian ketika program dijalankan, kompilator .NET just-in-time (JIT) mengonversi IL menjadi kode mesin.
Karena kompilasi JIT terjadi pertama kali metode berjalan, sebagian besar kompilasi JIT cenderung terjadi selama startup aplikasi. Mengurangi jumlah metode yang perlu dikompilasi JIT dapat meningkatkan waktu startup aplikasi.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.jit.compilation.time
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.jit.compilation.time |
Counter<T> | s |
Jumlah waktu yang dihabiskan kompilator JIT untuk mengkompilasi metode sejak proses dimulai. |
Metrik ini melaporkan nilai yang sama dengan memanggil JitInfo.GetCompilationTime.
Saat Anda membuat aplikasi .NET, kode terkelola awalnya dikompilasi dari bahasa tingkat tinggi seperti C#, VB, atau F# ke dalam bahasa perantara (IL). Kemudian ketika program dijalankan, kompilator .NET just-in-time (JIT) mengonversi IL menjadi kode mesin.
Karena kompilasi JIT terjadi pertama kali metode berjalan, sebagian besar kompilasi JIT cenderung terjadi selama startup aplikasi. Mengurangi waktu yang dihabiskan untuk kompilasi JIT dapat meningkatkan waktu startup aplikasi.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.thread_pool.thread.count
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.thread_pool.thread.count |
UpDownCounter<T> | {thread} |
Jumlah utas kumpulan utas yang saat ini ada. |
Metrik ini melaporkan nilai yang sama dengan memanggil ThreadPool.ThreadCount.
.NET menggunakan kumpulan utas untuk menjadwalkan item kerja ke utas lain. Metrik ini menyediakan jumlah utas pekerja yang saat ini dikelola oleh kumpulan utas tersebut.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.thread_pool.work_item.count
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.thread_pool.work_item.count |
Counter<T> | {work_item} |
Jumlah item kerja yang telah diselesaikan kumpulan utas sejak proses dimulai. |
Metrik ini melaporkan nilai yang sama dengan memanggil ThreadPool.CompletedWorkItemCount.
.NET menggunakan kumpulan utas untuk menjadwalkan item kerja ke utas lain. Metrik ini menyediakan jumlah item kerja yang telah dijalankan oleh utas kumpulan utas.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.thread_pool.queue.length
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.thread_pool.queue.length |
UpDownCounter<T> | {work_item} |
Jumlah item kerja yang saat ini diantrekan untuk diproses oleh kumpulan utas. |
Metrik ini melaporkan nilai yang sama dengan memanggil ThreadPool.PendingWorkItemCount.
.NET menggunakan kumpulan utas untuk menjadwalkan item kerja ke utas lain. Metrik ini menyediakan jumlah item kerja yang saat ini diantrekan untuk dijalankan oleh salah satu utas kumpulan utas.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.monitor.lock_contentions
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.monitor.lock_contentions |
Counter<T> | {contention} |
Frekuensi terjadi ketidakcocokan saat mencoba memperoleh kunci monitor sejak proses dimulai. |
Metrik ini melaporkan nilai yang sama dengan memanggil Monitor.LockContentionCount.
.NET mendukung penggunaan objek terkelola apa pun sebagai kunci, baik dengan API seperti Monitor.Enter atau dengan pernyataan kunci. Jika satu utas sudah memegang kunci sementara utas kedua mencoba memperolehnya, ini disebut pertikaian kunci.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.timer.count
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.timer.count |
UpDownCounter<T> | {timer} |
Jumlah instans timer yang saat ini aktif. |
Metrik ini melaporkan nilai yang sama dengan memanggil Timer.ActiveCount.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.assembly.count
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.assembly.count |
UpDownCounter<T> | {assembly} |
Jumlah rakitan .NET yang saat ini dimuat. |
Metrik ini melaporkan nilai yang sama dengan panggilan AppDomain.GetAssemblies() lalu memeriksa panjang array yang dikembalikan.
Tersedia mulai dari: .NET 9.
Metrik: dotnet.exceptions
| Nama | Jenis Instrumen | Unit (UCUM) | Deskripsi |
|---|---|---|---|
dotnet.exceptions |
Counter<T> | {exception} |
Jumlah pengecualian yang telah dilemparkan dalam kode terkelola. |
| Atribut | Tipe | Deskripsi | Contoh | Kehadiran |
|---|---|---|---|---|
error.type |
string |
Jenis pengecualian yang dilemparkan. |
System.OperationCanceledException; Contoso.MyException |
Required |
Metrik ini melaporkan nilai yang sama dengan menghitung panggilan ke AppDomain.FirstChanceException peristiwa.
Tersedia mulai dari: .NET 9.