Bagikan melalui


Parameter Boot untuk Menguji Driver untuk Dukungan Beberapa Grup Prosesor

Windows 7 dan Windows Server 2008 R2 menyediakan dukungan untuk komputer dengan lebih dari 64 prosesor. Dukungan ini dimungkinkan dengan memperkenalkan grup Prosesor. Untuk tujuan pengujian, Anda dapat mengonfigurasi komputer apa pun yang memiliki beberapa prosesor logis untuk memiliki beberapa grup prosesor dengan membatasi ukuran grup. Ini berarti Anda dapat menguji driver dan komponen untuk beberapa kompatibilitas grup prosesor pada komputer yang memiliki 64 atau lebih sedikit prosesor logis.

Catatan Konsep grup prosesor, yang diperkenalkan dengan Windows 7, memungkinkan API dan DDI yang ada untuk terus bekerja di komputer dengan lebih dari 64 prosesor logis. Biasanya, prosesor grup diwakili oleh masker afinitas, yang panjangnya 64 bit. Komputer apa pun dengan lebih dari 64 prosesor logis harus memiliki lebih dari satu grup. Saat proses dibuat, proses ditetapkan ke grup tertentu. Secara default, utas proses dapat berjalan pada semua prosesor logis dari grup yang sama, meskipun afinitas utas dapat diubah secara eksplisit. Panggilan ke API atau DDI apa pun yang mengambil masker afinitas atau nomor prosesor sebagai argumen, tetapi bukan nomor grup, terbatas pada memengaruhi atau melaporkan prosesor tersebut dalam grup utas panggilan. Hal yang sama berlaku untuk API atau DDI yang mengembalikan masker afinitas atau nomor prosesor, seperti GetSystemInfo.

Dimulai dengan Windows 7, aplikasi atau driver dapat menggunakan fungsi yang memperluas API warisan. Fungsi baru yang sadar grup ini menerima argumen nomor grup untuk secara tidak ambigu memenuhi syarat nomor prosesor atau masker afinitas, dan oleh karena itu dapat memanipulasi prosesor di luar grup utas panggilan. Interaksi antara driver dan komponen yang berjalan dalam grup yang berbeda dalam komputer memperkenalkan potensi bug ketika API warisan atau DDI terlibat. Anda dapat menggunakan API warisan yang tidak sadar grup pada Windows 7 dan Windows Server 2008 R2. Namun, persyaratan driver lebih ketat. Untuk kebenaran fungsional driver pada komputer yang memiliki lebih dari satu grup prosesor, Anda harus mengganti DDI apa pun yang menerima nomor prosesor atau masker sebagai parameter tanpa grup prosesor yang menyertainya atau mengembalikan nomor prosesor atau masker tanpa grup prosesor yang menyertainya. DDI warisan yang tidak sadar grup ini dapat berkinerja tidak menentu di komputer yang memiliki beberapa grup proses karena grup yang disimpulkan mungkin berbeda dari apa yang dimaksudkan oleh utas panggilan. Oleh karena itu, driver yang menggunakan DDI warisan ini dan ditargetkan untuk Windows Server 2008 R2 harus diperbarui untuk menggunakan versi antarmuka baru yang diperluas. Driver yang tidak memanggil fungsi apa pun yang menggunakan masker afinitas prosesor atau nomor prosesor akan beroperasi dengan benar, terlepas dari jumlah prosesor. Driver yang memanggil DDI baru dapat berjalan pada versi Windows sebelumnya dengan menyertakan header procgrp.h, memanggil WdmlibProcgrpInitialize, dan menautkan terhadap Pustaka Kompatibilitas Grup Prosesor (procgrp.lib).

Untuk informasi selengkapnya tentang API dan DDI baru yang sadar grup, unduh laporan resmi Sistem Pendukung yang Memiliki Lebih dari 64 Prosesor Logis: Panduan untuk Pengembang.

Untuk membantu mengidentifikasi potensi masalah terkait grup prosesor dalam driver dan komponen, Anda dapat menggunakan opsi BCDEdit /set . Dua pengaturan konfigurasi boot BCD, groupsize dan maxgroup, dapat mengonfigurasi komputer apa pun yang memiliki beberapa prosesor logis untuk mendukung beberapa grup prosesor. Opsi groupaware memodifikasi perilaku DDI tertentu dan memanipulasi lingkungan grup untuk tujuan pengujian.

Membuat Beberapa Grup Prosesor dengan Mengubah Ukuran Grup

Opsi groupsize menentukan jumlah maksimum prosesor logis dalam grup. Secara default, opsi groupsize tidak diatur, dan komputer apa pun dengan 64 atau lebih sedikit prosesor logis memiliki satu grup, yaitu grup 0.

Catatan Prosesor fisik, atau paket prosesor, dapat memiliki satu atau beberapa inti, atau unit prosesor, yang masing-masing dapat berisi satu atau beberapa prosesor logis. Sistem operasi menganggap prosesor logis sebagai satu mesin komputasi logis.

Untuk membuat beberapa grup prosesor, jalankan BCDEdit /set di jendela Prompt Perintah yang ditinggikan dan tentukan nilai maksimal baru untuk groupsize yang kurang dari jumlah total prosesor logis. Perhatikan bahwa pengaturan ukuran grup adalah untuk pengujian dan Anda tidak boleh mengonfigurasi sistem pengiriman dengan pengaturan ini. Nilai maxsize dapat diatur ke daya 2 antara 1 dan 64 inklusif. Perintah menggunakan sintaks berikut:

bcdedit.exe /set groupsize maxsize

Misalnya, perintah berikut mengatur jumlah maksimum prosesor dalam grup menjadi 2.

bcdedit.exe /set groupsize 2

