Externaly, ограничивающий количество ядер процессора, используется

Вы попытались изменить свои планировщики ввода-вывода?

   mccoy:/sys/block/sdb/queue # cat scheduler 
   noop anticipatory deadline [cfq] 
   mccoy:/sys/block/sdb/queue # echo noop > scheduler 
   mccoy:/sys/block/sdb/queue # cat scheduler 
   [noop] anticipatory deadline cfq 

Значение по умолчанию является CFQ обычно для большинства систем "в настоящее время".

Для сравнения планировщиков ввода-вывода делают следующее:

Тестирование чтения:

# echo 3 > /proc/sys/vm/drop_caches

Это удостоверится, что Вы тестируете диск и не кэшируемые страницы RAM, это сбросит кэш.

Тестирование записи:

Скопируйте свои файлы многократно одновременно. После того как записи являются полной проблемой a sync

Если Вы тестируете обоих, которые можно хотеть drop_caches и звоните sync когда копия сделана. В дополнение к планировщику существуют tunables для каждого планировщика. Но, быстрый тест должен был бы изменить планировщик и попробовать еще раз. Если у Вас есть хороший контроллер noop разгрузит "Планирование ввода-вывода' к нему и не выполнит любое планирование данных уровня ОС.

Так или иначе это стоит попытки, и это только берет echo задерживать его.

6
01.06.2013, 01:30
3 ответа

Мы пошли с cgroups, поскольку на самом деле, похоже, нет другого подхода, который позволил бы это сделать.

Cgroups позволяют ограничивать загрузку процессора через планировщик ядра, используя cpu.cfs_period_us и cpu.cfs_quota_us . Это позволяет избежать явной спецификации ядер ЦП.

1
27.01.2020, 20:29

Это могло бы быть слишком много служебным для Вас, но если я должен протестировать что-то на меньшем количестве ядер, чем моя машина имеет в наличии, я устанавливаю VirtualBox VM и указываю количество центральных процессоров в конфигурации.

0
27.01.2020, 20:29

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

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

Различие в определении в основном сводится к этому: или Вы заботитесь, как, какие физические ядра Ваш процесс работают или Вы не делаете. Если у Вас нет требований к производительности, которые требуют, чтобы процессы работали на конкретном ЦП (определенные кэши ЦП остаются теплыми, гарантируют, чтобы связанные процессы не выполнялись на внешних узлах NUMA, что особые прерывания обрабатываются определенным набором ЦП, и т.д.), затем все, что Вы, вероятно, просто пытаетесь управлять выделением процессорного времени. В этом случае это - ошибка думать с точки зрения "ядер процессора", когда то, что Вы действительно имеете в виду, является "Процессорным временем".

Какие части cgroups Вам нелегко интегрировать? Я могу обновить свой ответ, после того как я знаю, с какой определенной проблемой Вы сталкиваетесь.

4
27.01.2020, 20:29

Теги

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