ограничить количество ядер, используемых erlang
Я провожу эксперименты на узле с 2-мя четырехъядерными процессорами Xeon E5520 2,2 ГГц, 24,0 ГБ оперативной памяти и Erlang R15B02 (SMP включен). Я задаюсь вопросом, Могу ли я ограничить количество ядер, используемых виртуальной машиной Erlang, чтобы я мог временно отключить некоторые ядра и увеличить их количество шаг за шагом, чтобы проверить масштабируемость.
У меня нет корневого доступа на этом узле. Поэтому я ожидаю какой-то метод, который либо задает параметры в erl
, либо использует код Erlang.
1 ответ:
Вы можете ограничить число ядер, используемых Erlang, с помощью опции
+S
доerl
, которая позволяет задать количество потоков ядра планировщика, создаваемых Erlang. Смотрите man-страницуerl для получения более подробной информации.Обратите внимание, что Erlang драйверы связанных портов и собственные реализованные функции (NIFs) могут создавать свои собственные потоки и, таким образом, влиять на то, сколько ядер будет использовать процесс Erlang независимо от потоков, указанных через опцию
+S
, хотя ни один из этих потоков не может быть использован. это делают стандартные драйверы или NIFs. Кроме того, опция+A
дляerl
создает пул асинхронных потоков для использования драйверами, которые также могут влиять на количество используемых ядер, и по умолчанию пул асинхронных потоков имеет 10 потоков (он был пуст по умолчанию до Erlang/OTP версии R16B).