Bir programcının hiper iş parçacığının kapatılmasını istemesi için hangi nedenleri olabilir?


13

Şirketim eski 2GB Windows XP makinelerini değiştirmek için yeni bilgisayarlar satın aldı. Ekibimdeki biri hiper iş parçacığı devre dışı bırakıldıklarını fark etti ve herkese yeniden başlatmasını ve açmasını söyledi. Hiper iş parçacığı devre dışı bırakılmış bir makinede programlama yapmanın bir yararı var mı?


1
Hangi model Intel CPU'ları kullanıyorsunuz, örneğin Core i5 veya i7?
JB King

@JBK Güzel soru, bilmiyorum, bu makinelerden biri bende yok.
Pops

Eski bir Pentium 4 dizüstü bilgisayarda, ısı ve fan gürültüsünü azaltmak ve belki de pilin birkaç dakika daha dayanmasını sağlamak için. Sorumun cevabı değil çünkü gereken bir antik tarih şey olabilir ve sizin için geçerli olmamalıdır.
Steve314

Lucasarts oyunu Grim Fandango hiper iş parçacığı ile çalışırken ses motoru bir yarış koşulu içine koştu.

Yanıtlar:


14

Evet, HT devre dışı bir makinede çalışırken daha iyi performans gösteren bir uygulama üzerinde çalıştım .

