Zbudowanie idealnego serwera produkcyjnego Microsoft SQL Server 2012 może być trudnym zadaniem, a zmienne takie jak pamięć masowa, pamięć RAM czy wybór procesora stanowią wyzwanie nawet dla doświadczonych administratorów IT. Ostatnio opublikowaliśmy analizę dotyczącą wyboru najlepszego procesora Intel Xeon E5-2600 v2 do uruchamiania SQL Server 2012 w środowiskach niezwirtualizowanych. Poza procesorem, pamięć RAM jest kolejnym kluczowym elementem przy rozważaniu wymagań wydajnościowych SQL działających na platformie Iron. W tym teście wykorzystaliśmy to samo środowisko testowe, co w badaniu procesorów Intel, tym razem skupiając się na połączeniu pamięci RAM Micron PC3-12800 z najwydajniejszym procesorem i pamięcią masową, aby ocenić ich wpływ na wydajność.
Tradycyjnie rzecz biorąc, większa ilość pamięci RAM dla SQL Server zapewnia wyższą wydajność. Wykorzystanie dodatkowej pamięci RAM zmniejsza obciążenie operacji wejścia/wyjścia w danej macierzy pamięci masowej, a także zapewnia pewne korzyści z buforowania. Zakładając, że wszystko pozostaje bez zmian, sprawdzamy, ile pamięci RAM można przeznaczyć na SQL Server, zachowując jednocześnie niskie opóźnienia. W tym artykule pokazujemy wpływ na wydajność przydzielenia 128 GB dedykowanej pamięci dla SQL Server, na której obecnie testujemy urządzenia w ramach przeglądów korporacyjnych, do 8 GB.
Stanowisko testowe
W ramach tej analizy oceniamy pamięć Micron PC3-12800 DDR3 w serwerze Supermicro SuperStorage Server 2027R-AR24NV z systemem Windows Server 2012. Jest to dwugniazdowa obudowa 2U obsługująca procesory Intel z rodziny E5-2600 i E5-2600 v2. Pamięć RAM systemu składa się z szesnastu modułów Micron PC3-12800 DIMM o pojemności 16 GB , które pozostają statyczne dla każdego testu. Aby zmienić ilość pamięci RAM wykorzystywanej przez program SQL Server, zmieniamy ustawienie alokacji, ograniczając ją do wartości wybranej dla każdego kroku. Do przechowywania danych w hoście wykorzystaliśmy pamięć Fusion ioMemory PX600 o pojemności 2.6 TB , która charakteryzuje się bardzo dobrymi wynikami w zakresie opóźnień w programie SQL Server (najszybszy produkt obecnej generacji testowany przez nasze laboratorium).
Konfiguracja serwera
- 2 x procesor Intel Xeon E5-2687W v2 – pamięć podręczna 25 MB, 3.40 GHz, 8 rdzeni
- Chipset Intel C602
- Pamięć – 256 GB (16 x 16 GB) 1600 MHz Micron DDR3 Registered RDIMM (128 GB dedykowane dla systemu, 8–128 GB dedykowane dla SQL)
- System Windows Server Standard 2012
- 3 x Supermicro SAS3 HBA (kontrolery LSI SAS 3008)
- Dysk SSD Micron P400m Boot o pojemności 200 GB
- 1 x adapter Mellanox ConnectX-3 Dual-Port VPI PCIe 3.0 (InfiniBand LoadGen Fabric)
- 1 x adapter dwuportowy Emulex OCe11102 10GbE
Konfiguracja pamięci masowej
- SanDisk Fusion ioMemory PX600 2.6 TB
- 80% nadmiernego alokowania w trybie wysokiej wydajności
- Włączono pełne pobieranie mocy
- Oprogramowanie układowe/sterowniki VSL 4.1.1
Wydajność
Każdy określony interwał kroku pamięci RAM został przetestowany w ten sam sposób: wykorzystując nasz test porównawczy SQL Server 2012 OLTP z bazą danych umieszczoną na PX600 w jednowęzłowym serwerze Supermicro 2P. Podobnie jak w przypadku większości urządzeń pamięci masowej tej klasy, nie przywiązujemy tak dużej wagi do liczby transakcji na sekundę; nacisk kładziemy na opóźnienie w realizacji każdej z tych transakcji.
Zgodnie z oczekiwaniami, większa ilość pamięci RAM przydzielona serwerowi SQL przełożyła się na wyższą wydajność transakcyjną. Pomiędzy 128 GB a 64 GB nie zaobserwowaliśmy znaczącej zmiany w TPS. W rzeczywistości spadek między 96 GB a 64 GB mieścił się mniej więcej w tym samym marginesie błędu. Różnica między 16 GB a 8 GB przyniosła największą zmianę, co sugeruje, że 16 GB to prawdopodobnie minimalny użyteczny próg dla tego konkretnego testu i konfiguracji serwera.
Skupiając się na opóźnieniu, widzimy, jak dobrze Fusion ioMemory PX600 utrzymał niskie opóźnienia, uzyskując wyniki w przedziale 2-3 ms dla wersji 128 GB, 96 GB i 64 GB. Spadek do 32 GB zwiększył opóźnienie o około 66%, ale kolejny spadek do 16 GB był znacznie bardziej drastyczny. Ta zmiana zwiększyła opóźnienie o 200%, a następnie o kolejne 153% po zmniejszeniu pamięci RAM do 8 GB.
Chociaż wpływ na pamięć masową nie został uwzględniony w tym teście, każdy krok w alokacji pamięci DRAM drastycznie zmniejszał obciążenie urządzenia pamięci masowej, na którym znajdowała się baza danych. Krótko mówiąc, większa ilość pamięci przekłada się na mniejszą liczbę żądań trafiających do pamięci masowej, które zamiast tego pozostają w pamięci systemowej. Podczas gdy 128 GB pamięci RAM miało obciążenie w tle na poziomie 50–100 MB/s, 16 GB wzrosło do 800 MB/s (nie podczas zapisu do dziennika, co może powodować duże skoki w przypadku każdej konfiguracji pamięci DRAM). Przy mniejszej pojemności pamięci te wyniki byłyby jeszcze wyższe.
Wniosek
Podczas tworzenia wydajnego, niezwirtualizowanego serwera SQL Server należy wziąć pod uwagę wiele kwestii. W pierwszym artykule przyjrzeliśmy się procesorowi i jego wpływowi na wydajność SQL. W tym artykule wykorzystaliśmy najwydajniejszą pamięć masową i procesory w hoście, aby przetestować pamięć RAM. We współpracy z Micron przeprowadziliśmy te same testy, wykorzystując od 8 GB do 128 GB pamięci RAM dedykowanej dla SQL. Wyniki są dość intuicyjne, a ogólnie rzecz biorąc, większa ilość pamięci RAM oznacza lepsze opóźnienie. Istnieje jednak punkt krytyczny, w którym opóźnienie osiąga drastyczny szczyt w tej konfiguracji. Przy 16 GB opóźnienie wzrasta 3-krotnie w porównaniu z 32 GB, a przy 8 GB wpływ jest jeszcze większy. W celu uzyskania najlepszej wydajności, 128 GB pamięci RAM dla SQL z procesorami o najwyższej częstotliwości taktowania i wiodącą pamięcią masową PCIe generuje opóźnienie wynoszące zaledwie 2 ms.
Strona produktu Crucial/Micron
Wybór najlepszego procesora Intel Xeon E5-2600 v2 dla programu SQL Server 2012




Amazon