Fungsi KeQueryNodeActiveAffinity (wdm.h)

Rutinitas KeQueryNodeActiveAffinity mendapatkan afinitas prosesor saat ini dari simpul tertentu dalam sistem multiprosesor yang memiliki arsitektur akses memori non-seragam (NUMA).

Sintaks

void KeQueryNodeActiveAffinity(
  [in]            USHORT          NodeNumber,
  [out, optional] PGROUP_AFFINITY Affinity,
  [out, optional] PUSHORT         Count
);

Parameter

[in] NodeNumber

Nomor simpul. Jika sistem multiprosedur berisi simpul n , simpul diberi nomor dari 0 hingga n-1. Untuk mendapatkan nomor node tertinggi (n-1) dalam sistem, panggil rutinitas KeQueryHighestNodeNumber .

[out, optional] Affinity

Penunjuk ke buffer yang dialokasikan penelepon tempat rutin menulis struktur GROUP_AFFINITY . Struktur ini berisi nomor grup grup yang berisi simpul yang diidentifikasi oleh NodeNumber, dan masker afinitas yang menunjukkan prosesor logis mana dalam simpul yang aktif. Anda dapat mengatur parameter ini ke NULL jika Anda tidak memerlukan informasi ini.

Mulai Windows Server 2022, simpul dapat menjangkau lebih dari satu grup. Ini terjadi ketika node berisi lebih dari 64 prosesor. Dalam hal ini, OS menetapkan grup utama untuk setiap simpul NUMA. Grup utama selalu yang berisi prosesor terbanyak. Dalam hal ini, struktur afinitas grup yang dikembalikan adalah untuk grup utama simpul. Untuk informasi selengkapnya tentang perubahan perilaku ini, lihat Dukungan NUMA. Jika kode Anda berjalan pada sistem dengan lebih dari 64 prosesor per simpul NUMA, pertimbangkan untuk menggunakan KeQueryNodeActiveAffinity2.

[out, optional] Count

Penunjuk ke lokasi di mana rutinitas menulis jumlah prosesor aktif yang diwakili dalam masker afinitas simpul yang ditunjukkan oleh Afinitas. Anda dapat mengatur parameter ini ke NULL jika Anda tidak memerlukan informasi ini.

Mulai Windows Server 2022, jumlah yang dikembalikan adalah untuk grup utama simpul. Lihat informasi selengkapnya tentang grup utama di atas.

Nilai kembali

Tidak ada

Keterangan

Buffer yang dialokasikan pemanggil yang dialokasikan oleh parameter Afinitas harus cukup besar untuk berisi struktur GROUP_AFFINITY . Anggota Mask dari struktur ini berisi masker afinitas yang menunjukkan prosesor mana yang aktif. Jika prosesor aktif, bit yang sesuai dalam masker adalah satu. Semua bit lainnya adalah nol.

Dalam arsitektur multiprosesor NUMA, simpul adalah kumpulan prosesor yang berbagi akses cepat ke wilayah memori. Akses memori tidak seragam karena prosesor dapat mengakses memori dalam simpulnya lebih cepat daripada dapat mengakses memori di simpul lain.

Jumlah prosesor dalam simpul tidak boleh melebihi jumlah bit dalam masker afinitas dalam struktur yang diacu oleh Afinitas. Masker afinitas juga menentukan jumlah maksimum prosesor dalam grup.

Dalam Windows 10, versi 2004 dan versi yang lebih lama, jika selama inisialisasi sistem, Windows menemukan simpul perangkat keras NUMA yang berisi lebih banyak prosesor logis daripada yang akan masuk ke dalam grup, Windows membagi simpul menjadi simpul logis yang lebih kecil. Masing-masing simpul ini tidak melebihi ukuran grup maksimum. Parameter NodeNumber mengidentifikasi simpul logis. Untuk mendapatkan jumlah maksimum prosesor per grup, panggil rutinitas KeQueryMaximumProcessorCountEx .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows 7 dan versi Windows yang lebih baru.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Tingkat apa pun

Lihat juga

KeQueryNodeActiveAffinity2

KeQueryLogicalProcessorRelationship

GROUP_AFFINITY

KeQueryHighestNodeNumber

KeQueryHighestNodeNumber

KeQueryMaximumProcessorCountEx