Можно ли предотвратить использование ядра ЦП ОС в Linux? В maxcpus=<n>
Параметр загрузки предотвращает отображение указанного количества ядер в ОС. Я хочу, чтобы все ядра были видны, но только некоторые из них использовались ОС для планирования процессов.
РЕДАКТИРОВАТЬ: это необходимо, чтобы гарантировать, что критические процессы могут быть запланированы на ядре и, оставаясь не совсем важными, но процессы с высокой загрузкой процессора, могут соревноваться между собой за другие ядра. Это на CentOS 6.
Использовать isolcpus
параметр в командной строке ядра, чтобы изолировать определенные ядра от задач пользовательского пространства. Цитата из параметров загрузки ядра документация:
Isolcpus = [KNL, SMP] Изолировать процессоры от общего планировщика. Формат:, ..., или - (должен быть положительный диапазон в порядке возрастания) или смесь, ..., -
This option can be used to specify one or more CPUs to isolate from the general SMP balancing and scheduling algorithms. You can move a process onto or off an "isolated" CPU via the CPU affinity syscalls or cpuset. <cpu number> begins at 0 and the maximum value is "number of CPUs in system - 1". This option is the preferred way to isolate CPUs. The alternative -- manually setting the CPU mask of all tasks in the system -- can cause problems and suboptimal load balancer performance.
Вы можете отключить процессоры, например (core0) с помощью echo 0 > /sys/devices/system/cpu/cpu0/online
и включить с echo 1 > /sys/devices/system/cpu/cpu0/online
Вы можете проверить состояние с помощью cat /proc/cpuinfo
Общий ответ... пока вы не предоставите дополнительную информацию.
Возможно, вы захотите использовать инструмент изоляции ЦП, выбранный для вашего дистрибутива. Кроме того, контрольные группы могут иметь значение, в зависимости от того, что вы конкретно пытаетесь выполнить.
разница между набором задач и процессором
Редактировать:
Вам нужен щит процессора. На EL6 вы можете прочитать о cgroups и cgred
демон и cgconfig
пакет.
Например:
/etc/cgconfig.conf:
mount {
cpuset = /cgroup/cpuset;
cpu = /cgroup/cpu;
cpuacct = /cgroup/cpuacct;
memory = /cgroup/memory;
devices = /cgroup/devices;
freezer = /cgroup/freezer;
net_cls = /cgroup/net_cls;
blkio = /cgroup/blkio;
}
group ppro-users {
cpuset {
cpuset.mems="0-1";
cpuset.cpus="2-7,14-19";
}
cpu {
cpu.shares = 1000;
}
memory {
memory.limit_in_bytes = 40960m;
}
}
Приведенный выше фрагмент ограничивает процессы в контрольной группе "ppro-users" определенными процессорами. Я дополняю это, используя пакет cgred для идентификации и управления процессами, которые должны принадлежать этой cgroup.
/etc/cgrules.conf
# Example:
#<user> <controllers> <destination>
#@student cpu,memory usergroup/student/
#peter cpu test1/
#% memory test2/
admin cpu,cpuset,memory ppro-users/
@ppro:dbc cpu,cpuset,memory ppro-users/