Procesory
Artykuł
Mateusz Brzostek, Sobota, 17 listopada 2018, 14:01

Dynamic Local Mode – jak to działa?

Nowa funkcja programowa dla Threadripperów z serii WX została nazwana Dynamic Local Mode (dalej będziemy używać skrótu DLM). Można ją włączyć w tym samym miejscu, gdzie w Threadripperach serii X można przełączyć tryb dostępu do pamięci z rozproszonego (UMA) na lokalny (NUMA). Wbrew nazwie nie jest to żaden nowy wynalazek sprzętowy ani klasyfikacja tego samego rodzaju co UMA i NUMA. DLM jest pewnym wspomagaczem schedulera Windows, który ma dbać o to, żeby programy najbardziej tego potrzebujące były zawsze przydzielone do tych rdzeni, które mają najszybszy dostęp do pamięci. DLM jest przeznaczony wyłącznie do systemu Windows – Linux nie powinien wymagać takiego wspomagania.

Windows co prawda wie, które procesory logiczne należą do jednej domeny NUMA, które domeny NUMA zawierają pamięć i procesory, a które tylko procesory, a nawet które procesory mają wspólną pamięć podręczną (w ramach jednego CCX), ale nie bierze tego zbyt mocno pod uwagę. Jak wytłumaczyli inżynierowie AMD, procesy często zostają przydzielone do procesorów logicznych na zasadzie „kto pierwszy, ten lepszy”. W ten sposób procesy w małym stopniu korzystające z pamięci operacyjnej albo mało wrażliwe na duże opóźnienie w dostępie do niej mogą wylądować na procesorach z najszybszym dostępem, a inne, którym bardziej by się to przydało – w dwóch domenach NUMA bez lokalnej pamięci.

Działanie DLM zapewnia usługa działająca w tle; zostaje ona zainstalowana i automatycznie włączona podczas instalacji programu Ryzen Master, jeśli instalator wykryje procesor Threadripper WX. Można ją ręcznie wyłączyć w Ryzen Masterze albo z wykorzystaniem funkcji zarządzania usługami w narzędziach administracyjnych Windows.

Można zauważyć pewne podobieństwo do techniki Turbo Boost Max, dostępnej użytkownikom procesorów Skylake X Intela, która również działa dzięki oprogramowaniu uruchamiającemu się automatycznie przy starcie systemu. Rozwiązanie AMD jest znacznie bardziej eleganckie. Nie wymaga specjalnego sterownika, nie uruchamia się, jeśli zmienimy procesor na inny niż Threadripper WX, nie powoduje problemów przy przenoszeniu systemu pomiędzy różnymi platformami (również z AMD na Intela).

(screenshot, nie kasować)

Sprawdziliśmy wydajność przy włączonym i wyłączonym DLM. Na wykresach na dalszych stronach zamieściliśmy oba komplety wyników; poniżej możecie zobaczyć podsumowanie.

Ryzen Threadripper 2970WX – Dynamic Local Mode

Włączenie DLM w niektórych przypadkach radykalnie zmienia wydajność. Ten eksperyment sporo nam mówi o stanie oprogramowania.

Po pierwsze, w programach nieświadomych architektury NUMA wzrost wydajności może sięgać kilkudziesięciu procent. Być może nasze narzekanie na pakiet Adobe jest już nieco męczące, ale nie możemy przejść obojętnie obok niektórych obserwacji. Dlaczego samodzielny enkoder x264 całkiem nieźle sobie radzi bez wspomagania schedulowania, a enkoder x264 w Adobe Media Encoder wymaga pomocy DLM?

W wielu zastosowaniach DLM nie robi wielkiej różnicy; wzrost lub spadek wydajności jest raczej skutkiem przełączania procesów między procesorami logicznymi niż konkretnego przydziału. Zaliczylibyśmy do nich 7-Zip i renderer Corona, który nie korzysta intensywnie z pamięci, więc traci chyba tylko z powodu przestojów w trakcie przełączania wątków.

