İşlemci Grupları

Windows 7 ve Windows Server 2008 R2'nin 64 bit sürümleri ile Windows'un sonraki 64 bit sürümleri, tek bir bilgisayarda 64'ten fazla mantıksal işlemciyi destekler. Bu işlev Windows'un 32 bit sürümlerinde kullanılamaz.

Birden fazla fiziksel işlemciye sahip sistemler veya birden çok çekirdeği olan fiziksel işlemcileri olan sistemler, işletim sistemine birden çok mantıksal işlemci sağlar. Bir mantıksal işlemci, işletim sistemi, uygulama veya sürücü açısından bir mantıksal işlem birimidir. çekirdek, bir veya daha fazla mantıksal işlemciden oluşabilen bir işlemci birimidir. fiziksel işlemci bir veya daha fazla çekirdek içerebilir. Fiziksel işlemci, işlemci paketi, soket veya CPU ile aynıdır.

64'ten fazla mantıksal işlemciye sahip sistemler için destek, tek bir zamanlama varlığı olarak kabul edilen en fazla 64 mantıksal işlemciden oluşan statik bir küme olan işlemci grubukavramını temel alır. İşlemci grupları 0 ile başlayarak numaralandırılır. 64'ten az mantıksal işlemciye sahip sistemlerde her zaman tek bir grup (Grup 0) vardır.

Windows Server 2008, Windows Vista, Windows Server 2003 ve Windows XP: İşlemci grupları desteklenmez.

Sistem başlatıldığında, işletim sistemi işlemci grupları oluşturur ve gruplara mantıksal işlemciler atar. Sistem çalışırken işlemci ekleyebilme özelliğine sahipse işletim sistemi, sistem çalışırken gelebilecek işlemciler için işlemci gruplarında alan sağlar. İşletim sistemi, bir sistemdeki grup sayısını en aza indirir. Örneğin, 128 mantıksal işlemciye sahip bir sistemde, her grupta 32 mantıksal işlemcisi olan dört grup değil, her grupta 64 işlemcisi olan iki işlemci grubu bulunur.

Daha iyi performans için, işletim sistemi gruplara mantıksal işlemciler atarken fiziksel yerelliği dikkate alır. Bir çekirdekteki tüm mantıksal işlemciler ve fiziksel işlemcideki tüm çekirdekler mümkünse aynı gruba atanır. Fiziksel olarak birbirine yakın fiziksel işlemciler aynı gruba atanır. Bir NUMA düğümü, düğümün kapasitesinin maksimum grup boyutunu aşması durumu hariç, tek bir gruba atanır. Daha fazla bilgi için bkz. NUMA desteği.

64 veya daha az işlemciye sahip sistemlerde, mevcut uygulamalar değişiklik yapmadan doğru şekilde çalışacaktır. İşlemci bağlılık maskeleri veya işlemci numaraları kullanan işlevleri çağırmayan uygulamalar, işlemci sayısına bakılmaksızın tüm sistemlerde doğru şekilde çalışır. 64'ten fazla mantıksal işlemciye sahip sistemlerde aşağıdaki uygulama türlerinin doğru şekilde çalışabilmeleri için değişiklik yapılması gerekebilir:

  • Tüm sistem için işlemci başına bilgileri yöneten, koruyan veya görüntüleyen uygulamalar, 64'ten fazla mantıksal işlemciyi destekleyecek şekilde değiştirilmelidir. Bu tür bir uygulamaya örnek olarak sistemdeki her işlemcinin iş yükünü görüntüleyen Windows Görev Yöneticisi gösteriliyor.
  • Performansı kritik olan ve 64 mantıksal işlemcinin ötesine verimli bir şekilde ölçeklenebilen uygulamaların bu tür sistemlerde çalıştırılacak şekilde değiştirilmesi gerekir. Örneğin, veritabanı uygulamaları değişikliklerden yararlanabilir.
  • Bir uygulama işlemci başına veri yapılarına sahip bir DLL kullanıyorsa ve DLL 64'ten fazla mantıksal işlemciyi destekleyecek şekilde değiştirilmediyse, uygulamadaki DLL tarafından dışa aktarılan işlevleri çağıran tüm iş parçacıkları aynı gruba atanmalıdır.

Varsayılan olarak, bir uygulama tek bir grupla kısıtlanır ve bu da tipik uygulama için yeterli işlem kapasitesi sağlamalıdır. İşletim sistemi başlangıçta her işlemi sistemdeki gruplar arasında döngüsel sırayla tek bir gruba atar. Bir işlem, bir gruba atanmış olarak yürütülmeye başlar. bir işlemin ilk iş parçacığı başlangıçta işlemin atandığı grupta çalışır. Yeni oluşturulan her iş parçacığı, onu oluşturan iş parçacığıyla aynı gruba atanır.

