Назад | Перейти на главную страницу

Как предотвратить использование определенного ядра процессора?

Можно ли предотвратить использование ядра ЦП ОС в 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/