2013-03-10 8 views
6

w Linuksie, gdzie pracuję głównie używamy techniki zwanej izolacji CPU, który skutecznie blokuje proces do procesora, a także zapobiega procesor z systemem cokolwiek innego. Nasi kernelowie zrobili trochę magii, aby poradzić sobie z przerwaniami.Pin procesor CPU Izolacja na Windows

W oknach najbliższą rzeczą znalazłem jest pojęcie powinowactwo co wydaje się powiązać proces/wątek do procesora. Nie gwarantuje jednak, że procesor działa TYLKO w tym procesie/wątku, co oznacza, że ​​nadal istnieje możliwość zmiany kontekstu i innego jittera.

Czy istnieje sposób, aby mieć CPU samodzielnie na oknach na pół-deterministycznych czasów biegania?

+1

Nie. Lepiej trzymaj się Linuxa, jeśli tego potrzebujesz. –

Odpowiedz

3

Nie ma dokładny sposób do tego w trybie użytkownika. A system Windows stara się głównie uniemożliwić aplikacjom gromadzenie wszystkich zasobów systemowych. Ale prawdopodobnie możesz wyizolować większość innych procesów do innego rdzenia/procesora, tak, że twój kod może działać na rdzeniu głównie poświęconym temu procesowi.

zacząć od spojrzenia na procesy at this code here on MSDN wyliczanie. Z wyjątkiem Twojego kodu wyliczeniowego będzie określać PROCESS_SET_INFORMATION jako flagę na OpenProcess. Prawdopodobnie będziesz potrzebował swojego kodu działającego z uprawnieniami administratora, aby to zrobić dla procesów, które nie działają jako twoje credo NT. Dla każdego uzyskanego uchwytu procesu wywołaj SetProcessAffinityMask, aby ustawić proces do uruchomienia na wszystkich rdzeniach oprócz jednego. Następnie ustaw swój proces tak, aby uruchamiał inny na zarezerwowanym rdzeniu, który został usunięty ze wszystkich innych uchwytów procesu.

To nie będzie obsługiwać innych procesów od uruchomienia i pobierania obciążenia do rdzenia, na którym próbujesz uruchomić swój kod.

Twój przebieg może się różnić. Jeśli jest to tylko do testowania lub do maszyn dedykowanych dla twojego kodu, to prawdopodobnie będzie dobrze. Jeśli dotyczy to aplikacji komercyjnej, która ma działać równolegle do wszystkich innych aplikacji, klienci będą strasznie rozczarowani, gdy zobaczą wszystkie inne aplikacje i usługi, gdy uruchomią kod. Unikaj uważnie.

Powiązane problemy