ограничить количество ядер, используемых erlang


Я провожу эксперименты на узле с 2-мя четырехъядерными процессорами Xeon E5520 2,2 ГГц, 24,0 ГБ оперативной памяти и Erlang R15B02 (SMP включен). Я задаюсь вопросом, Могу ли я ограничить количество ядер, используемых виртуальной машиной Erlang, чтобы я мог временно отключить некоторые ядра и увеличить их количество шаг за шагом, чтобы проверить масштабируемость.

У меня нет корневого доступа на этом узле. Поэтому я ожидаю какой-то метод, который либо задает параметры в erl, либо использует код Erlang.

1 4

1 ответ:

Вы можете ограничить число ядер, используемых Erlang, с помощью опции +S до erl, которая позволяет задать количество потоков ядра планировщика, создаваемых Erlang. Смотрите man-страницуerl для получения более подробной информации.

Обратите внимание, что Erlang драйверы связанных портов и собственные реализованные функции (NIFs) могут создавать свои собственные потоки и, таким образом, влиять на то, сколько ядер будет использовать процесс Erlang независимо от потоков, указанных через опцию +S, хотя ни один из этих потоков не может быть использован. это делают стандартные драйверы или NIFs. Кроме того, опция +A для erl создает пул асинхронных потоков для использования драйверами, которые также могут влиять на количество используемых ядер, и по умолчанию пул асинхронных потоков имеет 10 потоков (он был пуст по умолчанию до Erlang/OTP версии R16B).