Czy można wpływać na sposób wyliczania procesorów w systemie Linux?

32

Mam HP DL380 G7 z 2 niedopasowanymi procesorami. Jeden to czterordzeniowy procesor z szybszymi rdzeniami, a drugi to 6-rdzeniowy procesor z wolniejszymi rdzeniami.

Na tym polu uruchamiam aplikację, która ze względów licencyjnych będzie używać tylko CPU0-CPU3.

Dla mnie pożądane byłoby, aby szybsze rdzenie czterordzeniowego procesora wyliczały CPU0-CPU3 w systemie operacyjnym, co daje mi premię za wydajność za a) używanie szybszych taktowanych rdzeni oraz b) utrzymywanie wszystkich wątków na tym samym fizycznym procesorze .

Czy istnieje sposób, aby tak się stało, albo w systemie BIOS, albo w pliku konfiguracyjnym lub opcji rozruchu w systemie Linux?

Konkretne modele procesorów to:

Procesor Intel (R) Xeon (E) E5649 @ 2,53 GHz (rdzeń sześciokątny)

Procesor Intel (R) Xeon (E) E5640 @ 2,67 GHz (czterordzeniowy)

paulos
źródło
Proszę zamieścić konkretne modele procesorów z cat /proc/cpuinfo.
ewwhite
24
Awansowanie, bo nawet nie wiedziałem, że możliwe są nierówne procesory, zawsze czegoś nowego do nauczenia ...
Kyle Brandt
2
@kyle jest to możliwe, ale nie jest obsługiwane ani wspierane przez HP.
ewwhite
1
@kasperd W HP-land, jeśli załadujesz dwa procesory o różnych krokach, pojawi się CPU mismatch detectedbłąd podczas testu POST. Może się to zdarzyć w trakcie generacji procesora; np. Intel 5606 i 5690 w tej samej obudowie.
ewwhite
3
Jeśli ktoś jest zainteresowany tym, co właściwie tutaj zrobiliśmy, odbyliśmy podróż do centrum danych i fizycznie usunęliśmy czterordzeniowy procesor z serwerów
paulos

Odpowiedzi:

27

Wut?!?

To szalone , wiesz? To nie jest obsługiwane i prawdopodobnie nie jest dobre dla twojego sprzętu. Powinieneś używać procesorów o takiej samej specyfikacji na swoim serwerze.

Podejrzewam, że po prostu uruchamiasz swoją aplikację w grupie lub tarczy (lub za pośrednictwem taskset), która zawiera tylko rdzenie procesora, których chcesz użyć. Możesz także przypiąć dostęp do pamięci do tego procesora za pomocą numactl. Ale tak naprawdę, dlaczego nie usunąłbyś całkowicie wolniejszego procesora lub nie zapłaciłby tyle, ile potrzeba, aby wprowadzić system do specyfikacji.

Być może oczywistą rzeczą, jeśli twoja aplikacja jest zakodowana na stałe do użycia CPU0-CPU3, jest fizyczna zamiana gniazd ... ale tak naprawdę, po prostu uruchom tutaj z jednym CPU.

Jeśli chodzi o sprzęt ProLiant DL380 G7, „szybszy” procesor to prawdopodobnie procesor Nehalem serii 5500, a wolniejszy sześciordzeniowy procesor to Westmere. Czy w ogóle przeprowadziłeś testy? Jakie konkretne procesory są zainstalowane?

Edytować:

Okej, więc są to przynajmniej procesory tej samej generacji / stopniowania. Ale wciąż jest to zły pomysł ... Różnica w specyfikacji procesora nie jest nawet tak duża (w porównaniu do czegoś takiego jak Intel X5690 przy 3,47 GHz).

ewwhite
źródło
4
Każdy ma taką samą reakcję! Wiem, że idealnie byłoby, gdyby procesory były takie same, ale to właśnie HP dało nam w ciągu dnia. To jest ręka, którą dostałem, więc muszę zrobić z niej wszystko, dopóki nie nadejdzie następne odświeżenie sprzętu. Procesory to Xeon E5649 @ 2,53 GHz (rdzeń sześciokątny) i E5640 @ 2,67 GHz (czterordzeniowy). Całkowite usunięcie 6-rdzeniowego procesora jest właściwie jedną z opcji na stole. Byłoby fajniej móc całkowicie wyłączyć gniazdo w BIOS-ie, ale nie wydaje się to możliwe.
paulos
@paulos Co to za aplikacja?
ewwhite
W rzeczywistości działa jako zapora ogniowa
paulos
3
@paulos Dlaczego więc 2,67 GHz w porównaniu do 2,53 GHz ma znaczenie? Wystarczy umieścić 6-rdzeniowy procesor na serwerze i usunąć 4-rdzeniowy.
ewwhite
re: specyfikacja procesora, tak, myślę, że to tylko około 5% szybciej lub coś w tym rodzaju. Oczekuję, że wzrost wydajności zostanie przypisany temu, że wszystkie wątki robocze, aw szczególności sztorm irq z kart sieciowych znajdujących się na tym samym fizycznym procesorze. edycja: Tak, tylko przy użyciu 6-rdzeniowego procesora jest również możliwa.
paulos