64'ten fazla işlemcide çalıştırılabilmesi için birden çok grup kullanılmasını gerektiren bir uygulama, iş parçacıklarını nerede çalıştıracağını açıkça belirlemelidir ve iş parçacıklarının işlemci yakınlıklarını istenen gruplara ayarlamaktan sorumludur. INHERIT_PARENT_AFFINITY bayrağı, yeni bir işlem için işlemci bağlılığını oluşturmak üzere bir üst işlem (geçerli işlemden farklı olabilir) belirtmek için kullanılabilir. İşlem tek bir grupta çalışıyorsa, GetProcessAffinityMask ve SetProcessAffinityMask kullanarak aynı grupta kalırken ilişkisini okuyabilir ve değiştirebilir; işlem ilişkisi değiştirilirse, yeni ilişki iş parçacıklarına uygulanır.

Bir iş parçacığının bağlılığı, oluşturma sırasında CreateRemoteThreadEx işleviyle PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY genişletilmiş özniteliği kullanılarak belirtilebilir. İş parçacığı oluşturulduktan sonra, SetThreadAffinityMask veya SetThreadGroupAffinity çağrılarak bağlılığı değiştirilebilir. Bir iş parçacığı, işlemden farklı bir gruba atanırsa, işlemin yakınlığı iş parçacığının yakınlığını içerecek şekilde güncelleştirilir ve işlem çok gruplu bir işlem haline gelir. Tek tek iş parçacıkları için ek yakınlık değişiklikleri yapılmalıdır; çok gruplu bir işlemin yakınlığı SetProcessAffinityMask kullanılarak değiştirilemez. GetProcessGroupAffinity işlevi, bir işlemin ve iş parçacıklarının atandığı grup kümesini alır.

Bir iş nesnesiyle ilişkili tüm işlemler için işlemci ilişkilendirmesi belirtmek üzere, SetInformationJobObject işlevini JobObjectGroupInformation veya JobObjectGroupInformationEx bilgi sınıfıyla kullanın.

Mantıksal işlemci, grup numarası ve grup göreli işlemci numarasıyla tanımlanır. Bu, PROCESSOR_NUMBER bir yapı ile temsil edilir. Eski işlevler tarafından kullanılan sayısal işlemci numaraları grup görelidir.

64'ten fazla işlemciyi destekleyecek işletim sistemi mimarisi değişiklikleriyle ilgili bir tartışma için, 64'ten Fazla İşlemcisi Olan Sistemleri Destekleme teknik incelemesine bakın.

İşlemci gruplarını destekleyen yeni işlevlerin ve yapıların listesi için bkz. İşlemler ve İş Parçacıklarındaki Yenilikler.

Windows 11 ve Windows Server 2022 ile başlayan davranış

Not:

Windows 11 ve Windows Server 2022'den başlayarak, uygulamaların varsayılan olarak tek bir işlemci grubuyla kısıtlanmış olması artık geçerli değildir. Bunun yerine, işlemlerin ve iş parçacıklarının, 64'ten fazla işlemciye sahip makinelerde birden çok grup genelinde sistemdeki tüm işlemcileri varsayılan olarak kapsayan işlemci benzeşimleri vardır.

Windows 11 ve Windows Server 2022'den itibaren, uygulamaların 64'ten fazla işlemciye sahip bir makinedeki tüm işlemcilerden otomatik olarak yararlanabilmesi için işletim sistemi, varsayılan olarak işlemlerin ve bunların iş parçacıklarının tüm işlemci gruplarında sistemdeki tüm işlemcilere yayılmasını sağlayacak şekilde değiştirilmiştir. Bu, uygulamaların artık birden çok işlemci grubuna erişmek için iş parçacıklarının benzeşimlerini açıkça ayarlamasına gerek olmadığı anlamına gelir.

Uyumluluk nedenleriyle, işletim sistemi hem işlemler hem de iş parçacıkları için yeni bir Birincil Grup kavramı kullanır. Her işleme oluşturma sırasında bir birincil grup atanır ve varsayılan olarak bu işlemin tüm iş parçacıklarının birincil grubu da aynıdır. Her iş parçacığının ideal işlemcisi, iş parçacığının birincil grubunda yer alır, bu nedenle iş parçacıkları tercihen birincil gruplarındaki işlemcilere atanır, ancak başka herhangi bir gruptaki işlemcilere de atanılabilir. Grup farkında olmayan veya tek bir grubu kullanan Affinity API’leri, birincil grubu örtük olarak işlem/iş parçacığı işlemci grubu olarak kullanır; yeni davranışlar hakkında daha fazla bilgi için aşağıdaki Açıklamalar bölümlerine bakın:

Uygulamalar, bir işlemin veya iş parçacığının birden çok işlemci grubu üzerindeki ilişkilendirmesini etkili bir şekilde yönetmek için CPU Kümeleri kullanabilir.

Birden Çok İşlemci

NUMA desteği