Выделите полный процессор для определенного потока, чтобы максимизировать производительность и избежать переключения контекста
У меня есть задача не распараллеливаемая, которую я хочу обработать как можно быстрее. Эта задача выполняет чистые вычисления, без ввода-вывода.
Конечно, эта задача выполняется в многоядерной системе, и многие другие процессы одновременно выполняют "вещи", которые также требуют использования процессора.
Сегодня моя задача оптимизирована настолько, насколько это возможно (скажем, она идеальна:-P), моя идея еще раз увеличить ее, заключаться в том, чтобы выделить полный процессор для его потока.
В этих условиях никакие другие потоки не будут использовать совместно с ним ЦП, поэтому переключение контекста не прервет мою задачу; Это должно немного ускорить процесс, почти без усилий. (конечно, это будет сделано в ущерб другим процессам, но это совсем не проблема: наивысший приоритет отдается моей задаче!)
Но как я могу делать то, что я хочу? Я знаю, как установить сродство потока моей задачи, чтобы назначить его данному ЦП, но этот ЦП потенциально может использоваться совместно с другими потоками; моя проблема не решена
Спасибо за помощь
1 ответ
Исследуя этот вопрос, я наконец нашел следующие интересные ссылки: