Uwagi na temat wyboru procesorów AMD zamiast Intela


13

Pracuję dla firmy z wieloma starszymi aplikacjami internetowymi LAMP, w których staramy się odświeżyć nasz sprzęt z ~ 250 fizycznych serwerów do ~ 40 nowych serwerów z wirtualizacją. Otrzymaliśmy dwa zapytania od dostawców - jeden sugeruje procesory Intel, drugi AMD.

Jedną z rzeczy, które podoba mi się w przypadku dużej liczby rdzeni w AMD, jest to, że będziemy mogli dedykować rdzenie maszynom wirtualnym, co oznacza, że ​​mamy mniejszą szansę na interakcje między aplikacjami ze względu na skoki, co w pewnym stopniu jest większe ważne dla mnie niż szczytowa wydajność.

Inne rozważania, które mam na myśli, to:

  • Pobór mocy może być inny (w naszym przypadku nie stanowi to problemu).
  • Instrukcje procesora, takie jak CRC32 (SSE 4.2), nie będą obsługiwane (Edycja: MySQL 5.6 wydaje się obsługiwać SSE4.2. Nie jestem pewien co do Apache)
  • MySQL nie skaluje się idealnie po rdzeniach ~ 16 / ~ 32 (jestem gotów zaakceptować ten kompromis).

Jakie inne uwagi mi brakuje?

(Uwaga dla moderatorów: Znam ten wątek - uważam, że pytanie jest nieco inne).


Edycja: Załóżmy, że zadania są wyjątkowo równoległe (serwery WWW) i że nie dbam o to, aby serwery baz danych nie były tak równoległe.



Jeśli twoja aplikacja może dzielić zapytania do odczytu / zapisu na różne pule serwerów, możesz być w stanie obejść niektóre problemy z wydajnością MySQL, uruchamiając drugą instancję do odczytu podrzędnego. Nie wiem wystarczająco dużo o twojej architekturze lub obciążeniu pracą, aby wiedzieć, czy jest to praktyczny pomysł, czy może to po prostu dodać mnóstwo niepotrzebnych kosztów ogólnych i złożoności, ale jest to opcja do rozważenia.
jgoldschrafe

Wiem, jak działa podział na odczyt / zapis. W tym przypadku nie nadaje się do zwiększenia wydajności.
Morgan Tocker

Odpowiedzi:


10

Pojawiła się duża presja na temat najnowszej oferty procesorów AMD, zwanej Bulldozer. Wersja „Serwerowa” tej części nie jest jeszcze dostępna, ale oferta komputerowa jest świetnym widokiem na niektóre potencjalne problemy nowych rzeczy.

Jeśli chodzi o obecną generację części serwerowej, w sumie zalecenie jest dość dobre na poziomie ogólnym. Obsługa stron internetowych i (większość) baz danych jest w dużej mierze oparta na liczbach całkowitych, a procesory AMD dobrze sobie radzą z obliczeniami na liczbach całkowitych. Ponadto serwowanie stron internetowych jest (ogólnie) problemem, który można bardzo zrównoleglać. AMD koncentruje się raczej na „wielu rdzeniach sprawia, że ​​praca jest szybsza”, a LAMP (znowu ogólnie) zazwyczaj dobrze na to reaguje.

Jednym z obszarów, na który naprawdę należy zwrócić uwagę, są zależności jednowątkowe w aplikacjach. Części AMD nie skalują się tak daleko, jak części Intela, więc procesy, które są zasadniczo jednowątkowe, mogą wąskie gardło całego systemu znacznie szybciej niż na szybszych procesorach. Tylko Ty wiesz, czy dotyczy to Ciebie, czy nie. Niektóre operacje na bazach danych mogą być lepiej obsługiwane przez szybsze procesory Intel z mniejszą liczbą rdzeni, tak aby te kilka grubych wątków mogło naprawdę krzyczeć.

Znaczenie ma również kod aplikacji. Niektóre długotrwałe procesy serwera WWW mogą pochłaniać dużo czasu w jednym wątku, a także wymagają szybszego zegara. Można to rozwiązać poprzez przepisanie potrzeby tego długiego procesu, ale do tego czasu fajny byłby szybszy zegar.

Ale ogólnie rzecz biorąc, w przypadku obciążeń w stylu dużo-o-serwer-serwer vm te 12-rdzeniowe części mogą być skalowane dość cholernie daleko. Jeśli napotkasz problemy z jednym wątkiem, pójście z wyższymi taktami 8-rdzeniowymi częściami byłoby akceptowalnym kompromisem.


Dzięki, niestety system AMD nie będzie buldożerem. To AMD Opteron 6140 (lub podobny).
Morgan Tocker

