Windows işlemci benzeşimi hiper iş parçacıklı CPU'larla nasıl çalışır?


27

Windows işlemci benzeşimi hiper iş parçacıklı CPU'larla nasıl çalışır? Her biri hiper iş parçacıklı bir sanal çekirdeğe sahip dört çekirdekli bir sistem örneği (resimdeki) kullanalım.

  1. Hangi çekirdekler aşağıdaki "CPU" değerlerine karşılık gelir?
  2. Aşağıdaki (CPU) ve CPU 7 aşağıdaki gibi bir çekirdeği temsil ediyor mu; HT ve gerçek çekirdek?
  3. Örneğin, CPU 6 gerçek bir çekirdeği ve CPU 7 bir HT çekirdeğini temsil ediyorsa, sadece CPU7'ye atanmış bir iş parçacığı yalnızca gerçek bir çekirdeğin kalan kaynaklarını alır mı? (çekirdeğin diğer görevleri yerine getirdiğini varsayarsak)
  4. Hiper iş parçacığı, işlemcinin içinde, dişler içten içe geçebilecek şekilde tamamen yönetiliyor mu? Öyleyse, CPU kapsamı mı yoksa çekirdek kapsamı mı? Örnek: Eğer CPU 6 ve 7 bir çekirdeği temsil ediyorsa, hangi işlemin atandığı önemli değil, çünkü CPU çalışan bir iş parçacığına uygun kaynakları atayacaktır.
  5. Uzun süredir devam eden tek iş parçacıklı işlemlerin en azından görev yöneticisine göre çekirdeklerin etrafında biraz durduğunu fark ettim. Bu, tek bir çekirdeğe bir işlem atamanın performansı biraz artıracağı anlamına mı geliyor (bağlam anahtarları ve önbellek geçersiz kılmalarını önleyerek vb.)? Öyleyse, "sadece sanal bir çekirdeğe" atanmadığımı bilebilir miyim?

Bunların hepsi belirsiz ve kafa karıştırıcı. HT harika, ancak kaynak tahsisatının şeffaflığını azalttığı kesin.

İşlemci yakınlığı menüsü


Sadece bildiğiniz gibi, gördüğünüz her CPU çekirdeği bir "sanal çekirdek" dir. Her birinin CPU ile fiziksel bir bağlantısı var, "sanal" terimi, donanım hiper iş parçacığı uygulaması nedeniyle Windows programlarının bu CPU'larda nasıl işlemden geçtiğinden geliyor. Daha fazla ayrıntı için cevabımı gör.
Atılım

Ayrıca, sizin için son bir yorum. “HT harika, ancak kaynak tahsisatının şeffaflığını azalttığı kesin.” Bu% 100 doğrudur, fakat biraz bu konuda yapabileceği yoktur, ne de orada çok nedeni için bu konuda bir şey yapmak. Tüm modern işletim sistemleri hiper-dişin ne olduğunu biliyor, çoğunun telafi edecek gelişmiş işlemci zamanlayıcıları var ve birkaç spesifik durum dışında (ve az sayıda demek istediğim), neredeyse her zaman bir performans avantajı var.
Atılım

Yanıtlar:


18

Hangi çekirdekler aşağıdaki "CPU" değerlerine karşılık gelir?

Çekirdek 1, 2, 3 ve 4'e sahip olduğumuzu varsayarak, CPU4 ve CPU5, çekirdek 3'ü temsil eder.

Aşağıdaki (CPU) ve CPU 7 aşağıdaki gibi bir çekirdeği temsil ediyor mu; HT ve gerçek çekirdek?

İkisi arasında bir fark yoktur - her ikisi de CPU'ya fiziksel donanım arayüzlerine sahiptir, mantıksal arayüz donanımda uygulanır ( daha fazla bilgi için bkz. Intel Core İşlemci Veri Sayfası, Cilt 1 ). Temel olarak, her bir çekirdeğin iki ayrı yürütme birimi vardır, ancak aralarında bazı ortak kaynakları paylaşır. Bu yüzden bazı durumlarda hiper-diş çekme gerçekten performansı düşürebilir.

Örneğin, CPU 6 gerçek bir çekirdeği ve CPU 7 bir HT çekirdeğini temsil ediyorsa, sadece CPU7'ye atanmış bir iş parçacığı yalnızca gerçek bir çekirdeğin kalan kaynaklarını alır mı? (çekirdeğin diğer görevleri yerine getirdiğini varsayarsak)

