Связывание процессора

Приложения можно связать с процессорами с помощью системного вызова bindprocessor. При этом предполагается, что нумерация процессоров начинается с нуля (0), и заканчивается на N-1, где N - число включенных CPU.

N определяется программой путем чтения системной переменной _system_configuration.ncpus . При добавлении и удалении процессоров значение этой переменной увеличивается и уменьшается с помощью динамическое распределение ресурсов между разделами.

Учтите, что система нумерации непрерывная. Процессоры всегда добавляются в позицию N и удаляются из позиции N-1. Систему нумерации bindprocessor нельзя применять для связывания конкретного логического процессора, поскольку может быть удален любой процессор, что не будет отражено в нумерации (всегда удаляется процессор N1). По этой причине, идентификаторы, используемые системным вызовом bindprocessor, называются ИД связывания CPU.

Изменение системной переменной _system_configuration.ncpus влияет на следующее:
  • Если после чтения переменной будет удален последний процессор, то bindprocessor вернет сообщение об ошибке. Это сообщение впервые появилось при динамическое отключение процессоров (отключении неработающего процессора).
  • Приложения, работа которых зависит от числа процессоров, должны считывать значение переменной _system_configuration.ncpus после каждого изменения числа процессоров.

Приложения можно также связать с набором процессоров с помощью функции программных разделов WLM (WLM). При этом используются ИД логических CPU, которые также начинаются с 0 и заканчиваются на N-1. Однако N в данном случае - это максимальное число процессоров, поддерживаемых архитектурой раздела. В системе нумерации учитываются как включенные, так и выключенные процессоры.

В силу вышесказанного, при удалении процессоров следует знать, какая именно система нумерации применяется. Число включенных процессоров можно узнать командой bindprocessor. Найти процессы и нити, связанные с последним включенным процессором, можно с помощью команды ps. Затем с помощью команды bindprocessor можно определить новые процессоры.

Для поиска зависимостей WLM необходимо определить конкретный программный раздел, вызвавший ошибку. Для устранения зависимостей выполните следующие действия:
Прим.: Система не связывает с заданиями отключенные или ожидающие отключения процессоры, поэтому если в программном разделе есть другой включенный процессор, то никакие изменения вносить не требуется.
  1. Просмотрите список программных разделов, используемых WLM, с помощью команды lsrset.
  2. Найдите требуемые разделы с помощью команды lsclass .
  3. Найдите набор классов, использующих эти разделы, с помощью команды chclass.
  4. Измените классы с помощью команды wlmctrl.
После этого в силу вступят новые определения классов, и система автоматически перенесет связанные задания с удаляемого логического процессора.