Связывание процессора
Приложения можно связать с процессорами с помощью системного вызова bindprocessor. При этом предполагается, что нумерация процессоров начинается с нуля (0), и заканчивается на N-1, где N - число включенных CPU.
N определяется программой путем чтения системной переменной _system_configuration.ncpus . При добавлении и удалении процессоров значение этой переменной увеличивается и уменьшается с помощью динамическое распределение ресурсов между разделами.
Учтите, что система нумерации непрерывная. Процессоры всегда добавляются в позицию N и удаляются из позиции N-1. Систему нумерации bindprocessor нельзя применять для связывания конкретного логического процессора, поскольку может быть удален любой процессор, что не будет отражено в нумерации (всегда удаляется процессор N1). По этой причине, идентификаторы, используемые системным вызовом bindprocessor, называются ИД связывания CPU.
- Если после чтения переменной будет удален последний процессор, то bindprocessor вернет сообщение об ошибке. Это сообщение впервые появилось при динамическое отключение процессоров (отключении неработающего процессора).
- Приложения, работа которых зависит от числа процессоров, должны считывать значение переменной _system_configuration.ncpus после каждого изменения числа процессоров.
Приложения можно также связать с набором процессоров с помощью функции программных разделов WLM (WLM). При этом используются ИД логических CPU, которые также начинаются с 0 и заканчиваются на N-1. Однако N в данном случае - это максимальное число процессоров, поддерживаемых архитектурой раздела. В системе нумерации учитываются как включенные, так и выключенные процессоры.
В силу вышесказанного, при удалении процессоров следует знать, какая именно система нумерации применяется. Число включенных процессоров можно узнать командой bindprocessor. Найти процессы и нити, связанные с последним включенным процессором, можно с помощью команды ps. Затем с помощью команды bindprocessor можно определить новые процессоры.
- Просмотрите список программных разделов, используемых WLM, с помощью команды lsrset.
- Найдите требуемые разделы с помощью команды lsclass .
- Найдите набор классов, использующих эти разделы, с помощью команды chclass.
- Измените классы с помощью команды wlmctrl.