Yukarıyı görmek. SADECE CPU6 veya SADECE CPU7'ye atanan bir iplik tam olarak aynı hızda çalışacaktır (ipliğin aynı işi yaptığı ve işlemcideki diğer çekirdeklerin boşta olduğu varsayılarak). Windows, HT etkin işlemcileri bilir ve işlem zamanlayıcısı bunları dikkate alır.

Hiper iş parçacığı tamamen işlemcinin içinde yönetiliyor mu, öyle ki dişler içten takılıyor? Öyleyse, CPU kapsamı mı yoksa çekirdek kapsamı mı? Örnek: Eğer CPU 6 ve 7 bir çekirdeği temsil ediyorsa, hangi işlemin atandığı önemli değil, çünkü CPU çalışan bir iş parçacığına uygun kaynakları atayacaktır.

Her ikisi de. Kendisi vermez gerçek donanım değil işletim sisteminin iş programları çalıştırmak için göbekler neyi planlamak. Bununla birlikte, CPU'nun kendisi gerçek yürütme birimleri arasında kaynakları paylaşmaktan sorumludur ve Intel bunu mümkün olduğu kadar verimli hale getirmek için nasıl kod yazabileceğinizi belirler.

Uzun süredir devam eden tek iş parçacıklı işlemlerin en azından görev yöneticisine göre çekirdeklerin etrafında biraz durduğunu fark ettim. Bu, tek bir çekirdeğe bir işlem atamanın performansı biraz artıracağı anlamına mı geliyor (bağlam anahtarları ve önbellek geçersiz kılmalarını önleyerek vb.)? Öyleyse, "sadece sanal bir çekirdeğe" atanmadığımı bilebilir miyim?

Bu normal davranış ve bir, tek bir çekirdek atamadan olacak değil performansını artırmak. Bir nedenden ötürü, tek bir işlemin sadece tek bir fiziksel çekirdekte yürütülmesini sağlamak istiyorsanız, bunu herhangi bir mantıksal işlemciye atayın.

Sürecin “etrafında dönmesinin” nedeni, işlem zamanlayıcısından kaynaklanmaktadır. Bu normal bir davranıştır ve büyük olasılıkla, işlemin hangi çekirdeklere sahip olacağına bakılmaksızın) işlemin hangi çekirdeklerde gerçekleştirilebileceğini sınırlayarak sınırlı performans elde edersiniz, çünkü işlem zamanlayıcısının şimdi her şeyin sizin getirdiğiniz kısıtlamalarla çalışmasını sağlamak için daha fazla çalışması gerekir. Evet, bu ceza çoğu durumda önemsiz olabilir, ancak sonuçta, bunu yapmak için bir nedeniniz olmadıkça, sonuç yok !


5

CPU düzeninin tüm CPU'larınızı tanıyamayan bir işletim sisteminin mümkün olan maksimum performansı elde etmesi için organize edilmesi gerekiyor. Bu, her bir fiziksel çekirdekten bir sanal çekirdeğin, herhangi bir fiziksel çekirdekten bir ikinci sanal çekirdeğin listelenmesinden önce listeleneceği anlamına gelecektir.

Örneğin, A, B, C ve D olarak adlandırılan dört hiper iş parçacıklı çekirdeğiniz olduğunu varsayalım. A ve B'nin L2 önbelleğini paylaştığını ve C ve D'nin L2 önbelleğini paylaştığını varsayıyorsanız, sıradaki gibi olmalıdır:
0 = A1 1 = C1 2 = B1 3 = D1 4 = A2 5 = C2 6 = B27 = D2

Bu şekilde, sadece iki işlemciyi kaplayan bir işletim sistemi tüm L2 önbelleğini kullanır. Ayrıca, yalnızca dört CPU'yu alan bir işletim sistemi tüm yürütme birimlerini kullanır.

Yine, olması gerektiği gibi.

Elbette, CPU topolojinizi anlayan bir işletim sistemi kullanıyorsanız, bunun önemi yoktur. BIOS, hangi çekirdeğin yürütme birimlerini paylaştığını, önbelleklerini paylaşdığını vb. Açıklayan bir tabloyu doldurur. İşlemcinizi tam olarak destekleyen, kullanmanız muhtemel her modern işletim sistemi, tam CPU topolojisini anlar.


