Menggunakan Fungsi Registri untuk Mengonsumsi Data Penghitung
Gunakan fungsi registri untuk mengumpulkan data performa dari kunci registri khusus HKEY_PERFORMANCE_DATA
.
Data performa sebenarnya tidak disimpan dalam registri. Memanggil fungsi registri menyebabkan sistem mengumpulkan data dari penyedia data performa yang sesuai.
Catatan
Anda biasanya tidak boleh menggunakan fungsi registri untuk mengonsumsi data penghitung. Sebagai gantinya, Anda harus menggunakan fungsi Performance Data Helper (PDH). Fungsi PDH lebih mudah digunakan dan menghindari banyak masalah performa dan keandalan yang dapat terjadi melalui penggunaan fungsi registri yang salah.
Catatan
Anda tidak dapat menggunakan fungsi registri jika Anda menulis aplikasi Windows OneCore. Sebagai gantinya, gunakan fungsi Konsumen PerfLib V2.
Fungsi registri adalah API tingkat rendah untuk mengumpulkan data dari penyedia V1. Fungsi registri juga mendukung pengumpulan data dari penyedia V2 melalui lapisan terjemahan yang memanggil ke fungsi Konsumen V2.
Untuk mendapatkan data performa dari sistem lokal, panggil fungsi RegQueryValueEx . Gunakan HKEY_PERFORMANCE_DATA
sebagai kunci. Panggilan pertama membuka kunci. Anda tidak perlu membuka kunci secara eksplisit terlebih dahulu.
Untuk mendapatkan data performa dari sistem jarak jauh, panggil fungsi RegConnectRegistry . Gunakan nama komputer sistem jarak jauh dan gunakan HKEY_PERFORMANCE_DATA
sebagai kunci. Panggilan ini mengambil kunci yang mewakili data performa untuk sistem jarak jauh. Gunakan kunci ini daripada HKEY_PERFORMANCE_DATA
kunci untuk mengambil data.
Pastikan untuk menggunakan fungsi RegCloseKey untuk menutup handel ke kunci ketika Anda selesai mendapatkan data performa. Ini penting untuk kasus lokal dan jarak jauh:
RegCloseKey(HKEY_PERFORMANCE_DATA)
tidak benar-benar menutup handel registri, tetapi menghapus semua data yang di-cache dan membebaskan DLL performa yang dimuat.RegCloseKey(hkeyRemotePerformanceData)
menutup handel ke registri komputer jarak jauh.
Penting
Jangan panggil RegCloseKey(HKEY_PERFORMANCE_DATA)
selama DLL_PROCESS_DETACH
.
Anda menggunakan lpValueName
parameter fungsi RegQueryValueEx untuk menunjukkan informasi yang akan diambil. Tabel berikut ini mencantumkan nilai yang bisa Anda tentukan untuk lpValueName
. Perhatikan bahwa string nilai tidak peka huruf besar/kecil.
Nilai | Deskripsi |
---|---|
Global |
Mengambil data performa untuk semua objek performa yang terdaftar di komputer kecuali yang disertakan dalam Costly kategori. |
OLD_Global |
Windows Vista dan yang lebih baru: Mengambil data performa untuk semua objek performa V1 yang terdaftar di komputer kecuali untuk yang disertakan Costly dalam kategori. Gunakan ini alih-alih Global untuk menghindari pengumpulan data penyedia V2 yang tidak perlu ketika Anda tahu bahwa data yang menarik berasal dari penyedia V1. |
n1 n2 ... |
Mengambil data performa untuk satu atau beberapa objek performa. Tentukan indeks desimal yang terkait dengan setiap objek yang ingin Anda ambil dalam daftar yang dipisahkan spasi. Misalnya, jika Anda ingin mengambil objek Sistem dan Memori dan Anda telah menentukan bahwa indeks string nama yang sesuai adalah 2 dan 4, tentukan string "2 4" . Perhatikan bahwa kueri dapat mengembalikan jumlah objek yang berbeda dari yang Anda minta. Ini dapat terjadi jika objek yang ditentukan tidak tersedia, jika objek yang ditentukan tergantung pada jenis objek lain, atau jika penyedia mengembalikan data yang tidak diminta secara langsung. Misalnya, utas bergantung pada proses, jadi jika Anda meminta data dari Thread objek, hasilnya akan menyertakan data dari Process objek. |
Counter n |
Mengambil string nama untuk pengidentifikasi bahasa yang ditentukan, misalnya bahasa Inggris untuk Counter 9 . Gunakan string nama yang dikembalikan untuk menemukan indeks yang sesuai dengan nama tertentu atau untuk menemukan nama yang sesuai dengan indeks tertentu. Lihat Mengambil Nama Penghitung dan Teks Bantuan untuk detailnya. Perhatikan bahwa daftar yang dikembalikan mencakup nama objek (counterset) dan nama penghitung -- tidak ada cara sederhana untuk menentukan apakah nama adalah nama objek atau nama penghitung. |
Help n |
Mengambil string bantuan untuk pengidentifikasi bahasa yang ditentukan, misalnya bahasa Inggris untuk Help 9 . Gunakan string bantuan yang dikembalikan untuk menemukan deskripsi yang sesuai dengan indeks bantuan objek (counterset) atau penghitung. Lihat Mengambil Nama Penghitung dan Teks Bantuan untuk detailnya. |
Costly |
Usang: Mengambil data performa untuk jenis objek yang datanya mahal untuk dikumpulkan dalam hal waktu prosesor atau penggunaan memori. Koleksi ini mungkin memakan waktu beberapa menit pada mesin yang sangat dimuat. Anda harus melakukan pengumpulan pada utas pekerja jika aplikasi Anda perlu merespons pengguna selama pengumpulan data ini. |
MetadataGlobal |
Windows 10 20H1 dan yang lebih baru: Mengambil metadata untuk semua objek performa yang terdaftar di komputer kecuali untuk yang disertakan dalam Costly kategori. |
OLD_MetadataGlobal |
Windows 10 20H1 dan yang lebih baru: Mengambil metadata untuk semua objek performa V1 yang terdaftar di komputer kecuali untuk yang disertakan dalam Costly kategori. |
MetadataCostly |
Windows 10 20H1 dan yang lebih baru: Mengambil metadata untuk objek performa yang mahal. |
OLD_MetadataCostly |
Windows 10 20H1 dan yang lebih baru: Mengambil metadata untuk objek performa V1 yang mahal. |
Untuk detail tentang format data performa yang dikembalikan registri, lihat Format Data Performa.
Untuk contoh yang mendapatkan nama dan deskripsi penghitung terdaftar di komputer, lihat Mengambil Nama Penghitung dan Teks Bantuan.
Untuk contoh yang mengakses komponen data performa, lihat Menampilkan Nama Objek, Instans, dan Penghitung.
Untuk contoh yang mengambil, menghitung, dan mencetak nilai penghitung, lihat Mengambil Data Penghitung dan Menghitung Nilai Penghitung.
Koleksi Metadata
Windows 10 20H1 menambahkan dukungan untuk operasi pengumpulan khusus metadata. Operasi ini ditujukan untuk digunakan saat membuat daftar objek performa dan penghitung yang tersedia di komputer.
- Koleksi khusus metadata dapat lebih cepat daripada pengumpulan data lengkap yang sesuai karena dapat melewati pengumpulan data instans dari objek yang mendukung pengumpulan khusus metadata.
- Koleksi khusus metadata menggunakan lebih sedikit memori daripada pengumpulan data penuh yang sesuai karena tidak memerlukan ruang untuk mengembalikan data instans dari objek yang mendukung pengumpulan khusus metadata.
- Koleksi khusus metadata lebih lengkap daripada pengumpulan data lengkap yang sesuai karena mengembalikan daftar penghitung yang tersedia meskipun tidak ada instans objek yang mendukung pengumpulan khusus metadata.
Tip
Penggunaan pengumpulan khusus metadata yang sesuai sangat penting saat mengumpulkan data dari server dengan banyak proses atau utas. Koleksi normal Global
harus mengumpulkan dan mengembalikan informasi tentang setiap proses dan utas pada sistem, sementara MetadataGlobal
koleksi tidak perlu mengumpulkan informasi proses atau utas.
Fungsi Performance Data Helper (PDH) secara otomatis menggunakan koleksi khusus metadata saat menentukan kumpulan objek performa yang tersedia di komputer.
Dukungan sistem operasi untuk operasi khusus metadata ditunjukkan oleh nilai bukan nol dalam HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\Supports Metadata
nilai registri. Jika nilai ini tidak ada atau diatur ke 0
, gunakan pengumpulan data lengkap (misalnya Global
) alih-alih koleksi khusus metadata (misalnya MetadataGlobal
).
Tidak semua objek performa mendukung koleksi khusus metadata. Ketika Anda meminta MetadataGlobal
koleksi, Windows akan memeriksa setiap objek performa untuk dukungan khusus metadata (ditunjukkan oleh nilai bukan nol dalam HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>\Performance\Collect Supports Metadata
nilai registri). Jika objek performa tidak mendukung pengumpulan khusus metadata, Windows akan melakukan pengumpulan data normal dari objek . Jika objek performa mendukung koleksi khusus metadata, Windows akan melakukan koleksi khusus metadata dari objek. Data yang dikembalikan kepada Anda untuk kueri khusus metadata kemudian akan berisi PERF_OBJECT_TYPE
blok dari kumpulan data lengkap dan metadata saja. PERF_OBJECT_TYPE
Blok mungkin berisi atau menghilangkan informasi instans, tergantung pada apakah blok dikumpulkan dari penyedia yang tidak atau tidak mendukung kueri khusus metadata.
Data yang dikembalikan dari koleksi khusus metadata sama dengan data dari koleksi normal kecuali:
- Bidang
NumInstances
PERF_OBJECT_TYPE
struktur akan berupaPERF_METADATA_MULTIPLE_INSTANCES
(menunjukkan bahwa objek mendukung 0 atau lebih instans bernama) atauPERF_METADATA_NO_INSTANCES
(menunjukkan bahwa objek selalu memiliki 1 instans yang tidak disebutkan namanya). - Tidak akan ada
PERF_INSTANCE_DEFINITION
blok setelahPERF_OBJECT_TYPE
struct.
Perflib
Kunci HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
registri mendukung beberapa DWORD
nilai yang terkait dengan pengumpulan penghitung kinerja.
Ini biasanya harus tidak diatur untuk perilaku default, tetapi dapat dikonfigurasi oleh administrator sesuai kebutuhan untuk skenario tertentu.
Configuration Flags
: Defaultnya adalah 0. Dapat diatur ke kombinasi bendera berikut untuk mengaktifkan perilaku khusus:0x01
: Jangan menguji plugin untuk kesalahan penyelarasan buffer data. Secara default, sistem memvalidasi penyelarasan buffer plugin.0x02
: Jangan secara otomatis menonaktifkan plugin. Secara default, sistem menonaktifkan plugin yang crash atau menunjukkan perilaku yang salah.0x04
: Jangan validasi integritas buffer plugin. Secara default, sistem memeriksa overrun buffer plugin.0x08
: Jangan periksa batas waktu plugin. Secara default, sistem memeriksa plugin macet.
Disable Performance Counters
: Defaultnya adalah 0. Jika diatur ke 1, pengumpulan penghitung kinerja V1 akan dinonaktifkan untuk sistem.ExtCounterTestLevel
: Defaultnya adalah 4. Mengontrol berapa banyak validasi yang dilakukan sistem untuk melindungi dari perilaku plugin yang salah. LihatPM_COLLECT_PROC
untuk detailnya.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk