2013-03-10 3 views
6

В linux, где я работаю в основном, мы используем технику, называемую изоляцией процессора, которая эффективно блокирует процесс на процессоре, а также предотвращает запуск чего-либо другого. Наши ребята из ядра сделали магию для обработки прерываний.Изоляция процессора процессора процессора в Windows

В окнах самая близкая вещь, которую я нашел, - это концепция близости, которая, как представляется, связывает процесс/поток с процессором. Но он не гарантирует, что процессор ТОЛЬКО работает, что процесс/поток означает, что все еще может быть переключатель контекста и другой джиттер.

Есть ли способ иметь центральный процессор, изолированный от окон для полудетерминированного времени работы?

+1

Нет. Вам лучше придерживаться Linux, если вам это нужно. –

ответ

3

В пользовательском режиме нет точного способа. И Windows в основном пытается помешать приложениям перегружать все системные ресурсы. Но вы, вероятно, могли бы изолировать большинство других процессов с другим ядром/процессором, чтобы ваш код мог работать на ядре, в основном посвященном ему.

Начинать поиск at this code here on MSDN по процессам перечисления. Кроме кода перечисления будет указываться PROCESS_SET_INFORMATION как флаг до OpenProcess. Скорее всего, вам понадобится ваш код, запущенный с admin privs, чтобы сделать это для процессов, которые не работают как ваши NT-кредиты. Для каждого полученного обработчика процесса вызовите SetProcessAffinityMask, чтобы настроить процесс на всех ядрах, кроме одного. Затем установите свой процесс для запуска другого на резервном ядре, которое вы выбрали из всех остальных обработчиков процессов.

Это не будет обрабатывать другие процессы при запуске и балансировке нагрузки в ядре, на котором вы пытаетесь запустить свой код.

Ваш пробег может отличаться. Если это просто для тестирования или для машин, посвященных вашему коду, то это, вероятно, будет хорошо. Если это для коммерческого приложения, предназначенного для работы со всеми другими приложениями, клиенты будут ужасно разочарованы, увидев все свои другие приложения и сервисные танки, когда они запускают ваш код. Протектор осторожно.