Какие потоки OS используются в абстрактной машине Erlang, Beam?

StackOverflow https://stackoverflow.com/questions/3663823

  •  01-10-2019
  •  | 
  •  

Вопрос

Я начал изучать Erlang и найти среду выполнения луча, увлекательной. Обычно заявлено, что в Erlang процессы относятся к языку, а не ОС (что означает время выполнения, означающий луч в этом случае). Это легкий, «зеленые процессы», которые Erlang состоит известен. Это далее заявлено (на странице 5 Эта бумага) Этот луч использует одну (1) поток ОС на CPU Core для планирования и другой резьбы ОС для ввода / вывода. Поэтому мне интересно: из какой темы приступает циклы CPU CPU для фактического выполнения кода Erlang?

Кроме того, если я бегу на двухъярусной машине, я ожидал, что на основании того, что я прочитал так далеко - чтобы увидеть три (3) потока, работающие под процессом луча: два планирования (один для каждого ядра) и одна нить ввода-вывода. Но я вижу 10. Иногда 11. Иногда он начинается в 13 и, как высококачественные усилители, идет до 11.

Я запутался. Любое понимание будет оценено.

Это было полезно?

Решение

После совета @ @ User425720 я задал вопрос о своем вопросе об Справочке Erlang-вопросы. Это также доступно как Google Group.. Отказ Крестьн Краб Торап из Трифока ответил мне почти сразу. Моя благодарность, чтобы выйти в Крестон. Вот его ответ. (Партезы и акцент - мой.)

Вот афаик, основной сценарий:

Код ERLANG будет запущен как многие «зеленые нити», поскольку есть процессы; Предел процесса контролируется флагом + P (командной строки).

Зеленые нити отображаются на потоках S, где S - количество сердечников / процессоров. Дело в том, что Эти потоки также называются планировщикамиМожет казаться несколько запутанным, но с точки зрения VMS. С точки зрения разработчика они являются потоками, которые управляют своим кодом ERLANG. Отказ Число S может контролироваться с помощью параметра + S для командной строки ERL.

Кроме того, Hereto есть ряд так называемых «асинхронных нитей». Это пул резьбы, который используется процессами ввода / вывода, называемого связанными водителями, реагировать на выбор / опрос и т. Д. Количество асинч-нитей является динамическим, но ограниченным флагом + A +.

Итак, 11 потоков, которые вы видите на двухъядерном режиме, могут составлять 2 планировщика и 9 асинковых потоков. Например.

Узнайте больше о флагах здесь.

Другие советы

Процессы Erlang не являются «зелеными», поскольку нити зеленые в Java. Процессы Erlang являются структурами, которые не разделяют память, и они поддерживаются Erlang Vm.

Это может звучать странно, но эта статья может быть «старой» (хотя бы Bio с 2007 года). Все это изменилось вокруг выпуска R13, когда мы получили новую обработку очередей времени выполнения (с динамическими балансирующими вещами и другими вкусами). Вот некоторая презентация ULF Wigger об этом http://ulf.wiger.net/weblog/2009/01/23/erlang-programming-for-multicore/

Подводя итоги, процессы полностью прозрачны, и вы можете настроить количество очередей и планировщиков времени выполнения, но реализация ОС не повреждена. Я не хочу спекулировать, почему есть как 11 нитей ..

Редактировать: я немного неправильно о ОС:

+S Schedulers:SchedulerOnline

Устанавливает количество потоков планировщиков для создания и нитей планировщиков, чтобы установить онлайн, когда поддержка SMP была включена.

Допустимый диапазон для обоих значений составляет 1-1024. Если система выполнения ERLANG может определить количество логических процессоров, сконфигурированных и логических процессоров доступных, планировщики по умолчанию по умолчанию для логических процессоров настроены, а также SchedulersOnline будет по умолчанию для логических процессоров доступных; В противном случае значения по умолчанию будут 1. 1 планировщики могут быть опущены, если :SchedulerOnline нет и наоборот. Сумма планировщиков онлайн может быть изменена во время выполнения через erlang:system_flag(schedulers_online, SchedulersOnline).

...

Этот флаг будет игнорироваться, если эмулятор не имеет поддержки SMP включена (см. -smp флаг).

отсюда: http://www.erlang.org/doc/man/erl.html.

Редактировать2: Интересное обсуждение в списке рассылки erlang-вопроса о плюсах и минусах многих VMS против многих планировщиков. К сожалению, это также с 2008 года и может быть недействительным с огромными улучшениями в новых выпусках OTP. http://www.erlang.org/cgi-bin/ezmlm-cgi?4:mssssssss:38165:200809:nbihpkepgjcfnffkoobf.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top