Olan şey, orijinal kodun bir hiper iş parçacıklı makinede çalıştırıldığında iş parçacıklarından iki kat daha fazla oluşturmasıydı (ki bu da HT'nin bütün noktasıdır). Ancak, bu iş parçacıklarının verimi iş parçacığının kullanabileceği önbellek miktarına çok duyarlıdır. Sabit bir önbellek miktarı için iki kat daha fazla iş parçacığı ile mücadele ederken, iş parçacığı başına kullanılabilir önbellek çok düşüktü ve daralma meydana geldi: daha fazla önbellek özlüyor, daha fazla ana bellek erişimi yüklüyor ve performans, iş parçacığı başına daha az iş parçacığı ve daha fazla önbellek (uygulamayı HT devre dışı bırakılmış bir makinede çalıştırdıysanız aldığınız şeydir).

Nihai düzeltme, uygulamanın HW platformunu daha iyi kontrol etmesini ve kaç tane iş parçacığı oluşturulacağına karar verirken önbellek boyutlarını ve iş parçacığı başına gereken önbellek miktarını dikkate almasını sağlamaktı. Her halükarda, sorun önbellek boyutunu iki katına çıkaran sonraki nesil CPU'larla hızla ortadan kayboldu (ve aslında HT'den mütevazı bir fayda görmeye başladık). Bununla birlikte, tüm bölüm , SW'nin çalıştırıldığı herhangi bir platformda HT'nin her zaman devre dışı bırakılmasını uzun ve kalıcı bir miras bıraktı ve herhangi bir performans sorununa " makinenin HT'yi etkinleştirmedi mi? " (Bence temel sorun geek olmayanların çoğu HT'nin gerçekte ne olduğunu anlamıyor.)


11

Teknik ayrıntıları bilmiyorum, ancak görünüşe göre bir uygulama (veya işletim sistemi) hiper iş parçacığı için optimize edilmemişse, hiper iş parçacığı aslında performansı düşürebilir .

Intel bile bu durumda kapatılmasını önerir:

Aşağıdaki masaüstü işletim sistemlerinin Hyper-Threading Teknolojisi ile kullanılması önerilmez. Aşağıdaki masaüstü işletim sistemlerinden birini kullanıyorsanız, sistem BIOS Kurulum programında Hyper-Threading Teknolojisini devre dışı bırakmanız önerilir: [...]

(Kaynak: http://www.intel.com/support/processors/sb/CS-017343.htm )

Bu yüzden belki üretici (veya tedarikçi) dikkatli olmak istedi.


Bazı oyunların hiper iş parçacığının devre dışı bırakıldığından daha yavaş çalıştığı da bilinmektedir.
Klaim

4
İşyerinde oynanan oyunların performansı hakkında endişe duymaları ilginç olurdu.
dietbuddha

Çok çekirdekli bir sistemde, aynı çekirdek üzerindeki iki hiper iş parçacığına iki iş parçacığı atanabilir, böylece diğer tüm çekirdekler boşta kalır ve her iş parçacığını farklı bir çekirdeğe yerleştirmekten çok daha az performans sağlar. İşletim sistemleri aynı çekirdek üzerindeki farklı bir çekirdek ile farklı
hipermetreler

1
@ Steve314: Windows2000'de durum böyleydi (ve HT'yi devre dışı bırakmak, bunu çalıştırıyorsanız kesinlikle iyi bir fikirdi), ancak Windows XP'nin HT farkında olması gerekiyordu (bkz. Download.microsoft.com/download/5/7/ 7 /… ) ve böyle bir tuzağa düşmemeliyiz. Çekirdeğin bazı sürümlerinden Linux'a benzer mantığın yerleştirildiğini varsayıyorum.
timday

6

Muhtemelen, OEM sadece muhafazakartı. OEM'ler genellikle gelişmiş featuers devre dışı (HT, No-Execute bit, vt, vb.) Kapalı olarak gönderilir. Bunun nedeni, bazı nadir durumların bu ayarların başarısız olmasına neden olabilir ve aslında özellikleri isteyen insanlar bunları kolayca açabilir.

Ayrıca, işletim sistemlerindeki bazı nadir hatalar, bazı özellikler etkinleştirildiğinde potansiyel güvenlik sorunlarına yol açmıştır. Örneğin sanallaştırma teknolojisinin bir zamanlar böyle bir sorunu vardı. Yani, sadece satıcı muhafazakar.

Hiper iş parçacığı genellikle programlama makineleri gibi etkileşimli masaüstü bilgisayarlar için kullanışlıdır. Bununla birlikte, bazılarınız uygulamalarınız HT olmayan sunucularda çalışacaksa bunu kapatmak isteyebilir. Sadece potansiyel donanım farklılıklarını azaltmak için.


2
HT kapalı olarak gelen makineler için bu neredeyse her zaman geçerlidir. Maksimum uyumluluk ve satıcıyı tuhaf destek çağrılarından kurtarır.
Patrick Hughes

5

Hiper iş parçacığı CPU'ya yeni çekirdekler eklemez. Hala çekirdek başına bir aritmetik / mantık biriminiz, bir kayan nokta biriminiz (...) var. Bu nedenle, çok farklı şeyler yapan birden fazla iş parçacınız / işleminiz varsa, HTT performansı artırabilir. Ancak, az çok aynı şeyleri yapan çok sayıda iş parçacığınız varsa (sayı kırma uygulamalarında nadir değildir), performans aslında HTT'den kötü etkilenebilir.


2

Belki çok büyük iş parçacıklı kodda önbellek tutarlılığı sorunları olabilir? Ayrık CPU önbellekleriniz varsa, iki iş parçacığının aynı verileri önbelleğe alması ve aynı anda farklı değerlerle değiştirmesi teorik olarak mümkündür. CPU'lar ve ana bellek (L2 veya L3) arasında bir noktada birleşik bir önbelleğe sahipseniz, muhtemelen bunu önleyecek bazı mekanizmalar vardır, ancak daha küçük önbelleklere sahip alt uç CPU'larda olabilir.

Alternatif olarak, desteklemeyen yongalarda hiper iş parçacığın etkinleştirilmesinin POST sırasında bir kod atması mümkün olabilir, bu nedenle BIOS tedarikçisi sadece sistemin ne tür bir CPU'ya sahip olacağını bilmediği için onu bırakır.


Benim tahminim - bu tutarlılık sorununu çözmek için bir mekanizma var, ancak önemli bir performans cezası olabilir. IIRC, belirli bir bellek sayfası herhangi bir önbellek sayfasına serbestçe yüklenemez - tipik olarak bu birkaç sayfalık bir adrese eşleme mekanizması vardır. Belki iki iş parçacığının birkaç önbellek sayfası üzerinde savaşması ve geri kalanının kullanılmaması mümkündür. (belki de çok çekirdekli olsa bile, muhtemelen daha az riskle).
Steve314

0

Bunun bir nedeni olmayan bir geliştirici makinesinde hyperthreading kapatmak için bazı ince çoklu iş parçacığı hataları gizlemek olabilmesidir. Ancak bu yalnızca tek çekirdekli tek işlemcili bir makine için geçerlidir. Çok çekirdekli, test sırasında daha fazla çok iş parçacıklı hata ortaya çıkarır.

OTOH, varsayılan olarak hiper iş parçacığının devre dışı bırakıldığı tek çekirdekli bir işlemci göreceğinizden şüpheliyim. Oyum Sleskes cevabı.


0

Çok sayıda eski yazılım tek çekirdekli makinelerde yazılmıştır ve çok çekirdekli bir makinede çalışırken hatalar olmuş olabilir. Muhtemelen talimat gerçekten "Bu çok çekirdekli makinelerde işe yaramaz" demekti, sadece uzun süre ortak kullanımda göreceğiniz tek olası çok çekirdekli makineydi.

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.