Поведение регулятора частоты powersave при установке квоты процессора

Поведение регулятора частоты powersave при установке квоты процессора

Я пытаюсь понять влияние настройки cpu.cpu_quota_us в cpu cgroup subsytem на производительность приложения. По сути, путем уменьшения квоты ЦП, но увеличения количества ЦП таким образом, чтобы "эффективные" ЦП остались прежними, повлияет ли это на приложение? Например, конфигурация квоты 4 ЦП 100% такая же, как конфигурация квоты 8 ЦП 50%?

Я написал простую программу, интенсивно использующую процессор. https://github.com/ashu-mehra/cpu-quota-testи запустил его под следующей конфигурацией cgroup:

1) В cgroup, которая имеет 4 процессора и не имеет ограничений по квоте

2) В cgroup, которая имеет 8 процессоров и 50% квоты

При запуске этой программы для 32 потоков я заметил следующую разницу в пропускной способности, сообщаемой программой для двух конфигураций:

4ЦП@100 8ЦП@50
176236 87252.5

Производительность 8CPU@50 составляет менее половины того, что я получаю с 4CPU@100.

При дальнейшей отладке я заметил, что моя система настроена на использование регулятора частоты ЦП "powersave". В этом режиме частота ядер ЦП при запуске программы на 4CPU@100 достигала максимума, но для 8CPU@50 частота ядер ЦП была намного ниже.

Когда я изменил регулятор частоты ЦП на «производительность» (это единственный другой доступный регулятор частоты), производительность при 8CPU@50 значительно возросла, поскольку ядра начали работать на максимальной частоте:

4ЦП@100 8ЦП@50
175804 163831

Подробности моей системы:

Ubuntu 16.04.2 LTS

Ядро 4.4.0-103-generic

У меня есть следующие вопросы относительно регуляторов CPUFreq:

1) Эта ссылкаhttps://www.kernel.org/doc/Documentation/cpu-freq/governors.txtсообщает: "Регулятор CPUfreq "powersave" статически устанавливает ЦП на самую низкую частоту в пределах scaling_min_freq и scaling_max_freq". Однако я заметил, что частота меняется по мере увеличения нагрузки. Как на самом деле работает "powersave"?

2) Почему частота ЦП не увеличивается до максимума, когда используется регулятор частоты ЦП "powersave" и установлена ​​квота ЦП? Является ли установка квоты ЦП причиной неправильного поведения "powersave"?

решение1

Документ, на который вы ссылаетесь в вашем вопросе 1, относится к драйверу масштабирования частоты ЦП acpi-cpufreq. Я думаю, но не уверен, что вы используете драйвер масштабирования частоты ЦП intel_pstate. Чтобы узнать наверняка, спросите свою систему:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate

Регулятор powersave в драйвере intel_pstate ведет себя аналогично регулятору ondemand в драйвере acpi-cpufreq. Алгоритмы управления меняются, но если у вас достаточно новое ядро, оно должно быть основано на загрузке.

Частота ЦП не увеличивается значительно или вообще не увеличивается, если ограничить ее использование до 50%, поскольку алгоритм, основанный на нагрузке, не испытывает достаточной нагрузки, чтобы оправдать повышение частоты ЦП.

Связанный контент