Соответствие процессора

редактировать

Соответствие процессора или Закрепление ЦП или «привязка кеша», включает привязку и отмену привязки процесса или потока к центральному процессу ing unit (CPU) или диапазон процессоров, так что процесс или поток будет выполняться только на указанном CPU или CPU, а не на любом CPU. Это можно рассматривать как модификацию собственного алгоритма планирования центральной очереди в операционной системе с симметричной многопроцессорной обработкой. У каждого элемента в очереди есть тег, указывающий его родственник процессор. Во время распределения ресурсов каждая задача выделяется своему родственному процессору, а не другим.

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

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

Содержание

  • 1 Использование
  • 2 Отдельные операционные системы
  • 3 См. Также
  • 4 Ссылки

Использование

Сходство процессора может эффективно уменьшить проблемы с кешем, но не уменьшает постоянная проблема балансировки нагрузки. Также обратите внимание, что привязка процессора становится более сложной в системах с неоднородной архитектурой. Например, система с двумя двухъядерными гиперпотоковыми ЦП представляет проблему для алгоритма планирования.

Существует полное сходство между двумя виртуальными ЦП, реализованными на одном ядре посредством гиперпоточности, частичное сходство между двумя ядрами на одном физическом процессоре (поскольку ядра совместно используют некоторый, но не весь кэш), и нет сходство между отдельными физическими процессорами. Поскольку другие ресурсы также являются общими, одно только сходство процессора не может использоваться в качестве основы для диспетчеризации ЦП. Если процесс недавно выполнялся на одном виртуальном гиперпоточном ЦП в данном ядре, и этот виртуальный ЦП в настоящее время занят, а ЦП-партнер - нет, сродство кеша предполагает, что процесс должен быть отправлен на ЦП-партнер, который не используется. Однако два виртуальных процессора конкурируют практически за все вычислительные ресурсы, кэш-память и ресурсы памяти. В этой ситуации, как правило, более эффективно направить процесс на другое ядро ​​или ЦП, если таковой имеется. Это может привести к штрафу, когда процесс повторно заполняет кеш, но общая производительность может быть выше, поскольку процессу не придется конкурировать за ресурсы внутри ЦП.

Конкретные операционные системы

В Linux привязка процесса к процессору может быть изменена с помощью программы taskset (1) и системного вызова sched_setaffinity (2). Сходство потока можно изменить с помощью одной из библиотечных функций: pthread_setaffinity_np (3) или pthread_attr_setaffinity_np (3).

В системах SGI dplace связывает процесс с набором процессоров.

В DragonFly BSD 1.9 (2007) и более поздних версиях, системный вызов usched_set может использоваться для управления привязкой процесса. В NetBSD 5.0, FreeBSD 7.2, DragonFly BSD 4.7 и более поздних версиях можно использовать pthread_setaffinity_np и pthread_getaffinity_np. В NetBSD - служебная программа psrset для установки привязки потока к определенному набору ЦП. В FreeBSD утилита cpuset используется для создания наборов ЦП и назначения процессов этим наборам. В DragonFly BSD 3.1 (2012) и более поздних версиях утилита usched может использоваться для назначения процессов определенному набору ЦП.

В Windows NT и ее преемниках поток Аффинность ЦП процессов может быть установлена ​​отдельно с помощью вызовов API SetThreadAffinityMask и SetProcessAffinityMask или через интерфейс диспетчера задач (только для соответствия процессов).

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

В Solaris можно управлять привязками процессов и LWP к процессору с помощью программы pbind (1). Для программного управления привязкой можно использовать processor_bind (2). Доступны более общие интерфейсы, такие как pset_bind (2) или lgrp_affinity_get (3LGRP), использующие концепции набора процессоров и групп местности.

В AIX можно управлять привязками процессов с помощью команды bindprocessor и API bindprocessor.

См. Также

Ссылки

Последняя правка сделана 2021-06-02 07:27:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте