2009-11-16 11 views
7

Próbuję dowiedzieć się, w jaki sposób system operacyjny (Windows, Linux) przypisuje numery do logicznego procesora cps w środowisku z włączoną funkcją Hyper threading. ?Numeracja procesora w systemie obsługującym hiperłącze

Czy oba systemy operacyjne najpierw szeregowo przypisują numery do procesorów fizycznych, a następnie rozpoczynają numerowanie logicznego procesora lub czy istnieje jakaś inna zasada? .. na przykład w 2 fizycznym systemie cpu z hiperwątkowem, czy OS przypisuje numer 0.2 do pierwszego fizycznego procesora, a następnie od 1,3 do drugiego fizycznego procesora ...?

Wszelkie odniesienia byłyby naprawdę doceniane.

Z góry dziękuję.

Pozdrawiam, -Jay.

Edycja: Odpowiadanie na pytanie Alana: Muszę to wiedzieć, ponieważ w mojej pracy potrzebuję powiązać różne wątki z konkretnymi procesorami, aby uniknąć przełączeń kontekstowych i chcę się upewnić, że pewne Zadania (THreads) są powiązane z oddzielne fizyczne cpusy:. Dzięki

Odpowiedz

8

Z tego, co wiem, zależy to od sposobu, w jaki procesor eksponuje swoje rdzenie. Gdy HT jest włączone, nie ma żadnych wyeksponowanych fizycznych procesorów, ale raczej dwa logiczne procesory na fizyczny procesor, więc nie ma różnicy, jeśli uruchomisz wątek na dowolnym procesorze logicznym. Jedyne, co ma znaczenie, to to, jakie pary logicznych procesorów należą do każdego fizycznego procesora.

Z procesorami jednordzeniowymi (takimi jak Pentium 4 z HT), jest to całkiem proste, ponieważ masz tylko jedną parę - więc jest to (0, 1). W przypadku czterordzeniowych procesorów (takich jak Nehalem) pary rdzenie logiczne to (0,4), (1,5), (2,6) i (3,7). Wzorzec polegający na tym, że wszystkie pierwsze połówki każdej pary mają wszystkie drugie połówki, są skalowane przy pomocy przyszłych procesorów, które mają jeszcze więcej rdzeni.

Prawdziwe pytanie brzmi: dlaczego musisz znać układ pary? Niech planista systemu operacyjnego wybierze właściwe rdzenie dla właściwych wątków - wykonuje całkiem przyzwoitą pracę.

+1

Chcę wiedzieć, ponieważ chcę powiązać różne zadania (wątki) z różnymi procesami logicznymi. –

+0

Ale dlaczego? Program planujący wątek zadba o prawidłowe wyważenie obciążenia między rdzeniami. Zazwyczaj nie ma potrzeby robienia tego ręcznie (może to nawet zaszkodzić wydajności) i może powodować nieoczekiwane efekty uboczne w przypadku krawędzi. –

+0

Niektóre z algorytmów, których używamy, mają ograniczenia czasowe w mikrosekundach. Jeśli więc nie wymuszamy koligacji procesora na tych wielu wątkach, które przetwarzają te algos, przełączniki kontekstu uniemożliwiają osiągnięcie tych terminów synchronizacji. . –

4

Możesz wyszukać w /sys/devices/system/cpu/, aby znaleźć informacje o procesorach. Układ rdzeni i ich pary hiperwątkowe można znaleźć w /sys/devices/system/cpu/cpuN/topology/thread_siblings_list.

Powiązane problemy