Я пытаюсь понять влияние установки cpu.cpu_quota_us в подсистеме cpu cgroup на производительность приложения. По сути, уменьшая квоту ЦП, но увеличивая количество процессоров, так что «эффективные» процессоры все те же, повлияет ли это на приложение? Например, конфигурация квоты 4 CPU 100% такая же, как конфигурация квот 8 CPU 50%?
Я написал простую программу с интенсивным использованием процессора на https://github.com/ashu-mehra/cpu-quota-test и запускал ее в соответствии с следующей конфигурацией группы:
1 ) В cgroup, которая имеет 4 cpus и не имеет ограничений на квоту
2) В cgroup, которая имеет 8 cpus и 50% квоту
При запуске этой программы для 32 потоков я заметил следующую разницу в пропускная способность, сообщаемая программой для двух конфигураций:
4CPU@100 8CPU@50 176236 87252.5
Производительность 8CPU @ 50 меньше половины того, что я получаю с 4CPU @ 100.
При дальнейшей отладке, Я заметил, что моя система настроена на использование «powerave» частотного регулятора частоты. В этом режиме частота процессора сердечников, когда программа работает на скорости 4CPU @ 100 до максимума, но для 8CPU @ 50 частота процессора в ядрах была намного ниже.
Когда я изменил регулятор частоты процессора на " (что является единственным другим регулятором частоты), производительность с 8CPU @ 50 значительно возрастает по мере того, как ядра начинают работать с максимальной частотой:
4CPU@100 8CPU@50 175804 163831
Мои системные данные:
Ubuntu 16.04.2 LTS
Ядро 4.4.0-103-generic
У меня есть следующие вопросы относительно регуляторов CPUFreq:
1) Эта ссылка https://github.com/ashu-mehra/cpu-quota-test сообщает: «Власть CPUfreq« powerave »устанавливает CPU статически на самую низкую частоту в границах scaling_min_freq и scaling_max_freq." Тем не менее, я заметил, что частота изменяется по мере увеличения нагрузки. Как работает «powerave»?
2) Wy - частота процессора, не увеличивающаяся до max, когда используется «powerave» частотный регулятор частоты и задана квота процессора. Является ли настройка квоты CPU причиной «powerave» для неправильной работы?
Документ, указанный в вашем вопросе 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%, потому что загрузка основанный алгоритм не представлен с достаточной нагрузкой, чтобы гарантировать повышение частоты процессора.
Документ, указанный в вашем вопросе 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%, потому что загрузка основанный алгоритм не представлен с достаточной нагрузкой, чтобы гарантировать повышение частоты процессора.