Przypadek y-crunchera pokazuje, że jeśli oprogramowanie jest gotowe na NUMA, pozostawienie w jego rękach kontroli nad koligacją i alokacją pamięci jest najlepszym wyjściem. Y-cruncher bierze pod uwagę wszystkie szczegóły topologii maszyny, jest nawet przystosowany do bardziej zróżnicowanych komputerów z wieloma osobnymi procesorami lub segmentami połączonymi przez sieć. Wtrącanie się w jego działanie przez DLM powoduje radykalny spadek wydajności.

To jeden z dowodów na to, że takie zachowanie Windows nie jest błędem, ale raczej skutkiem wyboru dokonanego przez twórców systemu operacyjnego. Po prostu świat oprogramowania nie opracował (jeszcze) odpowiedniego mechanizmu, który by zapewnił programom najlepsze quality of service w dostępie do zasobów obliczeniowych. Nie wydaje się, żeby najlepszym rozwiązaniem było pozostawienie tego całkowicie w rękach systemu operacyjnego, który przecież nie wie, co dokładnie robią i czego wymagają nowe programy i scenariusze użytkowania. Również zostawienie tego całkowicie po stronie programów użytkowych nie jest optymalne, bo starsze (a może przestarzałe?) narzędzia nie są gotowe na innowacje w sprzęcie.

Widzimy pewne pole do poprawy usługi DLM: być może przydałby się mechanizm oparty na prowadzonej przez AMD czarnej liście programów, w których działanie lepiej się nie wtrącać.

W przypadku Threadrippera 2970WX DLM usuwa wiele sytuacji, w których tańszy model 2950X okazywał się wydajniejszy. 

Threadripper 2990WX z Dynamic Local Mode

AKTUALIZACJA – 12 XII 2018 r.

Mieliśmy niedawno możliwość ponownego przetestowania najwyższego modelu z serii Threadripper, 2990WX, z włączonym i wyłączonym dynamicznym trybem lokalnym. Jak się okazuje, wnioski wyciągnięte na podstawie zachowania 2970WX nie pokrywają się z rezultatami nowego eksperymentu.

Ryzen Threadripper 2990WX – Dynamic Local Mode

DLM nie jest panaceum na wszystkie kłopoty kiepskiego oprogramowania. Potwierdza się poprzednia obserwacja, że megawątkowe programy, których twórcy już dawno zetknęli się z maszynami typu NUMA, tracą w większości przypadków po włączeniu trybu DLM. Najdziwniejsze, że spowalnia również kodowanie wideo w Handbrake i DaVinci Resolve, które przyspieszało zauważalnie po włączeniu DLM na 24-rdzeniowym Threadripperze. Dobra wiadomość jest taka, że po włączeniu DLM średnio więcej zyskujemy, niż tracimy. Do tego usługę odpowiedzialną za działanie DLM można włączyć i wyłączyć „na gorąco”, bez restartowania komputera, a nawet bez używania programu Ryzen Master.

Jako ciekawostkę dodamy, że DLM pozwala komfortowo zagrać w niektóre gry, które sprawiały znaczne kłopoty bez DLM. Granie i testy wydajności w grach nie były naszym priorytetem podczas testów Threadrippera 2990WX i zapewne nie będą dla potencjalnych użytkowników takiego procesora. Zauważyliśmy jednak, że w Watch Dogs 2, Assassin's Creed Origins oraz GTA V włączenie DLM ma prawie tak dobry skutek jak przełączenie procesora w tryb 1/4 lub tryb kompatybilności (w którym SMT jest wyłączone) – 2990WX osiąga wtedy płynność bliską tej, którą osiągają jednolite, mało skomplikowane procesory, takie jak 16-rdzeniowy Threadripper. Przy tym DLM nie wymaga restartu, tak jak dwa alternatywne rozwiązania. Niechlubnym wyjątkiem wśród gier są te z serii Total War Warhammer – tu trzeba przełączyć liczbę wątków z automatycznie dobieranej na 16 lub mniej, żeby płynność rozgrywki przekroczyła 30 kl./sek. (to samo trzeba zrobić na megawątkowych procesorach Skylake X).

Ocena artykułu:
Ocen: 9
Zaloguj się, by móc oceniać
Artykuły spokrewnione
Facebook
Ostatnio komentowane