1
  1. Karşılıklarının nasıl olması CPU ve ana kartınızın çekirdekleri nasıl numaralandırdığına ve tanımladığına bağlıdır. Gerçekleşmesi gereken şey, fiziksel soketlerin ilk önce sıralanmasına, sonraki mantıksal çekirdeklere ve sanal çekirdeklerin sonuncusudur. Senin durumunda, 0-3 çekirdek fiziksel çekirdek ve 4-7 sanal HT çekirdek olmalıdır. Bunun temel nedeni, mevcut tüm yürütme ünitelerini idare edemeyen bir işletim sistemi çalıştırmanız durumunda, paylaşılanlardan önce en bağımsız birimleri elde etmenin en muhtemel olmasıdır. Varsayımsal 2-CPU sadece bir işletim sistemi işletim sisteminizde 2 ayrı çekirdek yerine sisteminizde bir HT çifti bulsa iyi olmaz. (Bu, bazı HT sistemleri için gerçek bir sorundu, çekirdek zamanlayıcıları yeni CPU'lar için güncellenmeden önce.)
  2. Hayır. Bkz. 1.
  3. Hayır. HT bundan daha karmaşık. Unutmayın, 2 sanal çekirdek de diğer bitler ayrılırken bazı kaynakları sıklıkla paylaşıyor, ancak bir kerede yalnızca birinin veya diğeri çalıştırılabiliyor.
  4. Sırala. Örneği (varsayımlar verilen) genellikle doğrudur. Ancak, uygulama ne tür bir iş yükünün çalıştığını biliyorsa, işletim sisteminin iş parçacıklarını uygun şekilde programlamasına yardımcı olabilir.
  5. Çekirdek atlamak için çok iyi bir neden var: Termal iş yükünü etrafa yaymak. Pek çok durumda daha yüksek seviyeli önbelleklerin (L2, L3) tüm çekirdeklerde zaten paylaşıldığı göz önüne alındığında, çekirdek atlamanın önemli bir performans etkisi olmayacak, ancak ısıl etki sizin için "sıcak nokta" olmayacağından önemli olacaktır. diğerleri boşta otururken sürekli çalışan bir çekirdek. Şimdi, çok soketli bir sistemdeki (özellikle bir NUMA sistemindeki) soketlerin geçişi önemli bir performans etkisine sahip olabilir. Çoğu programcı bunun farkındadır ve buna rağmen bunu dikkate alır.

Nihayetinde, bunun neye yol açtığı, genellikle (son kullanıcı olarak) performansınızı önemli ölçüde etkilemek için iş parçacığı afinitesi ile yapabileceğiniz çok az şey olduğu; Sisteminiz.

El ile yakınlığın atanmasının anlamlı bir etkiye sahip olduğu herhangi bir iş yükü bulursanız, programın düzeltilebilmesi için bunu uygulama geliştiricisine bir hata olarak bildirin.


4
"0-3 çekirdek fiziksel çekirdek ve 4-7 sanal HT çekirdek olmalıdır" Aslında, çekirdek 0 ve çekirdek 1 aynı (tek) fiziksel çekirdeğe karşılık gelir. Her "hiper iş parçacıklı çekirdek" CPU ile iki fiziksel bağlantıya sahiptir, bu nedenle Windows tam anlamıyla 8 fiziksel çekirdek görür. Sadece CPU'nun hiper-dişi olduğunu biliyor. İlgileniyorsanız, bununla ilgili daha fazla bilgi için Intel Core veri sayfasına bakın.
Atılım

@Bitthth Bu iyi bir topoloji olmaz çünkü bu, yalnızca 4 çekirdeği destekleyen saf bir işletim sisteminin yalnızca fiziksel çekirdeğin yarısını kullanarak kurulacağı anlamına gelirdi. Her fiziksel çekirdekten bir sanal çekirdek, herhangi bir fiziksel çekirdekten ikinci bir sanal çekirdek listelenmeden önce sanal çekirdek listesinde görünmelidir.
David Schwartz

@DavidSchwartz İyi topoloji veya değil, mantıksal işlemcilerin sayıları budur. Bu nedenle, eski işletim sistemlerinde (örneğin, Windows 2000 ve daha önceki sürümlerde) LP'leri fiziksel olarak işlemden geçiren çekirdekler ve fiziksel CPU paketlerine göre düzgün şekilde numaralandırmayan hiper-uçmayı devre dışı bırakmanız önerilmektedir.
Jamie Hanrahan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.