Ogranicz maksymalne użycie procesora Serwer SQL z WSRM

10

Mam fizyczny serwer z jedną instancją SQL Server.

Zauważam, że dość często ten serwer działa przy 100% obciążeniu procesora.

Mój zespół IT nie jest z tego powodu zadowolony i zasugerował zarezerwowanie 2 z 32 rdzeni dla systemu operacyjnego.

Działa to świetnie, teraz maksymalne użycie szczytowe poniżej 90%. Ponadto nie jest już zgłaszane powolne pobieranie danych od różnych użytkowników.

Czy istnieje jakikolwiek powód, aby NIE używać WSRM (Windows System Resource Manager) w ten sposób - zamiast SQL Resource Governor?

ManInMoon
źródło
Czy naprawdę chcesz wykorzystać cały procesor? Oszczędzanie kilku rdzeni dla systemu operacyjnego wydaje się rozsądne, prawda? Na mojej stacji roboczej, jeśli wykorzystam wszystkie rdzenie do jakiejś liczby, chrupanie mojej maszyny się zatrzyma. Zawsze mam kilka rdzeni wolnych. Czy nie byłoby to dobrą praktyką również na komputerze dedykowanym dla SQL Server?
ManInMoon,
Jakiego rodzaju obciążenie działa na tym serwerze? Jakiego rodzaju proces wykorzystuje 100% procesora? Czy to OLTP, analityka, wykres czy?
Max Vernon,
@ Forrest Kiedy mówisz „tuning” - masz na myśli sam SQL Server - czy strukturę zapytań / tabeli? Jeśli masz na myśli SQL Server, daj mi link do tego, na co patrzeć. Jeśli queiries / tabele, to optymalizuję je, kiedy mogę, ale niektórzy użytkownicy są mniej świadomi projektowania!
ManInMoon,

Odpowiedzi:

14

Czy istnieje jakikolwiek powód, aby NIE stosować zdefiniowanego przez Ciebie podejścia? Absolutnie.

Wyobraź sobie, że kupiłeś samochód - samochód, który po osiągnięciu 50 MPH silnik zaczyna się przegrzewać. Czy zareagowałbyś na tę sytuację, sztucznie ograniczając samochód do 49MPH, lub by dowiedzieć się, co jest przyczyną usterki silnika?

Dlaczego warto ograniczyć samochód do 49MPH? Producent stwierdził, że może jechać tak szybko, jak 80MPH - lubisz jeździć samochodem szybko, więc chcesz uzyskać taką prędkość - gdyby nie ten cholerny problem przegrzania.

Samochód, który kupiłeś, był też naprawdę bardzo drogi. Każdy cylinder silnika musi być maksymalnie wykorzystany, abyś nie marnował tych pieniędzy!

Sztucznie ograniczając dostęp serwerów SQL do procesora, tracisz wydajność. Być może tymczasowo rozwiązałeś problemy z wydajnością, upewniając się, że procesor jest dostępny dla systemu operacyjnego, ale nie odpowiedziałeś na prawdziwe pytanie - DLACZEGO SQL Server używa 100% procesora?

Moja rada jest następująca:

Dowiedz się, jaki jest prawdziwy problem i napraw go. Nie ukrywaj problemu tym, co faktycznie jest kludge. Kwestia BĘDZIE ponownie i klapsa w twarz w dół linii, gdy obciążenie serwera naturalnie wzrasta ze wzrostem gospodarczym.

Jako tymczasową poprawkę można użyć regulatora zasobów w celu obniżenia używanego procesora, AŻ DO ZNALEZIENIA PRAWDZIWEGO PROBLEMU.

George.Palacios
źródło
11

Erik Darling wymienił największy praktyczny powód nieużywania WSRM w komentarzu do twojego pytania:

... nie ma wzajemnego ograniczenia wykorzystania procesora w innych procesach. SQL Server może nie używać tych dwóch rdzeni, ale inne rzeczy mogą korzystać z pozostałych 30 używanych przez SQL Server. To naprawdę bzdura.

Jeśli to działa dla ciebie, trzymaj się tego - wszyscy jesteśmy zajęci i możesz poświęcić tyle czasu na dany problem. Idealnym rozwiązaniem byłoby ustalenie bazowych zapytań / problemów, które sterują CPU punktu problemów zauważalne przez użytkownika (co George okładek w jego doskonałą odpowiedź ).

Erik mówi dalej

Dodatkowo płacisz za nie licencjami na SQL Server.

Z biznesowego punktu widzenia jest to prawdopodobnie najgorsza część umowy WSRM - płacisz licencję na rdzeń za 2 rdzenie, które wyraźnie nie są używane. W chwili pisania tego tekstu na stole pozostało 3 000 USD lub 14 000 USD (w zależności od wersji Standard vs Enterprise).

Josh Darnell
źródło