Hyper Threading w procesorze Intel Xeon E5420

+1 głos
wizyt: 662
Witam.

Pytanie z gatunku tych podchwytliwych, bo zaraz ktoś powie jakim cudem HT w procesorze, który tego nie obsługuje? Ano, natknąłem się na taki dziwny przypadek i zakładam tutaj wątek w nadziei, że ktoś może też się na coś takiego natknął i mi podpowie co zrobić.

Ale od początku, mam od jakiegoś czasu Xeona E5420. Procesor zamontowany jest w płycie LGA 775 za pomocą adaptera, bios ma wgrane mikrokody do LGA 771. Ogólnie poprawnie się wszystko wykrywa i działa łącznie z EIST czy wirtualizacją. Zacząłem trochę eksperymentować z ustawieniami w biosie, żeby sprawdzić możliwości procesora i oto co odkryłem. Kluczowa okazała się funkcja Limit CPUID MaxVal. Standardowo ustawiona na Disabled, powoduje że procesor wykrywa się jako czterordzeniowy, kiedy jednak włączyć tę funkcję na Enabled to procesor wykrywa się jako dwurdzeniowy procesor z obsługą HT. Pojawia się wówczas nowa opcja w biosie pozwalająca włączać i wyłączać to niby HT. Kiedy jest włączona, to system widzi pełne cztery rdzenie, a kiedy ją wyłączyć procesor staje się dwurdzeniowcem. Czy ktoś spotkał się z czymś takim i potrafi mi powiedzieć, którą opcję powinienem wybrać? Na logikę procesor powinien chyba być ustawiony jako cztery rdzenie, a nie dwa rdzenie fizyczne plus dwa pseudo-HT? Czy będzie jakaś różnica w wydajności w zależności od tych ustawień, czy zostawić na ustawieniach standardowych? Na koniec dodam tylko, że już zainstalowany system wydaje się działać w obu przypadkach bez problemów, natomiast nie mogłem zrobić czystej instalacji systemu, gdy procesor działał w tym trybie HT.
1 września 2014 w Procesory przez użytkownika Pirytion Poziom 5 (2,780)
   

2 odpowiedzi

+1 głos
 
Najlepsza odpowiedź
Dorzucę od siebie trzy grosze. Tak się bowiem składa, że też mam Xeona i to dokładnie ten sam model. Szczerze mówiąc, to nie bawiłem się za mocno z nim. Zależało mi na quadzie, a miałem dość słabego Pentium Dual Core, poza tym moja płyta nie pozwala na jakieś cuda overclockingu i zadowala mnie sama zmiana na jakby nie było całkiem wydajny procesor. Kupiłbym pewnie zwykłego quada LGA 775, ale dowiedziałem się o modzie LGA 771 na 775. Xeony są tańsze, a mają więcej cache'u, małe zapotrzebowanie na prąd i ogólnie to procesory serwerowe więc jest duża szansa, że nikt ich nie katował podkręcaniem tylko pracowały sobie na ustawieniach standardowych.

Ale do rzeczy. Sprawdziłem w biosie i u mnie także zmiana ustawień limitu CPUID uruchamia sztuczkę z HT. Z tego co wiem, to limit wartości CPUID powstał dla kompatybilności ze starymi systemami typu Win 95-98, które nie radzą sobie z wysoką wartością flagi CPUID którą zwracają nowe procesory, począwszy od Pentium 4 HT. Chodzi jedynie o to, żeby taki system poprawnie uruchomił się na takim procesorze. I tak nie wykorzysta jego możliwości, bo nie był z tą myślą projektowany. Natomiast nowsze systemy, zdaje się od XP już tak, choć tutaj dobrze działają co najwyżej procesory dwurdzeniowe, a z quadami zaczyna się problem. Więc, powiedzmy że nowsze systemy od Visty wzwyż już sobie poprawnie z tą technologią radzą.