@MorganTocker Tak się składa, że ​​znam tę klasę procesorów i właśnie dla tego napisałem swój post. Buldożer ma pewne specyficzne problemy, w które nie wpadłem.
sysadmin1138

4

W większości przypadków oba procesory są bardzo porównywalne. Procesory AMD mają niewielką przewagę prędkości RAM (zwykle) z powodu czwartego kanału. Procesory Intel mają na ogół niższy CPI (być może nawet większy w przypadku HT , choć w dużym stopniu zależy to od obciążenia). AMD są ogólnie tańsze.

Większość z tych czynników daje przewagę jednej lub drugiej, w zależności od obciążenia pracą. Żadne z nich nie będzie znacznie gorsze od innych (przy założeniu rozsądnych konfiguracji i mniej więcej równej CapEx).


2

Należy wziąć pod uwagę różnice w wydajności, które może przynieść odmienna architektura pamięci RAM, i czy jest to decydujący czynnik dla organizacji.

Na marginesie, chociaż możesz nie być zaniepokojony maksymalną wydajnością, jeśli twoja maszyna wirtualna nie będzie miała wielu rdzeni i / lub konkretne zadania wewnątrz są jednowątkowe, istnieje znaczna przewaga wydajności w intelach na rdzeń niż AMD, nawet jeśli całkowita liczba rdzeni jest mniejsza.


Załóżmy, że nasze aplikacje są odpowiednio wielowątkowe (serwery WWW; chętnie przyjmą do wiadomości, że MySQL nie jest całkowicie).
Morgan Tocker

2

Główną różnicą jest podejście; w średnim zakresie AMD kładzie niewielki nacisk na rdzenie w części, która kosztuje mniej więcej tyle samo, co w przypadku części Intel. Część Intela będzie miała mniej rdzeni taktowanych wyżej.

Tak więc w przypadku zwirtualizowanych obciążeń aplikacji internetowych prawdopodobnie będziesz preferować systemy AMD.

Chyba że istnieje duża różnica cen, nie martwiłbym się o dolary. Spojrzałbym bardziej na podsystem IO. Ponadto całkowity koszt posiadania na 40 serwerach będzie obejmował głównie wsparcie, licencje na oprogramowanie, jeśli w ogóle, i personel, prawdopodobnie nie same serwery.

Co najmniej musisz wyświadczyć sobie przysługę, przyciągnąć obu dostawców i uruchomić systemy na ich sprzęcie, zanim zaangażujesz się na 40 serwerach z jednego z nich. Tylko Ty możesz poprawnie odpowiedzieć na pytanie dotyczące konkretnego obciążenia.


Dziękuję za Twoją odpowiedź! Nie mamy jednego obciążenia - mamy kilka. Aby więc pozyskać dostawcę, musieliśmy przeprowadzić pełną migrację, a następnie przeprowadzić migrację ponownie, aby wypróbować oba rozwiązania. Zdaję sobie sprawę, że jest to optymalne, w naszym przypadku po prostu nie jest praktyczne. Możemy wybrać mniejszą liczbę ról do przeniesienia i projektu, ale aby to zrobić, musimy wiedzieć, co powinniśmy mierzyć / na co uważać; stąd moje pytanie;)
Morgan Tocker

Przez obciążenie rozumiem, że masz jeden OGÓŁEM obciążenie składające się (prawdopodobnie) z wielu różnych serwerów wykonujących różne czynności. W dzisiejszych czasach powinieneś być w stanie dość łatwo przekonwertować podzbiór kluczowych serwerów na obrazy wirtualne (z oprogramowaniem, które może to pomóc), które można załadować na serwery, które zamierzasz kupić. Nie jest to nieistotne zadanie, ale jedyny sposób, aby mieć pewność, że nie tylko procesor, ale także podsystem IO i wszystko inne działa na twoją korzyść. W przeciwnym razie wszyscy rezygnują z ręki i oceniają. :)
alphadogg

1

Jeszcze jedna rzecz do wyrzucenia, uwaga, jeśli używasz dowolnego rodzaju wirtualizacji, że migracja gości z Intela na AMD może być prawdziwym problemem, a grupowanie marek w ogóle nie jest w kartach. Trzymaj się jednej platformy dla każdego klastra i zaakceptuj, że trudno jest przeskakiwać z jednej na drugą.


Migracja między architektur pojawi się w dużej mierze z KVM być non-wychodzą na 64-bitowe: linux-kvm.org/page/...
Ophidian

Użytkownik powiedział „starsza LAMPA”; to pachnie, jakby mogli być dla mnie 32-bitowi goście. Miło jest wiedzieć, że KVM rozwiązuje problem! Dziękuję za notatkę.
Mark

Tak, niektórzy goście są 32-bitowi, ale planujemy przeprowadzić się i być 64-bitowym.
Morgan Tocker
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.