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

Можно ли предотвратить использование ядра ЦП ОС в Linux? Параметр загрузки maxcpus = предотвращает отображение указанного количества ядер в ОС. Я хочу, чтобы все ядра были видны, но только некоторые из них использовались ОС для планирования процессов.

РЕДАКТИРОВАТЬ: Это необходимо, чтобы гарантировать, что критические процессы могут быть запланированы на ядре и, оставаясь не совсем важными, но процессами с высокой загрузкой ЦП, могут конкурировать между собой за другие ядра. Это на CentOS 6.

0
задан 27 May 2016 в 15:29
3 ответа

Используйте isolcpus ] в командной строке ядра, чтобы изолировать определенные ядра от задач пользовательского пространства. Цитата из документации по параметрам загрузки ядра :

isolcpus = [KNL, SMP] Изолировать процессоры от общего планировщика. Формат: , ..., или же - (должен быть положительный диапазон в порядке возрастания) или смесь , ..., -

  Эта опция может использоваться для указания одного или нескольких процессоров
  изолировать от общей балансировки и планирования SMP
  алгоритмы.  Вы можете перенести процесс на
  «изолированный» ЦП с помощью системных вызовов сходства ЦП или процессора.
  <номер процессора> начинается с 0, а максимальное значение
  «количество процессоров в системе - 1».

  Этот вариант является предпочтительным способом изоляции ЦП.  В
  альтернатива - ручная установка маски ЦП для всех
  задачи в системе - могут вызвать проблемы и
  неоптимальная производительность балансировщика нагрузки.
 
3
ответ дан 4 December 2019 в 11:10

Общий ответ ... пока вы не предоставите дополнительную информацию.

Возможно, вы захотите использовать инструмент изоляции ЦП, выбранный для вашего дистрибутива. Кроме того, контрольные группы могут иметь значение, в зависимости от того, что вы конкретно пытаетесь выполнить.

разница между набором задач и процессором


Правка:

Вы ищете щит процессора. На 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/
2
ответ дан 4 December 2019 в 11:10

Вы можете отключить процессоры, например (core0) с помощью echo 0> / sys / devices / system / cpu / cpu0 / online и включить с помощью echo 1> / sys / devices / system / cpu / cpu0 / online

Вы можете проверить состояние с помощью cat / proc / cpuinfo

2
ответ дан 4 December 2019 в 11:10

Теги

Похожие вопросы