Jika komputer non-NUMA memiliki 8 prosesor logis, mengatur ukuran grup ke 2 membuat 4 grup prosesor dengan masing-masing 2 prosesor logis.

Grup 0: 1 simpul NUMA yang berisi 1 paket dari 2 prosesor logis

Grup 1: 1 simpul NUMA yang berisi 1 paket 2 prosesor logis

Grup 2: 1 simpul NUMA yang berisi 1 paket 2 prosesor logis

Grup 3: 1 simpul NUMA yang berisi 1 paket 2 prosesor logis

Secara desain, komputer non-NUMA dianggap memiliki satu simpul NUMA. Karena simpul NUMA tidak dapat menjangkau grup, sistem membuat simpul untuk setiap grup setelah Anda menghidupkan ulang komputer.

Jika groupsize diatur ke nilai yang kurang dari jumlah prosesor logis dalam paket prosesor fisik (soket), sistem mendefinisikan ulang konsep paketnya saat dihidupkan ulang sehingga paket tidak mencakup grup. Ini berarti bahwa lebih banyak paket daripada yang sebenarnya ada dilaporkan oleh API topologi prosesor. Ini juga berarti bahwa batas lisensi prosesor Windows (tingkat paket) mungkin mencegah beberapa paket prosesor dimulai ketika groupsize diatur.

Paket prosesor dapat mencakup grup jika memiliki beberapa simpul NUMA yang ditentukan di dalamnya dan sistem menetapkan simpul ini ke grup yang berbeda.

Windows membatasi jumlah grup yang didukung. Nomor ini dapat berubah dengan versi baru Windows atau dalam rilis paket layanan. Driver atau komponen tidak boleh bergantung pada jumlah grup yang didukung Windows sebagai konstanta. Batas jumlah grup dapat membatasi jumlah prosesor logis yang diizinkan untuk memulai ketika nilai kecil digunakan untuk opsi boot ukuran grup .

Untuk menghapus pengaturan ukuran grup yang Anda gunakan untuk pengujian dan kembali ke pengaturan default 64 prosesor logis per grup, gunakan perintah BCDEdit berikut.

bcdedit.exe /deletevalue groupsize

Perintah ini setara dengan pengaturan groupsize menjadi 64.

Memaksimalkan Jumlah Grup Prosesor

Opsi maxgroup adalah cara lain untuk membuat grup prosesor di komputer dengan beberapa prosesor logis dan simpul NUMA. Opsi boot maxgroup tidak berpengaruh pada komputer non-NUMA.

Untuk memaksimalkan jumlah grup, jalankan perintah BCDEdit /set di jendela Prompt Perintah yang ditinggikan. Perintah menggunakan sintaks berikut:

bcdedit.exe /set maxgroup on

Misalnya, pertimbangkan komputer yang memiliki 2 simpul NUMA, 1 paket prosesor per simpul, dan 4 core prosesor per paket, dengan total 8 prosesor logis.

Konfigurasi grup default adalah:

Grup 0: 8 prosesor logis, 2 paket, 2 simpul NUMA

Jika Anda memasukkan bcdedt.exe /set maxgroup pada perintah diikuti dengan mulai ulang, perintah menghasilkan konfigurasi grup berikut:

Grup 0: 4 prosesor logis, 1 paket, 1 simpul NUMA

Grup 1: 4 prosesor logis, 1 paket, 1 simpul NUMA

Perhatikan bahwa simpul NUMA ditetapkan ke grup dengan cara yang memaksimalkan jumlah grup.

Untuk mengubah kembali ke pengaturan default, gunakan perintah BCDEdit berikut.

bcdedit.exe /set maxgroup off

Uji kompatibilitas Multiple-Group dengan Mengatur Opsi Boot Sadar Grup

Windows 7 dan Windows Server 2008 R2 telah memperkenalkan opsi BCD baru (groupaware) yang memaksa driver dan komponen untuk mengetahui beberapa grup di beberapa lingkungan grup prosesor. Opsi groupaware mengubah perilaku serangkaian fungsi driver perangkat untuk membantu mengekspos ketidakcocokan lintas grup dalam driver dan komponen. Anda dapat menggunakan opsi boot groupaware bersama dengan opsi groupsize dan maxgroup untuk menguji kompatibilitas driver dengan beberapa grup ketika komputer memiliki 64 atau lebih sedikit prosesor logis aktif.

Ketika opsi boot groupaware diatur, sistem operasi memastikan bahwa proses dimulai dalam grup selain grup 0. Ini meningkatkan kemungkinan interaksi lintas grup antara driver dan komponen. Opsi ini juga memodifikasi perilaku fungsi warisan yang tidak sadar grup, KeSetTargetProcessorDpc, KeSetSystemAffinityThreadEx, dan KeRevertToUserAffinityThreadEx, sehingga mereka selalu beroperasi pada grup bernomor tertinggi yang berisi prosesor logis aktif. Driver yang memanggil salah satu fungsi warisan ini harus diubah untuk memanggil rekan mereka yang sadar grup (KeSetTargetProcessorDpcEx, KeSetSystemGroupAffinityThread, dan KeRevertToUserGroupAffinityThread),

Untuk menguji kompatibilitas, gunakan perintah BCDEdit /set berikut.

bcdedit.exe /set groupaware on
Fungsi sadar non-grup warisan Penggantian sadar grup Windows 7

KeSetTargetProcessorDpc

KeSetTargetProcessorDpcEx

KeSetSystemAffinityThreadEx

KeSetSystemGroupAffinityThread

KeRevertToUserAffinityThreadEx

KeRevertToUserGroupAffinityThread

Untuk mengatur ulang komputer ke pengaturan default, gunakan perintah BCDEdit berikut.

bcdedit.exe /set groupaware off