Patrzę na PLE (Page Life Expectancy) w węzłach NUMA na naszych serwerach SQL i natrafiłem na dość dziwną dystrybucję. Węzeł NUMA 000 ma bardzo niskie PLE w porównaniu do 001. Nie jestem pewien, dlaczego tak jest. Sprawdziłem wiele innych serwerów SQL w naszym środowisku, a inne serwery produkcyjne nie mają tego zachowania.
System działa SQL Server 2012 Enterprise Edition na Dell m620 z 256 GB pamięci RAM. To maszyna z 2 gniazdami i 6 rdzeniami (z obsługą HT). MAXDOP jest ustawiony na 6. Moduły pamięci AFAIK są instalowane równomiernie na poziomach pamięci procesorów
Coś mi mówi, że węzeł NUMA 000 ma inne zadania SQL do wykonania, że inne węzły, ale zapomniałem, gdzie to słyszałem / widziałem.
@@Version
pokazuje: Microsoft SQL Server 2012 (SP1) - 11.0.3412.0 (X64)
źródło
stolen nodes memory KB
jego wartość wynosi 97G, co jest bardzo wysoką wartością IMO. Skradziona pamięć nie jest wykorzystywana do celów bazy danych, ale przez SQL Server do takich operacji, jak sortowanie, mieszanie i inne cele. Z drugiej strony pamięć docelowa i całkowita są takie same. To wydaje się dziwne. Musisz zastosowaćOdpowiedzi:
Jeśli masz zapytanie wymagające intensywnego odczytu uruchomione na jednym węźle NUMA (w tym przypadku 0), może on oczekiwać niższej oczekiwanej żywotności strony w porównaniu z innymi węzłami NUMA.
To jest całkowicie normalne.
Aby zobaczyć, jakie zapytania są obecnie uruchomione, możesz użyć doskonałego sp_WhoIsActive Adama Machanica . Jest całkowicie darmowy. Niektórzy ludzie nawet uruchamiają go co X minut i logują dane do tabeli, aby mogli wrócić i zobaczyć, co było uruchomione w momencie, gdy PLE nodived.
źródło
Rozumiem architekturę NUMA, że każdy węzeł właściwie się izoluje. W takim przypadku mogliby skończyć z zupełnie inną pracą. Na przykład 0 może wykonywać zapytania wymagające dużej ilości fizycznych operacji we / wy, podczas gdy 1 ma szczęście i znajduje wszystkie swoje dane w puli buforów.
źródło