İşlemci Grupları
Windows 7 ve Windows Server 2008 R2'nin 64 bit sürümleri ve Windows'un sonraki 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. mantıksal işlemci, işletim sistemi, uygulama veya sürücü açısından bir mantıksal bilgi işlem altyapısıdır. ç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, yuva 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 gruplar halinde 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 kapasitesi grup boyutu üst sınırını aşmadığı sürece 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ışır. İşlemci bencesi 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 doğru şekilde çalışmak için aşağıdaki uygulama türleri değişiklik gerektirebilir:
- 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ışarı 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 geniş işleme özelliği sağlamalıdır. İşletim sistemi başlangıçta her işlemi sistemdeki gruplar arasında hepsini bir kez deneme yöntemiyle tek bir gruba atar. Bir işlem, bir gruba atanan yürütmeye 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ıracaklarını açıkça belirlemelidir ve iş parçacıklarının işlemci benzitelerini istenen gruplara ayarlamaktan sorumludur. INHERIT_PARENT_AFFINITY bayrağı, yeni bir işlem için benzini 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 aynı grupta kalırken SetProcessAffinityMaskkullanarak bennizimini okuyabilir ve değiştirebilir; işlem benzitesi değiştirilirse, yeni bensemite iş parçacıklarına uygulanır.
CreateRemoteThreadExişleviyle PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY genişletilmiş özniteliği kullanılarak oluşturma sırasında bir iş parçacığının benekliği belirtilebilir. İş parçacığı oluşturulduktan sonra, SetThreadAffinityMask veya SetThreadGroupAffinityçağrılarak benzitesi değiştirilebilir. bir iş parçacığı işlemden farklı bir gruba atanırsa, işlemin benşimi iş parçacığının benşimini içerecek şekilde güncelleştirilir ve işlem çok gruplu bir işlem haline gelir. Tek tek iş parçacıkları için daha fazla benşim değişikliği yapılmalıdır; SetProcessAffinityMaskkullanılarak çok gruplu bir işlemin benzini değiştiremezsiniz. 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 benzenşim belirtmek için, JobObjectGroupInformation veya JobObjectGroupInformationEx bilgi sınıfıyla SetInformationJobObject işlevini 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 Destek Sistemleriteknik incelemeye 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 makinelerdeki birden çok grup genelinde, sistemdeki tüm işlemcileri varsayılan olarak kapsayan işlemci benziteleri vardır.
Uygulamaların Windows 11 ve Windows Server 2022'den başlayarak 64'ten fazla işlemciye sahip bir makinedeki tüm işlemcilerden otomatik olarak yararlanması için işletim sistemi, işlemleri ve bunların iş parçacıklarını varsayılan olarak tüm işlemci grupları genelinde sistemdeki tüm işlemcilere yayacak ş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 bencelerini 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 tüm iş parçacıklarının birincil grubu 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 grubundaki işlemcilere zamanlanır, ancak başka bir gruptaki işlemcilere zamanlanabilir. Grup farkında olmayan veya tek bir grupta çalışan benzenşim 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:
- GetProcessAffinityMask
- SetProcessAffinityMask
- SetThreadAffinityMask
- GetProcessGroupAffinity
- GetThreadGroupAffinity
- SetThreadGroupAffinity
- SetThreadIdealProcessor
- SetThreadIdealProcessorEx
Uygulamalar, bir işlemin veya iş parçacığının benzenimini birden çok işlemci grubu üzerinden etkili bir şekilde yönetmek için CPU Kümeleri kullanabilir.
İlgili konular