Erlang NUMA Технологическая конфигурация - PullRequest
2 голосов
/ 07 февраля 2020

Я пытаюсь запустить приложение erlang на openstack vm и получаю очень низкую производительность, и после тестирования я обнаружил, что что-то происходит с NUMA, это то, что я наблюдаю в своем тесте.

Мой компьютер с открытым стеком вычисляет 32 ядро, поэтому я создал 30 vCPU core vm на нем, который обладает всеми знаниями NUMA, когда я запускаю тест приложения Erlang на этой виртуальной машине, получая худшую производительность, но затем я создаю новую виртуальную машину с 16 ядрами vCPU (в этом случае мой весь виртуальный процессор закреплен на Numa-0), и в этом случае результаты тестов были отличными.

на основании вышеприведенного теста ясно, что если я оставляю виртуальную машину на одном узле numa, производительность намного выше, но когда я распространяю ее на несколько зон numa, Хуже.

Но интересно то, что когда я запускаю одно и то же приложение erlang, работающее на голом железе, тогда производительность действительно хорошая, поэтому пытаемся понять, почему то же приложение, работающее на ВМ, не работает?

Есть ли какие-либо настройки в erlang для лучшего соответствия NUMA при работе на виртуальной машине? е

1 Ответ

1 голос
/ 07 февраля 2020

Возможно, что Erlang не сможет правильно определить топологию процессора вашей виртуальной машины.

Вы можете проверить топологию процессора, видимую виртуальной машиной, используя lscpu и lstopo-no-graphics из hwlo c пакет:

#lscpu | egrep '^(CPU\(s\)|Thread|Core|Socket|NUMA)'
#lstopo-no-graphics --no-io

Если это выглядит неправильно, рассмотрите возможность перестройки виртуальной машины с использованием параметров OpenStack, таких как hw:cpu_treads=2 hw:cpu_sockets=2, как описано в https://specs.openstack.org/openstack/nova-specs/specs/juno/implemented/virt-driver-vcpu-topology.html

Вкл. на стороне Erlang вы можете поэкспериментировать с опциями Erlang VM +sct, +sbt, как описано в http://erlang.org/doc/man/erl.html# + sbt

...