NASI SPONSORZY I PARTNERZY
Wirtualizacja baz danych a pamięć RAM Cezary Ołtuszyk Blog: coltuszyk.wordpress.com
Plan spotkania I. Wprowadzenie do tematu II. III. IV. Hot Add Memory w Windows i SQL Server Dynamic Memory na platformie Hyper-V Problem 1: Zewnętrzna presja na pamięć RAM V. Problem 2: Serwer nie pobiera RAM VI. VII. VIII. IX. VMWARE: Transparent Page Sharing VMWARE: Memory Cache Compression Problem 3: Podsystem I/O Podsumowanie
Wprowadzenie do tematu Jednym z podstawowych założeń związanych z przenoszeniem fizycznej infrastruktury informatycznej do środowisk wirtualnych jest maksymalne wykorzystanie dostępnych zasobów. Dzięki posadowieniu wielu serwerów (gości) na jednej maszynie hostującej możemy zaoszczędzić pieniądze związane nie tylko z zakupem sprzętu komputerowego lecz także licencji. Wraz z postępem technologicznym ilość skonsolidowanych w ten sposób serwerów rośnie
Hot Add Memory SQL Server od wersji 2005 wspiera funkcjonalność zwaną hot add memory, która pozwala na dodanie pamięci RAM do fizycznego serwera baz restartu usługi SQL. Opcja ta działa równie dobrze w środowisku wirtualnym, dzięki czemu korzystamy z niej co raz częściej Do niedawna była ona zarezerwowana jedynie dla wersji Enterprise. Wraz z ukazaniem się SQL Server 2012 jest ona obecna także w wersji Standard, pod warunkiem, że usługa ta została zwirtualizowana
Dynamic Memory na platformie Hyper-V Dynamic Memory jest opcją, która pomaga nam skonsolidować więcej maszyn wirtualnych na pojedynczym hoście hyper-v. Jej działanie polega komunikowaniu się maszyny wirtualnej z systemem operacyjnym hosta w celu dynamicznego alokowania jej pamięci RAM. Dzięki temu zabiegowi maszyny wirualne nie pobierają więcej pamięci operacyjnej niż jest im aktualnie potrzebne.
Dynamic Memory na platformie Hyper-V Podczas planowania zasobów wirtualnych maszyn należy przeanalizować w jaki sposób jedna maszyna będzie miała wpływ na inne znajdujące się na tym samym hoście. Dynamic memory jest opcją, która z założenia zależy od konfiguracji pozostałych (hostowanych) maszyn. SQL Server jest usługą pamięciożerną, a zwirtualizowanie jej i użycie dynamic memory może spowodować ryzyko zewnętrznej presji na RAM oraz utratę wydajności.
Dynamic Memory na platformie Hyper-V Aby zaprezentować tego typu problem wykonałem następujący test: 1. Zainstalowałem usługę HYPER-V na hoście z 16GB RAM i WINDOWS 2008R2 SP1 2. Stworzyłem maszynę wirtualną z zainstalowanym WINDOWS 2008R2 SP1 i SQL Server 2008R2 3. Zadeklarowałem jej pamięć jako dynamiczną w zakresie 2000-14000MB 4. Wykonałem pamięciożerne zapytanie i zmierzyłem jego czas 5. Włączyłem drugą maszynę, która na sztywno pobiera 8000MB 6. Ponownie wykonałem zapytanie na maszynie pierwszej 7. Zmniejszyłem ilość pamięci RAM dla SQL Server 8. Wykonałem zapytanie po raz trzeci
Problem 1: Zewnętrzna presja na pamięć RAM Zapytanie 1 Zapytanie 2 Zapytanie 3 Startup RAM 2000MB 2000MB 2000MB Maximum RAM 14000MB 14000MB 6500MB* Zużyta pamięć 12438MB 7378MB 7392MB Czas wykonania 3 min 18sek 4 min 16 sek 3 min 31 sek Włączona dodatkowa maszyna Nie Tak Tak * Pamięć okrojona po stronie SQL Server-a Włączenie dodatkowej maszyny gościa miało negatywny wpływ na wydajność SQL Server. W momencie gdy zmniejszymy maksymalną ilość RAM używaną przez usługę wydajność wraca do normy.
Problem 1: Zewnętrzna presja na pamięć RAM
Problem 2: Serwer nie pobiera RAM Włączenie maszyny Odpalenie zapytania Po 10 minutach Hot add memory w SQL Server ma pewne ograniczenie: 16 x Startup RAM Po 30 minutach
Transparent Page Sharing Jedną z zaawansowanych opcji zarządzania pamięcią RAM na platformie (VMWARE) jest możliwość dzielenia zaalokowanej pamięci przez kilka maszyn wirtualnych. Dzięki Transparent Page Sharing możemy zaalokować więcej zasobów niż posiada nasz host
Transparent Page Sharing
Memory Cache Compression Memory Cache Compression jest opcją służącą do zminimalizowania zrzutu pamięci maszyny wirtualnej po stronie hosta. W przypadku, gdy dana maszyna wirtualna ma problem z małą ilością RAM, to wirtualizator może skompresować daną stronę i uniknąć operacji I/O. Domyślnie bufor kompresji może zająć do 10% zaalokowanej pamięci. Później wykonywany jest SWAP.
Memory Cache Compression
Podsumowanie SQL Server posiada funkcję hot add memory, która współgra z dynamiczną alokacją pamięci Planując użycie dynamic memory powinniśmy zwrócić uwagę na interakcję pomiędzy maszynami (presja na pamieć) Pamiętajmy o limicie 16 x STARTUP RAM Dzielenie stron pamięci RAM ma kilka zalet (i wad) Kompresja RAM maszyny wirtualnej pozwala oszczędzić system I/O
NASI SPONSORZY I PARTNERZY Organizacja: Polskie Stowarzyszenie Użytkowników SQL Server - PLSSUG