Wracając jednak do sedna: Xeon o którym mowa ma cztery rdzenie. Nie ma więc sensu oszukiwać system co do wsparcia HT, skoro każdy rdzeń jest faktycznie fizycznie obecny i system nie musi się zastanawiać na którym z nich odpalić jakiś proces. Jeśli tylko dany rdzeń jest wolny, to w czym problem? Może być zresztą nawet zajęty. W końcu idea wielozadaniowości systemów polega na tym, że procesor dostaje do wykonania jakiś kod programu, po czym po iluś cyklach jest wywłaszczany i rozpoczyna się wykonanie innego programu. Gdyby tak nie było, to jak na starych procesorach jednordzeniowych działałyby jednocześnie różne programy typu winamp i przeglądarka internetowa. Jedyny problem to optymalizacja na jaki rdzeń przydzielić aktualnie jakie zadanie, ale nie ma się co oszukiwać, nawet współczesne systemy są dość tępe jeśli o to chodzi i z uporem maniaka, dzielą zadania równo na wszystkie rdzenie. Prowadzi to do sytuacji, że dajmy na to odpalasz cztery programy, ale nie jest tak że każdy działa sobie na osobnym rdzeniu, tylko dzielą się one rdzeniami w zależności od ich obciążenia. Może to obniżać wydajność, gdy dany program nie był pisany na procesory wielordzeniowe, tylko potrafi korzystać z jednego. Wtedy dobrze jest odpalić menedźer zadań i ręcznie ustawić koligację oddzielnie dla każdego programu.

Na sam koniec napiszę, że sprawdzałem wydajność mojego Xeona w Cinebenchu R15 w zależności od tego jak ustawiona była flaga CPUID Maxval i nie było jakichś wyraźnych różnic, a jedynie pomijalne, w granicy błędu. Moja rada jest więc taka: nie grzebać w ustawieniach, które potencjalnie mogą tylko napsuć, a nie pomóc i zostawić w biosie ustawienia standardowe. Niech sobie Xeon będzie czterordzeniowcem jak należy, a nie kombinowanym HT z powietrza. Samo włożenie go w płytę LGA 775 może potencjalnie być przyczyną kłopotów, więc po co jeszcze ich dokładać.
odpowiedź 2 września 2014 przez użytkownika phillosoff Poziom 10 (166,910)
wybrane 24 listopada 2014 przez użytkownika Pirytion
No właśnie myślałem, że będą jakieś większe różnice w wydajności, może że to włączone HT sprawi że system coś tam będzie inaczej robić, jakaś optymalizacja się pojawi czy coś. Ale skoro nic to nie zmienia, a jeśli już to na gorsze to szkoda. W pierwszej chwili jak zobaczyłem że mi się to HT włączyło to myślałem, że ten procesor ma 8 wątków. Ale potem doszedłem, że nie i każdy program typu CPUID mi wyświetla, że HT nie jest wspierane, no to już nie wiedziałem co myśleć. Zmienia się coś, czy nie zmienia, w końcu po coś ta funkcja jest w biosie. Jak jest tylko dla zachowania zgodności to lipa, bo to raczej w niczym temu procesorowi nie pomoże. Ech, że też musiałem się natknąć na to, bo teraz mnie to zastanawia może niepotrzebnie.
To zamiast się zastanawiać zainstaluj Cinebencha, potem zrób testy i daj znać jakie masz wyniki. Obstawiam, że nic Ci to HT nie da.
Zrobiłem testy w tym Cinebenchu R15 i okazało się, że po zmianie ustawień na HT wynik spadł z 277 do 271 punktów. Pomyślałem że spadek nie jest duży, ale jest, więc przełączyłem ustawienie z powrotem na to standardowe i sprawdziłem ponownie i wynik był 268. No to sobie myślę, że to tylko jakieś zmiany losowe dla różnych pomiarów, a nie coś konkretnego. Tak więc miałeś rację z tym, że ta opcja nie powoduje jakiś ważnych zmian w wydajności, więc zostanę przy standardowych ustawieniach.

Tak więc dzięki i temat zamykam.
0 głosów
Nie baw sie :) Tak to jest ze wsparciem procesorow, ktore maja beta-BIOS, czy modyfikowany specjalnie na potrzeby 771->775. Jesli ustawisz sobie jeden bit (flage) w procesorze, to nie znaczy, ze procesor nabedzie cudownych wlasciwosci, tylko plyta bedzie "tlumaczyc" takie ustawienia na sposob i do ustawien wlasciwych fizycznie procesora, ktorego instalka Windowsa wlasnie nie ugryzie:

