Wielordzeniowość w Wot? Chyba się da!
Дата: 04.02.2014 21:07:10
Gepard_PH: Zacznijmy może od tego co tak naprawdę się dzieje: aplikacja (a
konkretnie jeden z jej najbardziej zasobożernych wątków) zamiast
działać cały czas na jednym rdzeniu (procesorze logicznym)
przeskakuje pomiędzy wszystkim dostępnymi, tzn. chwilę jest
wykonywana na CPU1, potem chwilę na CPU2, itd. Dlatego zamiast 100%
obciążenia na 1 rdzeniu mamy po 25% na czterech, albo po 50% na
dwóch. Z punktu widzenia architektury systemów komputerowych
opisane tutaj zabiegi są bezcelowe. Jest kilka powodów, dla
których aplikacja (a konkretnie wątki) powinny pracować na tych
samych rdzeniach tak długo jak to możliwe. Pierwszy z nich to
architektura procesorów, które mają osobną pamięć podręczną
(cache) na rdzeń (najczęściej poziomu I i II, poziom III jest
dzielony). Tak długo jak wątek działa na tym samym rdzeniu, może
korzystać z potrzebnych mu danych w pamięci podręcznej danego
rdzenia. Gdy wątek wędruje na inny rdzeń, traci dostęp do tych
danych, i muszą być one na nowo zapisane do pamięci podręcznej. Im
częściej taka zmiana następuje tym więcej czasu jest marnowane na
wędrówke danych między cachem poszczególnych rdzeni. Drugi powód to
technologia TurboBoost i podkręcanie. W sytuacji gdy procesor może
pracować np. w konfiguracji 2 x 2,9GHz lub 3,0 + 2,4, więcej sensu
ma wykonywanie obliczeń na rdzeniu pracującym z największą
prędkością. Wtedy korzystne może być nawet przypięcie aplikacji do
jednego tylko rdzenia - tego, który pracuje z najwyższym
taktowaniem. Tak samo w przypadkach procesorów przetaktowanych
nierówno: np. 2 rdzenie po 4,5 GHz, 2 po 3,4 GHz lub coś podobnego.
To są oczywiście bardzo ogólne informacje i być może w
jakichś szczególnych wypadkach rezultaty będą odwrotne - aczkolwiek
naprawdę chciałbym zobaczyć konkretne wyniki pomiarów. Bo mówiąc
szczerze komentarze "wzrosło o 10 fps" mnie nie przekonują -
najprawdopodobniej jest to albo efekt placebo albo pomiar w
innych warunkach (inna mapa, inne czołgi itp.). Benchmarki powinno
się robić na jednej i tej samej powtórce, a fpsy zapisywać np.
Frapsem do pliku. Tak czy inaczej - spróbować można, ale
trzeba umieć ocenić rezultaty. Na pewno sam sprawdzę w wolnej
chwili jak opisany tutaj trik działa u mnie i podzielę się
wynikami.
Wielordzeniowość w Wot? Chyba się da!