Karty graficzne

Optymalizacja systemu dla GX2

przeczytasz w 3 min.

Optymalizacja systemu dla GX2

Bardzo ważne, zanim zaczniemy testować lub cieszyć się wydajnością 9800 GX2. Zresztą nie tylko tej, ale generalnie rozwiązań multi GPU.
Do optymalnego działania karty w systemie Windows Vista, konieczne jest zainstalowanie albo Service Pack 1, albo wszystkich ważnych poprawek.

Najnowsza poprawka Microsoft o numerze 945149

Symptomy: W niektórych scenariuszach gry i testy porównawcze mają znacznie gorszą wydajność niż oczekiwana na komputerach z systemem Windows Vista. Ten problem występuje w sytuacji, gdy gry i testy porównawcze używają wielu kart wideo w konfiguracji LDA (Linked Display Adapter).

Przyczyna: Procesor grafiki (GPU) lub część łącza GPU mogą powodować małe opóźnienie planowania w nowym pakiecie DMA (Direct Memory Access). Dzieje się tak w przypadku, gdy pakiet DMA jest przesyłany do procesora GPU, który uprzednio przestał pracować, oraz jeżeli inny procesor GPU w połączonej konfiguracji jest bardzo zajęty. W niektórych scenariuszach znacząca blokada w jednym lub kilku procesorach GPU w połączonej konfiguracji zmniejsza oczekiwaną wydajność aplikacji.


Poprawka Microsoft o numerze 940105

W nowych systemach operacyjnych, takich jak Windows Vista, aplikacje są uruchamiane we własnej prywatnej wirtualnej przestrzeni adresowej. Zazwyczaj rozmiar takiej przestrzeni jest ustalony i wynosi 2 gigabajty (GB) w przypadku aplikacji 32-bitowych. Ilość dostępnej wirtualnej przestrzeni adresowej nie jest powiązana z ilością pamięci fizycznej na komputerze.

Każdy przydział pamięci, mapowanie plików lub biblioteka ładowane przez aplikację zużywają miejsce tej przestrzeni. Gdy aplikacja zużyje całą przeznaczoną dla niej przestrzeń, wszelkie dodatkowe operacje kończą się niepowodzeniem. Mimo że wszystkie aplikacje powinny być zakodowane w taki sposób, aby obsługiwać awarie przydziału pamięci, wiele aplikacji nie jest prawidłowo przywracanych do właściwego stanu po takich awariach. Dlatego w takiej sytuacji programy mogą być niestabilne lub przestać odpowiadać.

Dostępne gry i inne aplikacje graficzne często przydzielają pamięć wirtualną dla kopii zasobów pamięci wideo używanej przez aplikację. Aplikacja używa tej kopii do szybkiego przywracania wyświetlania w przypadku, gdy zawartość pamięci wideo zostanie utracona. Na przykład aplikacja używa tej kopii wtedy, gdy użytkownik naciśnie klawisze ALT+TAB lub przełączy komputer do stanu wstrzymania. Zazwyczaj wersja wykonawcza programu DirectX zarządza kopią w imieniu aplikacji, gdy aplikacja tworzy zasób zarządzany. Aplikacja może jednak również zarządzać kopią samodzielnie. Pamięć wirtualna używana przez kopię jest wprost proporcjonalna do zasobów pamięci wideo przydzielanych przez aplikację.

Nowoczesne procesory przetwarzania grafiki (GPU) mogą mieć 512 megabajtów (MB) lub więcej pamięci wideo. Aplikacje, które próbują korzystać z tak dużej ilości pamięci wideo, mogą używać dużej proporcji wirtualnej przestrzeni adresowej dla kopii swoich zasobów wideo tworzonej w pamięci. W systemach 32-bitowych takie aplikacje mogą zużyć całą dostępną wirtualną przestrzeń adresową.

Wraz z wprowadzeniem programu DirectX 10 i modelu WDDM (Windows Driver Display Model) nie jest już konieczne, aby aplikacja przechowywała kopię swoich zasobów w pamięci systemu. Zamiast tego menedżer pamięci wideo zapewnia, że zawartość każdego przydziału pamięci jest zachowywana między przejściami wyświetlacza. Z przyczyn zgodności system Windows Vista emuluje komunikat "urządzenie utracone" dla wersji programu DirectX starszych niż DirectX 10 w celu zapewnienia, że nie zmienią się zachowania interfejsu API właściwe dla aplikacji.

Aby dokonać wirtualizacji pamięci wideo, menedżer pamięci wideo w systemie Windows Vista przypisuje zakres adresów wirtualnych do każdego zasobu pamięci wideo. Ten zakres jest z definicji podobny do kopii tworzonej przez aplikację. Menedżer pamięci wideo zarządza jednak procesem wydajniej niż aplikacja. Używa on zakresu adresów wirtualnych, aby obsługiwać przejścia lub nadmierne zobowiązania pamięci wideo. Zakres adresów wirtualnych jest jednak zazwyczaj nieużywany w systemie, w którym dostępna jest duża ilość pamięci wideo. Dopóki ten zakres jest nieużywany, nie jest przydzielana dla niego pamięć fizyczna. Kopia pamięci systemu przechowywana w starszym modelu sterownika jest natomiast całkowicie wypełniana pamięcią fizyczną.

Jeżeli aplikacja utworzy swoją własną kopię zasobów wideo w pamięci albo używa programu DirectX 9 lub starszej wersji, wirtualna przestrzeń adresowa zawiera zakres zwirtualizowany przez menedżera pamięci wideo WDDM i kopię aplikacji. Aplikacje korzystające z graficznych interfejsów API starszych niż DirectX 10 oraz których docelowe procesory GPU mają duże ilości pamięci wideo mogą łatwo przekroczyć dostępną ilość wirtualnej przestrzeni adresowej.

Aby rozwiązać ten problem, firma Microsoft zmieniła sposób, w jaki menedżer pamięci wideo przechowuje zawartość zasobów pamięci wideo. Zmiana polega na tym, że stały zakres adresów wirtualnych nie musi być używany w przypadku każdej zwirtualizowanej alokacji. Dzięki temu tylko alokacje podlegające blokowaniu zużywają miejsce w wirtualnej przestrzeni adresowej aplikacji. Alokacje niepodlegające blokowaniu nie zużywają miejsca. Ta zmiana znacznie zmniejsza wykorzystywaną wirtualną przestrzeń adresową. Dlatego aplikacje można uruchamiać w konfiguracjach z dużą pamięcią wideo bez osiągania limitów.

Mimo że w wyniku tej zmiany zostaje zmniejszone zużycie adresów wirtualnych, nie powoduje ona zniesienia limitu 2 gigabajtów (GB) wirtualnej przestrzeni adresowej, do której wiele aplikacji samodzielnie uzyskuje dostęp. Aplikacje mogą osiągnąć limit również z innych przyczyn.