http://stackoverflow.com/questions/10436013/why-does-hyper-threading-get-reported-as-supported-on-processors-without-it

To, ze teraz nie dziala tylko instalka Windowsa - nie znaczy, ze w przyszlosci nie odkryjesz kilku nastepnych 'Niedzialaczy", ale wowczas - jesli akurat trafi Ci sie, ze system zaliczy BSODa,a w pamieci beda niezapisane dane z dlugogodzinnej pracy, to zrozumiesz, o co biega z dopasowywaniem funkcji procesora do jego mozliwych i wspieranych funkcji :)
odpowiedź 1 września 2014 przez użytkownika jeomax.co.uk Poziom 11 (475,040)
edycja 1 września 2014 przez użytkownika jeomax.co.uk
Rozumiem, że jest to sposób wyboru tłumaczenia systemowi z jakim procesorem ma do czynienia. Wiem, że procesor nie nabędzie w sposób magiczny funkcji, których nie posiada. Chodzi mi raczej o to jak te ustawienia interpretuje system. Czytałem gdzieś, że systemy optymalizowane pod HT inaczej traktują logiczne procesory, a inaczej fizyczne rdzenie. Jeśli dajmy na to, procesor ma dwa rdzenie i cztery wątki, a ma wykonać dwa równoległe zadania, to lepiej jest jeśli trafią one na dwa fizyczne rdzenie, a nie na rdzeń fizyczny i jego odpowiednik logiczny jaki daje HT, bo wtedy zadanie faktycznie wykona jeden fizyczny rdzeń zamiast dostępnych dwóch. I tutaj rodzi się pytanie, czy to obejście jakie stosuje płyta z tym HT dla Xeona ma jakieś negatywne odbicie na takich sprawach jak optymalizacja wątkowa? W końcu procesor ma te cztery rdzenie tak czy siak, pytanie tylko czy jeśli system myśli że dwa z nich to rdzenie HT, to ma to jakiś wpływ na wydajność?
"systemy optymalizowane pod HT"

A konkretnie to o jakim systemie mowisz - i to jeszcze o takim, ktorego posiadasz i uzywasz ? :)

Logicznie tez domkne petle, z ktorej wyjsc nie mozesz. Piszesz, ze w przypadku systemow HT lepiej, jak zadania trafia na fizyczne rdzenie, niz logiczne. No a w przypadku systemow nie-HT jak jest ? Jest dokladnie tak samo. Wiec obojetne, ktorego typu systemu uzywasz, lepiej "wrzucac" zadania na fizyczny rdzen. Mozesz sobie potestowac roznice w roznych srodowiskach, chwala Ci za to i mozesz potem opisac swoje dowiadczenia w Mini-Recenzjach (teraz to na bloga przemianowali) i jesli odkryjesz cos, poza ewentualna niekompatybilnoscia dowolnego rodzaju - bedziesz pionierem :) Ja osobiscie nie sadze, zeby na tym polu mozna bylo cos odkryc pozytywnego, ale pewnie to dlatego, ze nie mam takiego sprzetu i wolnego czasu na zmarnowanie.
Ok napiszę dokładniej o co mi chodzi. Z informacji do których dotarłem wynika, że systemy, które nie są HT-aware, czyli te sprzed wprowadzenia Pentium 4 HT  traktują procesor typu HT tak, jakby miał on tyle fizycznych rdzeni co wątków. Natomiast nowsze systemy "wiedzą" które rdzenie systemu to faktyczne rdzenie fizyczne, a które to rdzenie logiczne. Pozwala to na bardziej optymalne przydzielanie wykonania konkretnych kawałków kodu przez menedżera procesów w celu uniknięcia sytuacji, w której dwa intensywnie wykorzystujące procesor zadania zostaną w tym samym czasie przydzielone na ten sam rdzeń (co może się stać jeśli system nie wie, że dane dwa procesory logiczne to de facto ten sam rdzeń fizyczny tylko HT).

