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.
Setelah membuat kueri dan menambahkan penghitung ke dalamnya, panggil fungsiPdhCollectQueryData untuk mengambil data mentah saat ini untuk semua penghitung dalam kueri.
Banyak penghitung, seperti penghitung tarif, memerlukan dua sampel data untuk menghitung nilai data yang diformat. PDH menyimpan data untuk sampel saat ini dan sampel yang dikumpulkan sebelumnya. Prosedur berikut menjelaskan cara mengumpulkan nilai penghitung yang memerlukan dua sampel untuk menghitung nilai yang dapat ditampilkan.
Untuk mengumpulkan nilai penghitung yang memerlukan dua sampel guna menghitung nilai yang dapat ditampilkan
- Panggil PdhCollectQueryData untuk mengumpulkan sampel pertama.
- Panggil fungsi Sleep untuk menunggu minimal satu detik di antara pengumpulan.
- PanggilPdhCollectQueryData lagi untuk mengumpulkan sampel kedua.
- Panggil fungsiPdhGetFormattedCounterValue untuk menghitung nilai yang dapat ditampilkan.
- Ulangi langkah 2 hingga 4.
Sebagai alternatif untuk menerapkan periode tunggu sendiri, Anda dapat memanggil fungsi PdhCollectQueryDataEx, yang membuat utas waktu yang menunggu jumlah waktu tertentu, mengumpulkan sampel, lalu memicu peristiwa yang ditentukan aplikasi.
Jika Anda ingin mengkueri data performa dari file log, Anda juga dapat menentukan rentang waktu. Rentang waktu membatasi kueri ke sampel yang dikumpulkan dalam rentang waktu (setiap sampel berisi stempel waktu saat dikumpulkan). Untuk informasi selengkapnya tentang cara mengatur dan mengambil rentang waktu, lihat Mengatur Rentang Waktu untuk Kueri.
Jika Anda ingin mengumpulkan data performa dan menulisnya ke file log, Anda akan memanggil fungsiPdhUpdateLog alih-alih memanggil PdhCollectQueryData. Untuk detailnya, lihat Bekerja dengan File Log dan Menulis Data Performa ke File Log.
Untuk detail tentang menghitung nilai sampel yang dapat ditampilkan, lihat Menampilkan Data Performa.
Memahami Beberapa Penghitung Prosesor
Beberapa penghitung kinerja dirancang untuk sistem prosesor tunggal dan mungkin tidak akurat untuk komputer multiprosesor. Misalnya, proses dibatasi hingga 100 persen dari satu prosesor; namun, utasnya dapat menggunakan beberapa prosesor, dengan total lebih dari 100 persen.
Nilai penghitung "\Processor(_Total)\% Processor Time" adalah penggunaan rata-rata semua prosesor. Misalnya, jika Anda memiliki dua prosesor, satu pada 100 persen dan satu lagi pada 0 persen, penghitung ini akan melaporkan 50 persen. Jadi rentangnya dari 0 sampai 100.
"\Process(X)\% Processor Time" (di mana X adalah nama proses), nilai penghitung adalah jumlah penggunaan prosesor oleh semua utas proses X. Misalnya, di komputer dengan dua prosesor, jika proses memiliki dua utas, satu mengambil 75 persen dari CPU dan yang lain mengambil 80 persen dari CPU lain, penghitung ini akan melaporkan 155 persen. Rentang untuk penghitung ini adalah dari 0 hingga 100 * ProcessorCount.
Saat menggunakan counterset Process, Anda dapat menerima nilai di luar rentang nilai yang diharapkan untuk penggunaan CPU. Untuk menghitung persentase penggunaan CPU, PDH memerlukan dua sampel (masing-masing dengan nilai mentah dan stempel waktu). Karena PDH hanya menggunakan nama instans untuk mencocokkan proses, terkadang dapat mencampur sampel dari proses yang berbeda. Misalnya, jika tiga proses dengan nama instans yang sama sedang diambil sampel dan salah satu proses dihentikan setelah sampel ketiga, proses lain akan berpindah ke slot yang dikosongkan oleh proses yang dihentikan tersebut. Akibatnya, penghitung yang diformat akan memberikan nilai yang salah saat Anda memformat sampel keempat karena menggunakan sampel ketiga dari proses yang dihentikan dan sampel keempat dari proses yang berpindah ke slot proses yang dihentikan.
Tabel berikut ini memperlihatkan bagaimana hal ini dapat terjadi jika proses dihentikan saat data sedang dikumpulkan. Tabel menunjukkan lima sampel nilai penghitung untuk tiga instans proses X. Sampel dikumpulkan dalam interval satu detik. Setelah sampel ketiga dikumpulkan, proses X di slot 1 dihentikan. Ketika proses X di slot 1 dihentikan, proses X di slot 2 berpindah ke slot 1. Ketika Anda mengumpulkan sampel keempat untuk proses X di slot 2, nilai pertama sekarang adalah 20, bukan 1.000, dan nilai kedua adalah 1.500. Saat Memformat nilai penghitung, Anda mendapatkan 1.480 milidetik alih-alih 500 milidetik yang diharapkan. Saat memformat nilai sampel kelima, Anda akan mendapatkan nilai yang diharapkan.
| Contoh | Slot 0 untuk proses X | Slot 1 untuk proses X | Slot 2 untuk pemrosesan X |
|---|---|---|---|
| Sampel 1 | 0 | 0 | 0 |
| Sampel 2 | 20 | 10 | 500 |
| Sampel 3 | 40 | 20 | 1,000 |
| Sampel 4 | 60 | 1.500 (dari slot sebelumnya 2) | Tidak berlaku. Sekarang telah dikumpulkan di slot 1. |
| Sampel 5 | 80 | 2,000 | Tidak berlaku. Sekarang dikumpulkan di slot 1. |
Saran
Mulai windows 11, Anda dapat menghindari masalah ini dengan menggunakan counterset Process V2 baru. Counterset Process V2 menyertakan ID proses dalam nama instans. Ini menghindari hasil yang tidak konsisten yang muncul dengan counterset Process asli.