Udostępnij za pośrednictwem


Rozrastania i zmniejszania puli buforów w obszarze NUMA

W tym temacie opisano, jak program access niejednorodnego pamięci (NUMA) są przypisywane stron pamięci z pula buforów.Informacje te można wykorzystać do zrozumienia jak SQL Server używa NUMA i zrozumieć sposób interpretowania liczniki obiektu węzeł buforu.

Rozkład pamięci

Istnieje SQL Server węzeł pamięci dla każdego fizycznego węzeł NUMA.Węzły pamięci rosnąć niezależnie od siebie, ale równo podzielić pamięci.To show the local vs.foreign memory distribution in SQL Server, this topic uses an example that assumes the computer has 16 gigabytes (GB) of memory.Inne aplikacje, w tym Windows spożyły część pamięci z każdego węzła SQL Server została przypisana trochę pamięci dla swoich procesów działających poza pula buforów i SQL Server 10 GB pamięci, aby przypisać do puli bufora.Pamięci pula buforów jest podzielony między cztery fizyczne węzły NUMA, N0, N1, N2 i N3, każdy z następujących dostępnej pamięci lokalnej:

  • N0 — 1 GB

  • N1 — 3 GB

  • N2 — 3 GB

  • N3 — 3 GB

W powyższych konfiguracja wszystkich węzłów będzie ostatecznie przydzielić i użyć 2,5 GB pamięci; jednak węzeł N0 będzie 1.0 GB własnej pamięci i 1,5 GB pamięci z innych węzłów.

Przydział pamięci przy uruchamianiu

Podczas używania NUMA, SQL Server odbiera pamięci systemu operacyjnego z szybkością porównywalne z systemu bez NUMA, nawet jeśli początkowe wolnej pamięci nierównomiernie zostanie rozdzielona między węzłami.Pula buforów próbuje uzyskać jako znacznie lokalnej pamięci dla każdego węzła, jak to możliwe; Jednakże jest trudne, ponieważ system Windows nie ma obecnie API przydzielić pamięci z określonego węzła.

Jak pamięci jest przypisany do SQL Server, mogą obserwować, że niektóre węzły są podane wiele stron z innych węzłów NUMA (nazywany obcych stron).Jednak te strony nie są używane podczas konfigurowania ziemi, ponieważ często mogą być przeniesione na węzeł będący właścicielem i stają się lokalne do tego węzła.Gdy wartość Maksymalna pamięć jest osiągnięta, niektóre węzły mogą mieć obcych pamięci, ale po miejsce docelowe pamięci zostanie osiągnięty, pula buforów będą traktować pamięci lokalnych i zagranicznych identycznie.Na przykład pod ciśnieniem pamięci pula buforów nie będzie wprowadzać wszelkie wysiłki, aby zwolnić stron pamięci obcych przed stron pamięci lokalnej.

Ograniczanie pamięci do określonych węzłów

Jeśli SQL Server został skonfigurowany przeprowadzić podzbiór dostępne węzły NUMA pula buforów nie zostanie automatycznie ograniczony do pamięci na tych węzłach.W takim przypadek użyj Maksymalna pamięć opcję, aby ograniczyć pula buforów.Aby uzyskać informacje o Maksymalna pamięć, zobacz Opcje pamięci serwera.

Zwolnienie pamięci z węzła

Podczas używania NUMA, Maksymalna pamięć i pamięć serwera min wartości są równo podzielone między węzłami NUMA.Na przykład jeśli użytkownik zestaw Maksymalna pamięć do 16 GB w systemie z czterech węzłów, pula buforów przydziela 4 GB pamięci na każdym węźle.Jeśli skorzystasz z jednego z węzłów w trybie offline, zmieniając maski koligacji ustawienie Maksymalna pamięć ustawienia będą rozdzielane pozostałe węzły.Na przykład w poprzednim przykładzie cztery węzła, jeśli w trybie offline, podjąć dwa węzły wydanej 8 GB pamięci zostanie podzielona równomiernie wśród pozostałych węzłach.Ponieważ pula buforów jest zdolne do korzystania ze stron zagranicznych, zdalnej pamięci będzie wykorzystane, jeśli nie ma za mało pamięci na pozostałych węzłach.Jeśli chcesz SQL Server z używania pamięci z węzłów nie jest uruchomiony na, należy zmniejszyć Maksymalna pamięć ustawienia po przeniesieniu węzły w trybie offline.

Obcy stron

Funkcja węzłów w dużym stopniu niezależnie od siebie.Wszystkie alokacje pamięci i deallocations pamięci dla węzła, są wykonywane przy użyciu pamięci skojarzonego z tym węzłem.Jednakże jeżeli pracownik uruchomiona w węźle N1 musi uzyskać dostęp do strona bazy danych, się już w pamięci węzła dla N2, otwiera pamięci nielokalnych.

Przestrzegając vs lokalnych.Obcy pamięci puli buforów

Można zaobserwować pula buforów wyświetlając Buforu węzła obiektu.Suma pamięci pula buforów dla SQL Server jest wyświetlany jako strony docelowej licznika z Menedżera buforów obiektu.Pamięci w pula buforów dla każdego węzła jest wyświetlany jako strony docelowej licznika z Buforu węzeł obiektu.Pamięci z innych węzłów jest wyświetlany jako obcych stron licznika.Aby uzyskać więcej informacji, zobacz SQL Server obiektu węzeł buforu i Obiekt Menedżera buforu SQL Server.

Punkty kontrolne każdego węzła własnej pamięci

Każdy węzeł pamięci ma własny wątek opóźnieniem.Wątek ten nazywany jest zarówno dla punktów kontrolnych niejawne i jawne.Ponieważ komputer symetrycznego przetwarzania wieloprocesowego (SMP) punkt kontrolny tylko jeden wątek, wiele wątków, używając NUMA powodują zwiększenie prędkości punkt kontrolny.

Zachowanie skanowanie tabeli

Skanowanie tabela uruchomiona na węźle N1 wstawi tylko pamięci skojarzony węzeł N1, chyba że skanowanie zostanie uruchomione równolegle na procesory z wielu węzłów.Jeśli skanowanie działa wyłącznie na jednym węźle, będą używane tylko strony bufor tego węzła.Pomaga to partycja obciążenie dla aplikacji.