Можно ли предотвратить использование ядра ЦП ОС в Linux? Параметр загрузки maxcpus =
предотвращает отображение указанного количества ядер в ОС. Я хочу, чтобы все ядра были видны, но только некоторые из них использовались ОС для планирования процессов.
РЕДАКТИРОВАТЬ: Это необходимо, чтобы гарантировать, что критические процессы могут быть запланированы на ядре и, оставаясь не совсем важными, но процессами с высокой загрузкой ЦП, могут конкурировать между собой за другие ядра. Это на CentOS 6.
Используйте isolcpus
] в командной строке ядра, чтобы изолировать определенные ядра от задач пользовательского пространства. Цитата из документации по параметрам загрузки ядра :
isolcpus = [KNL, SMP] Изолировать процессоры от общего планировщика. Формат: , ..., или же - (должен быть положительный диапазон в порядке возрастания) или смесь , ..., -
Эта опция может использоваться для указания одного или нескольких процессоров изолировать от общей балансировки и планирования SMP алгоритмы. Вы можете перенести процесс на «изолированный» ЦП с помощью системных вызовов сходства ЦП или процессора. <номер процессора> начинается с 0, а максимальное значение «количество процессоров в системе - 1». Этот вариант является предпочтительным способом изоляции ЦП. В альтернатива - ручная установка маски ЦП для всех задачи в системе - могут вызвать проблемы и неоптимальная производительность балансировщика нагрузки.
Общий ответ ... пока вы не предоставите дополнительную информацию.
Возможно, вы захотите использовать инструмент изоляции ЦП, выбранный для вашего дистрибутива. Кроме того, контрольные группы могут иметь значение, в зависимости от того, что вы конкретно пытаетесь выполнить.
разница между набором задач и процессором
Правка:
Вы ищете щит процессора. На 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/
Вы можете отключить процессоры, например (core0) с помощью echo 0> / sys / devices / system / cpu / cpu0 / online
и включить с помощью echo 1> / sys / devices / system / cpu / cpu0 / online
Вы можете проверить состояние с помощью cat / proc / cpuinfo