Grup Prosesor

Windows 7 dan Windows Server 2008 R2 versi 64-bit dan versi Windows yang lebih baru mendukung lebih dari 64 prosesor logis pada satu komputer. Fungsionalitas ini tidak tersedia pada Windows versi 32-bit.

Sistem dengan lebih dari satu prosesor fisik atau sistem dengan prosesor fisik yang memiliki beberapa inti menyediakan sistem operasi dengan beberapa prosesor logis. Prosesor logis adalah salah satu mesin komputasi logis dari perspektif sistem operasi, aplikasi, atau driver. Inti adalah satu unit prosesor, yang dapat terdiri dari satu atau beberapa prosesor logis. Prosesor fisik dapat terdiri dari satu atau beberapa inti. Prosesor fisik sama dengan paket prosesor, soket, atau CPU.

Dukungan untuk sistem yang memiliki lebih dari 64 prosesor logis didasarkan pada konsep grup prosesor, yang merupakan set statis hingga 64 prosesor logis yang diperlakukan sebagai entitas penjadwalan tunggal. Grup prosesor diberi nomor dimulai dengan 0. Sistem dengan kurang dari 64 prosesor logis selalu memiliki satu grup, Grup 0.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Grup prosesor tidak didukung.

Ketika sistem dimulai, sistem operasi membuat grup prosesor dan menetapkan prosesor logis ke grup. Jika sistem mampu menambahkan prosesor panas, sistem operasi memungkinkan ruang dalam grup untuk prosesor yang mungkin tiba saat sistem berjalan. Sistem operasi meminimalkan jumlah grup dalam sistem. Misalnya, sistem dengan 128 prosesor logis akan memiliki dua grup prosesor dengan 64 prosesor di setiap grup, bukan empat grup dengan 32 prosesor logis di setiap grup.

Untuk performa yang lebih baik, sistem operasi memperhitungkan lokalitas fisik saat menetapkan prosesor logis ke grup. Semua prosesor logis dalam inti, dan semua inti dalam prosesor fisik, ditetapkan ke grup yang sama, jika memungkinkan. Prosesor fisik yang secara fisik dekat satu sama lain ditetapkan ke grup yang sama. Simpul NUMA ditetapkan ke satu grup kecuali kapasitas simpul melebihi ukuran grup maksimum. Untuk informasi selengkapnya, lihat Dukungan NUMA.

Pada sistem dengan prosesor 64 atau lebih sedikit, aplikasi yang ada akan beroperasi dengan benar tanpa modifikasi. Aplikasi yang tidak memanggil fungsi apa pun yang menggunakan masker afinitas prosesor atau nomor prosesor akan beroperasi dengan benar pada semua sistem, terlepas dari jumlah prosesor. Untuk beroperasi dengan benar pada sistem dengan lebih dari 64 prosesor logis, jenis aplikasi berikut mungkin memerlukan modifikasi:

  • Aplikasi yang mengelola, memelihara, atau menampilkan informasi per prosesor untuk seluruh sistem harus dimodifikasi untuk mendukung lebih dari 64 prosesor logis. Contoh aplikasi tersebut adalah Windows Task Manager, yang menampilkan beban kerja setiap prosesor dalam sistem.
  • Aplikasi yang performanya sangat penting dan yang dapat menskalakan secara efisien di luar 64 prosesor logis harus dimodifikasi untuk dijalankan pada sistem tersebut. Misalnya, aplikasi database mungkin mendapat manfaat dari modifikasi.
  • Jika aplikasi menggunakan DLL yang memiliki struktur data per prosesor, dan DLL belum dimodifikasi untuk mendukung lebih dari 64 prosesor logis, semua utas dalam aplikasi yang memanggil fungsi yang diekspor oleh DLL harus ditetapkan ke grup yang sama.

Secara default, aplikasi dibatasi untuk satu grup, yang harus menyediakan kemampuan pemrosesan yang cukup untuk aplikasi umum. Sistem operasi awalnya menetapkan setiap proses ke satu grup dengan cara round-robin di seluruh grup dalam sistem. Proses memulai eksekusinya yang ditetapkan ke satu grup. Alur pertama dari proses awalnya berjalan dalam grup tempat proses ditetapkan. Setiap utas yang baru dibuat ditetapkan ke grup yang sama dengan utas yang membuatnya.

