Книга: Разработка ядра Linux
Системные вызовы управления процессорной привязкой
Системные вызовы управления процессорной привязкой
Планировщик ОС Linux может обеспечивать жесткую процессорную привязку (processor affinity). Хотя планировщик пытается обеспечивать мягкую или естественную привязку путем удержания процессов на одном и том же процессоре, он также позволяет пользователям сказать: "Эти задания должны выполняться только на указанных процессорах независимо ни от чего". Значение жесткой привязки хранится в виде битовой маски в поле cpus_allowed
структуры task_struct
. Эта битовая маска содержит один бит для каждого возможного процессора в системе. По умолчанию все биты установлены в значение 1, и поэтому процесс потенциально может выполняться на всех процессорах в системе. Пользователь с помощью функции sched_setaffinity()
может указать другую битовую маску с любой комбинацией установленных битов. Аналогично функция sched_getaffinity()
возвращает текущее значение битовой маски cpus_allowed
.
Ядро обеспечивает жесткую привязку очень простым способом. Во-первых, только что созданный процесс наследует маску привязки от родительского процесса. Поскольку родительский процесс выполняется на дозволенном процессоре, то и порожденный процесс также будет выполняться на дозволенном процессоре. Во-вторых, когда привязка процесса изменяется, ядро использует миграционные потоки (migration threads) для проталкивания задания на дозволенный процессор. Следовательно, процесс всегда выполняется только на том процессоре, которому соответствует установленный бит в поле cpus_allowed
дескриптора процесса.
- 10.4.4. Системные вызовы, допускающие повторный запуск
- Системные вызовы для управления планировщиком
- Системные вызовы, связанные с управлением стратегией и приоритетом
- Глава 20 Консольные инструменты управления пакетами
- Глава 19 Сокеты управления ключами
- Формы и элементы управления - программируемые объекты
- Урезанная функциональность элементов управления
- Режимы управления
- Основные "рычаги" управления производительностью
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- Системные вызовы и драйверы устройств