Stąd się bierze moje pytanie: skoro menedżer procesów w praktycznie każdym nowym systemie potrafi wykorzystać potencjał rdzenia HT w możliwie optymalny sposób, to znaczy że musi on być zaprojektowany tak by inaczej działać na procesorze w pełni czterordzeniowym, a inaczej na dwurdzeniowym  z HT. Zadając pytanie miałem nadzieję, że znajdzie się ktoś kto zna ten aspekt i potrafi mi powiedzieć, czy te różnice faktycznie są zauważalne czy pomijalne i nie należy się tym przejmować w moim przypadku. Czyli podsumowując, czy zmiana ustawień w biosie o których pisałem przełoży się na jakieś zmiany wydajnościowe, czy też jedynie na stabilność systemu.
> Stąd się bierze moje pytanie: skoro menedżer procesów w praktycznie każdym nowym systemie potrafi wykorzystać potencjał rdzenia HT w możliwie optymalny sposób, to znaczy że musi on być zaprojektowany tak by inaczej działać na procesorze w pełni czterordzeniowym, a inaczej na dwurdzeniowym  z HT.

Caly czas piszesz o HT, ale zapominasz, ze zaleta HT jest jego dolozenie do zwyklego rdzenia, a nie zastapienie fizycznym rdzeniem - co mijaloby sie z celem, co Ty wlasnie probujesz dokleic do swoich pytan.
Nie znam sie na optymalizacji SMT w przypadku HT, niemniej posiadajac ogolna wiedze n/t procesorow mozna domniemywac, czym taka optymalizacja mialaby sie z grubsza wyrozniac - z pewnoscia omijalaby wspoldzielone skladniki procesora, jak np. cache - w tych przypadkach, gdzie odwolania do nich powodowalyby tylko niepotrzebny przestoj, gdy akurat korzysta z nich fizyczny rdzen; skoro tak - to wykorzystanie takiej techniki na Xeonie z niby wlaczonym HT dawaloby rezultat gorszy, nizby na Xeonie 4-rdzeniowym bez HT. Przejrzyj link, ktory podalem - tam bedziesz mial kolejny link do video developerskiego Intela, gdzie inzynier mowi wprost, ze kazdy fizyczny, pelny rdzen bedzie lepszy od tego dodatku zwanego HT - i to sie tyczy obojetne, czy Intela obecnie, czy AMD. Tak wiec obojetne, jaka optymalizacje sobie wrzucisz na rdzen+HT, nigdy nie otrzymasz 100% wydajnosci dwoch rdzeni bez HT. Mozesz zrobic test w Cinebenchu i zobaczyc, jaka jest roznica pomiedzy dwoma ustawieniami bitu w procesorze i miec jasnosc - jesli roznica bedzie w granicach bledu to znaczy, ze de facto ustawienie tego bitu to tylko kosmetyczna fikcja, a jesli roznica bedzie wieksza - to znaczy, ze owa "optymalizacja HT" dziala dokladnie tak, jak pisalem wyzej, bo pozbawia rdzenia z niby HT tego, co tak naprawde to emulowane HT posiada.
Kurcze mam wrażenie, że się nie rozumiemy:

"Caly czas piszesz o HT, ale zapominasz, ze zaleta HT jest jego dolozenie do zwyklego rdzenia, a nie zastapienie fizycznym rdzeniem - co mijaloby sie z celem, co Ty wlasnie probujesz dokleic do swoich pytan"

nie wiem co masz na myśli przez zastąpienie rdzenia HT fizycznym rdzeniem. Mnie chodzi tylko o to, czy traktowanie rdzenia fizycznego przez system jako rdzenia HT coś zmienia? Wiem, że mam fizyczne cztery rdzenie, i że gdybym miał dwa z HT to by nie było to samo, tylko gorzej.

Dobra nie będę już dłużej drążyć tego tematu, bo im więcej dostaję od Ciebie odpowiedzi tym bardziej mi się to wszystko miesza. Chyba zostanę przy ustawieniach  standardowych jak radzi phillosoff. Skoro różnice są bardzo małe miedzy tymi dwoma opcjami w biosie, to nie będę mieszał i ryzykował że coś się popsuje.

Poczekam jeszcze, może ktoś jeszcze coś dorzuci, ale coś mi się zdaje że już się więcej nie dowiem, skoro na mój problem odpisało dwóch z najlepszej trójki użytkowników poradnika, a nadal mam wrażenie że nie do końca się dowiedziałem tego co chciałem. Może nie umiem tego o co mi chodzi jakoś lepiej napisać.

