Привязка к процессору


Привязка к процессору (англ. processor affinity), или закрепление процессора, или привязка к кэшу, — технология, которая обеспечивает закрепление и открепление процесса или потока к конкретному ядру центрального процессора, центральному процессору или набору процессоров, так что процесс или поток будут выполняться только на указанном ядре, процессоре или процессорах, а не на любом процессоре многопроцессорной системы. Привязку процессора можно рассматривать как модификацию алгоритма планирования центральной очереди задач в многопроцессорной операционной системе. Каждому элементу в очереди задач сопоставлен тег, задающие «родственные» ему процессоры.

При выделении ресурсов каждая задача предпочтительным образом распределяется для выполнения на одном из «родственных» процессоров. Технология привязки к процессору использует тот факт, что данные и настройки процесса, который ранее был запущен на данном процессоре, могут быть оказаться более быстродоступными для этого процессора, чем для какого-то ещё. Это может происходить, например, из-за кэширования данных процесса в кэш-памяти процессора, а так же в некоторых других ситуациях. Планирование выполнения такого процесса на одном и том же процессоре повышает его производительность за счет уменьшения снижающих производительность событий, таких как потери в кеше.

Кроме того, в ряде систем каждый из процессоров может иметь более быстрый доступ к близкому ему региону оперативной памяти. При этом, оказывается рациональным сохранять постоянную привязку процесса к тому процессору, доступ которого к оперативной памяти, где расположены данные этого процесса, является более быстрым.

Практическим примером сродства процессора является выполнение нескольких экземпляров немногопоточного приложения, такого как некоторое программное обеспечение для рендеринга графики.

Реализация алгоритма планирования задач, обеспечивающего возможность привязки к процессору, реализуется с учётом особенностей конкретных процессора и построения многопроцессорной системы, управляя которой будет работать такой алгоритм. Некоторые реализации при определенных обстоятельствах позволят перевести задачу на другой процессор, преодолевая привязку. Это делается в тех случаях, когда, с точки зрения планировщика, такое переключение приведет к повышению эффективности выполнения задач. Например, когда двум задачам, интенсивно использующих процессор (A и B), установлена привязка к одному и тому же процессору, а другой процессор не используется, многие планировщики переключат задачу B на второй процессор, чтобы максимально использовать доступные системе процессорные мощности. Привязка задачи B к новому процессору в такой момент будет выставлена самим планировщиком.