Aplikasi yang memerlukan penggunaan beberapa grup sehingga dapat berjalan pada lebih dari 64 prosesor harus secara eksplisit menentukan tempat menjalankan utasnya dan bertanggung jawab untuk mengatur afinitas prosesor utas ke grup yang diinginkan. Bendera INHERIT_PARENT_AFFINITY dapat digunakan untuk menentukan proses induk (yang dapat berbeda dari proses saat ini) untuk menghasilkan afinitas untuk proses baru. Jika proses berjalan dalam satu grup, proses dapat membaca dan memodifikasi afinitasnya menggunakan GetProcessAffinityMask dan SetProcessAffinityMask sementara tetap berada di grup yang sama; jika afinitas proses dimodifikasi, afinitas baru diterapkan ke utasnya.

Afinitas utas dapat ditentukan saat pembuatan menggunakan atribut PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY diperluas dengan fungsi CreateRemoteThreadEx. Setelah utas dibuat, afinitasnya dapat diubah dengan memanggil SetThreadAffinityMask atau SetThreadGroupAffinity. Jika utas ditetapkan ke grup yang berbeda dari proses, afinitas proses diperbarui untuk menyertakan afinitas utas dan prosesnya menjadi proses multi-grup. Perubahan afinitas lebih lanjut harus dilakukan untuk utas individu; afinitas proses multi-grup tidak dapat dimodifikasi menggunakan SetProcessAffinityMask. Fungsi GetProcessGroupAffinity mengambil kumpulan grup tempat proses dan utasnya ditetapkan.

Untuk menentukan afinitas untuk semua proses yang terkait dengan objek pekerjaan, gunakan fungsi SetInformationJobObject dengan kelas informasi JobObjectGroupInformation atau JobObjectGroupInformationEx.

Prosesor logis diidentifikasi oleh nomor grupnya dan nomor prosesor relatif grupnya. Ini diwakili oleh struktur PROCESSOR_NUMBER. Nomor prosesor numerik yang digunakan oleh fungsi warisan adalah relatif grup.

Untuk diskusi tentang perubahan arsitektur sistem operasi untuk mendukung lebih dari 64 prosesor, lihat laporan resmi Sistem Pendukung yang Memiliki Lebih dari 64 Prosesor.

Untuk daftar fungsi dan struktur baru yang mendukung grup prosesor, lihat Apa yang Baru dalam Proses dan Utas.

Perilaku dimulai dengan Windows 11 dan Windows Server 2022

Catatan

Dimulai dengan Windows 11 dan Windows Server 2022, tidak lagi terjadi bahwa aplikasi dibatasi secara default ke satu grup prosesor. Sebaliknya, proses dan utasnya memiliki afinitas prosesor yang secara default mencakup semua prosesor dalam sistem, di beberapa grup pada komputer dengan lebih dari 64 prosesor.

Agar aplikasi dapat secara otomatis memanfaatkan semua prosesor dalam mesin dengan lebih dari 64 prosesor, dimulai dengan Windows 11 dan Windows Server 2022 OS telah berubah untuk membuat proses dan utasnya mencakup semua prosesor dalam sistem, di semua grup prosesor, secara default. Ini berarti bahwa aplikasi tidak perlu lagi secara eksplisit mengatur afinitas utas mereka untuk mengakses beberapa grup prosesor.

Untuk alasan kompatibilitas, OS menggunakan konsep Grup Utama baru untuk proses dan utas. Setiap proses diberi grup utama saat pembuatan, dan secara default semua grup utama utasnya sama. Setiap prosesor ideal utas berada dalam grup utama utas, sehingga utas akan lebih dijadwalkan untuk prosesor pada grup utama mereka, tetapi mereka dapat dijadwalkan ke prosesor pada grup lain. API afinitas yang tidak sadar grup atau beroperasi pada satu grup secara implisit menggunakan grup utama sebagai grup proses/prosesor utas; untuk informasi selengkapnya tentang perilaku baru, periksa bagian Komentar untuk hal berikut:

Aplikasi dapat menggunakan Set CPU untuk mengelola afinitas proses atau utas secara efektif melalui beberapa grup prosesor.

Beberapa Prosesor

Dukungan NUMA