Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
3.4. cpuset
Подсистема
cpuset
выделяет процессоры и узлы памяти контрольным группам. Ниже перечислены параметры cpuset. Каждый параметр хранится в отдельном псевдофайле в виртуальной файловой системе контрольной группы:
Важно
Для некоторых подсистем существуют обязательные параметры, которые необходимо определить, прежде чем приступать к переносу заданий в контрольную группу. Так, например, чтобы перенести задание в группу, использующую
cpuset
, необходимо определить значения cpuset.cpus
и cpuset.mems
.
- cpuset.cpus (обязательный)
- Определяет процессоры, к которым могут обращаться задания в группе. Представляет собой список значений ASCII, разделенных запятой. Для обозначения диапазона используется дефис. Пример:
0-2,16
Здесь перечислены процессоры 0, 1, 2 и 16. - cpuset.mems (обязательный)
- Определяет узлы памяти, к которым могут обращаться задания в группе. Представляет собой список значений ASCII, разделенных запятой. Для обозначения диапазона используется дефис. Пример:
0-2,16
Здесь перечислены узлы памяти 0, 1, 2 и 16. - cpuset.memory_migrate
- Флаг (
0
или1
), который вызывает перенос страницы памяти на другой узел при изменении значений вcpuset.mems
. По умолчанию эта функциональность отключена (0
) и страницы остаются на исходном узле, даже если узел не включен в список вcpuset.mems
. Если же флаг установлен (1
), страницы будут перенесены на узлы памяти, заданные вcpuset.mems
. При этом по возможности будет поддерживаться их относительное размещение; так, например, страницы со второго узла в исходном списке будут перенесены на второй узел в обновленном спискеcpuset.mems
. - cpuset.cpu_exclusive
- Флаг (
0
или1
), позволяющий совместно использовать назначенный заданному набору cpuset процессор другими cpuset. По умолчанию процессоры не ограничены одним набором cpuset (0
). - cpuset.mem_exclusive
- Флаг (
0
или1
), позволяющий совместно использовать назначенные заданному набору cpuset узлы памяти другими cpuset. По умолчанию узлы памяти не ограничены одним набором cpuset (0
). Их резервирование для одного набора cpuset (1
) эквивалентно установке флагаcpuset.mem_hardwall
. - cpuset.mem_hardwall
- Флаг (
0
или1
), позволяющий ограничить выделение страниц памяти и данных буфера узлами памяти, заданными в текущем наборе cpuset. По умолчанию (0
) страницы и данные буфера могут совместно использоваться процессами, принадлежащими разным пользователям. Установка флага (1
) отделяет выделение заданий для конкретного пользователя от других. - cpuset.memory_pressure
- Этот файл доступен только для чтения и содержит среднее значение нагрузки памяти в результате выполнения процессов, соответствующих текущему набору cpuset. Если флаг
cpuset.memory_pressure_enabled
отключен (0
), то значение в этом файле равно нулю, а при активацииcpuset.memory_pressure_enabled
оно будет рассчитано автоматически. - cpuset.memory_pressure_enabled
- Флаг (
0
или1
), отвечающий за расчет нагрузки памяти, вызванной работой процессов в составе заданной контрольной группы. Значения рассчитываются умножением числа попыток возвращения занятой памяти в секунду на 1000 и характеризуют скорость освобождения процессами используемой памяти. Результаты сохраняются в файлcpuset.memory_pressure
- cpuset.memory_spread_page
- Флаг (
0
или1
), позволяющий равномерно распределить буферы файловой системы между узлами памяти для заданного cpuset. По умолчанию распределение выполняться не будет (0
), поэтому буферы будут помещаться на тот же узел, где выполняется создавший их процесс. - cpuset.memory_spread_slab
- Флаг (
0
или1
), отвечающий за равномерное распределение slab-блоков кэша для операций ввода-вывода в пределах текущего набора cpuset. По умолчанию распределение выполняться не будет (0
), поэтому блоки кэша будут помещаться на тот же узел, где выполняется создавший их процесс. - cpuset.sched_load_balance
- Флаг (
0
или1
), отвечающий за распределение нагрузки между процессорами в составе заданного cpuset. По умолчанию (1
) ядро распределяет нагрузку посредством переноса процессов на менее загруженные процессоры.Установка этого флага в контрольной группе не возымеет эффекта, если в родительской группе включено распределение нагрузки. Следует его отключить во всех родительских группах в иерархии, а также оценить, нужно ли распределение в контрольных группах на том же уровне иерархии. - cpuset.sched_relax_domain_level
- Содержит целое значение, начиная с
-1
и заканчивая небольшим позитивным числом, определяющее диапазон процессоров, между которыми будет распределяться нагрузка. Не имеет эффекта, если отключен флагcpuset.sched_load_balance
.В таблице перечислены типичные значения, хотя действия могут отличаться в зависимости от архитектуры.Значения cpuset.sched_relax_domain_levelЗначение Действие -1
Использовать исходное системное значение для распределения нагрузки 0
Не выполнять распределение нагрузки сразу, а делать это периодически 1
Сразу перераспределить нагрузку между потоками одного ядра 2
Сразу перераспределить нагрузку между ядрами одного пакета 3
Сразу перераспределить нагрузку между процессорами на одном узле или blade-модуле 4
Сразу перераспределить нагрузку между несколькими процессорами в системах с неоднородным доступом к памяти (NUMA) 5
Сразу перераспределить нагрузку между всеми процессорами в системах с NUMA