Może jeszcze na koniec taka jedna mała uwaga, która mi przyszła do głowy: skoro nie można zainstalować systemu przy ustawieniu na HT, to coś ta opcja jednak musi zmieniać w systemie. To by mogło wskazywać, że system procesory z HT traktuje inaczej: musi być w nich coś takiego, że jak system myśli, że ma do czynienia z prockiem HT a tak nie jest to nie można ukończyć instalacji. Choć może tu nie ma żadnej większej tajemnicy: po prostu rdzeń HT jest bardziej rozbudowany od zwykłego i system oczekuje jakichś elementów których normalne rdzenie nie posiadają.
Systemowi jest wszystko jedno, czy rdzen jest "zwykly", czy z HT - bo w dobie systemow SMP liczy sie sztuka, jak to mawiaja w wojsku, a ilosc takich sztuk dla systemu jest obojetna. Bedzie widac w kazdym menedzerze zasobow osobny logiczny "procesor" (rozna ilosc dla obu przypadkow) wraz z jego wykorzystaniem i tyle, systemowi to wisi, ze w przypadku sprzetu HT wspolzaleznosc wykorzystania jest inna, niz przy sprzetach bez HT, czy tez wydajnosc bedzie calkiem inna. Tak wiec odpowiadajac na pytanie

> Mnie chodzi tylko o to, czy traktowanie rdzenia fizycznego przez system jako rdzenia HT coś zmienia?

odpowiedz moze byc tylko jedna: tak - zmieni ilosc logicznych "procesorow" dostepnych w systemie SMT przeznaczonych do tego, do czego zostaly one stworzone, czyli do liczenia.
Natomiast w Twoim przypadku - gdy chodzi o traktowanie DWOCH RDZENI jako jednego rdzenia z HT - to opisalem w odpowiedzi powyzej: sprawdz na przykladzie Cinebencha, to bedziesz wiedzial, czy system i OS traktuja taka zamianke powaznie, czy nie - a jesli tak, to jaka bedzie roznica.

> po prostu rdzeń HT jest bardziej rozbudowany od zwykłego i system oczekuje jakichś elementów których normalne rdzenie nie posiadają.

Tak i nie. Rdzen z HT jest nieco bardziej rozbudowany od zwyklego, ale jest rozbudowany jedynie o istniejace niektore elementy - w sensie powielenia. Natomiast juz tutaj - w drugiej czesci zdania - brniesz w owa zamiane rdzenia HT zwyklym rdzeniem, ktore ja zreferowalem:
"Caly czas piszesz o HT, ale zapominasz, ze zaleta HT jest jego dolozenie do zwyklego rdzenia, a nie zastapienie fizycznym rdzeniem"
i wynika to ze zjechania Twojego tematu na rdzenie HT sensu stricte. A nie o to przeciez chodzi, tylko o Twoj *konkretny* przypadek, gdzie DWA ZWYKLE RDZENIE zastepujesz (opcja w BIOSie) jednym rdzeniem z HT [o niewiadomej jakosci dzialania - dodajmy]. Wiec w tym sensie juz chyba zrozumiale bedzie dla Ciebie, ze w takim przypadku - i zadnym innym, bo rozmawiamy przeciez o Twojej sprawie - rdzen z HT (emulowany - ze sie tak wyraze) bedzie mial dokladnie wszystkie wlasciwe zasoby (ktore opisujesz jako "jakichs elementow"), jako ze "emulowac" je beda dwa rdzenie wyposazone lacznie we wszystkie te elementy, a nawet wiecej.
I cos mi sie wydaje, ze najpewniej dlatego miales metlik w glowie, bo nie miesza sie razem dwoch rzeczy: sprawy rdzenia kontra rdzen HT, oraz Twojej sprawy dwoch rdzeni kontra rdzen HT.

W ten sposob dochodze do dokladnie pierwszego zdania mojej odpowiedzi, ktore mialo delikatnie wskazywac, ze nie warto zastanawiac sie nad roznicami CPUIDMaxVal, bo te moga byc tylko na minus w stosunku do standardowego dzialania systemu "by default". Nawiasem mowiac - mialem kiedys C2D E6750 i bawiac sie plyta Asus Striker II Extreme - z potwornie rozbudowanym BIOSem - chyba tez wspominam, ze HT chwilowo mi sie pojawilo w systemie :)
...