Что делает средние операторы информации об эмуляторе Erlang?

Завершенный код является выбором номер один, но я также процитировал бы Банду Шаблонов разработки Four и Применения Craig Larman UML и Шаблонов.

Бесконечный Способ Создать, Christopher Alexander, является другим большой. Даже при том, что это о archtecture, это включено в библиографию многих замечательных книг программирования, которые я уже прочитал.

Другой, из которого я узнаю о большом количестве новых вещей, является Шаблонами Доступа к данным Клифтонской Зарубкой.

30
задан Stu Thompson 26 July 2009 в 08:23
поделиться

2 ответа

[async-threads: 0]

Размер пула асинхронных потоков, доступного для использования загруженными драйверами. Это позволяет выполнять блокирующие системные вызовы в отдельном потоке ядра от виртуальной машины луча. Используйте командный переключатель + AN , чтобы настроить размер пула.

[hipe]

Поддержка собственной компиляции исходного кода Erlang и байт-кода. В основном полезен для кода, обрабатывающего числа. Код, связанный с вводом-выводом, отлично работает с интерпретатором байт-кода.

[kernel-poll: false]

Существуют старые системные вызовы select (2) и poll (2) для получения уведомления о том, что некоторый файловый дескриптор готов для разблокировки записи или чтения. Они плохо масштабируются для большого количества дескрипторов открытых файлов. В современных операционных системах есть альтернативные интерфейсы, в linux есть epoll, у freebsd есть kqueue. Включить с помощью командного переключателя + K true

24
ответ дан 27 November 2019 в 23:16
поделиться

Начиная с Erlang 20.0 , полный набор тегов строки версии:

[64-бит]

Эмулятор BEAM создан для полноценного использования 64-битного ЦП.

[async-threads: 10]

Это относится к количеству потоков в пуле асинхронных потоков эмулятора Erlang, который более или менее сообщает вам, сколько заблокированных системных вызовов можно выделить в фоновые потоки, прежде чем эмулятор остановится. .

Хотя в настоящее время значение по умолчанию равно 10, в течение многих лет по умолчанию было 0, что означало, что все системные вызовы выполнялись синхронно в каждом потоке эмулятора Erlang. Когда системный вызов блокируется, он останавливает выполнение этого потока эмулятора Erlang до завершения системного вызова. Текущее небольшое значение по умолчанию позволяет эмулятору попытаться отключиться и сделать что-нибудь еще, пока системный вызов блокирует один из потоков асинхронного ввода-вывода.

Вы можете изменить значение по умолчанию с помощью + A ] для среды выполнения Erlang. (например, erl + A 50 ) Если вы собираетесь это изменить, помните, что ваши результаты будут зависеть от вашей конкретной системы и рабочей нагрузки. Слишком высокое значение может снизить производительность, потому что это заставляет систему пытаться делать много вещей в фоновом режиме, когда система очень занята, что только делает ее еще более загруженной. Для некоторых рабочих нагрузок отключение функции с помощью erl + A 0 может быть лучшим вариантом.

[debug-compiled]

Это появляется только в том случае, если вы изо всех сил стараетесь создать альтернативный эмулятор BEAM с параметрами компилятора, установленными для упрощения отладки полученного исполняемого файла, как в случае gdb или похожие. Вы также должны запускать этот альтернативный эмулятор BEAM особым образом.

Эмулятор Erlang BEAM обычно создается для повышения скорости, что часто усложняет работу отладчика. Если вы работаете над разработкой следующей версии эмулятора BEAM, вам может быть полезно запускать его специальные отладочные сборки по мере совершенствования своей работы.

Чтобы включить этот режим, cd в erts / emulator в дереве исходных текстов Erlang после того, как вы запустите на нем configure , затем введите что-то вроде ERL_TOP = .. / .. make FLAVOR = smp debug . Затем, чтобы запустить ваш новый отлаживаемый эмулятор BEAM,

[ds: 1: 1: 1]

Начиная с ERTS 9.0, это всегда должно отображаться, если вы создали эмулятор BEAM с поддержкой SMP. Это относится к функции « грязные планировщики ». Значения описывают конфигурацию функции в этой системе.

Эта функция была введена в Erlang 19.0, первоначально как экспериментальная функция, которая не компилировалась по умолчанию в сборках SMP, как в Erlang 20.0.

[dtrace]

Появляется, если вы передали - with-dynamic-trace = dtrace в сценарий configure , чтобы включить экспериментальные инструменты DTrace функция добавлена ​​в R15B01. Ожидается, что эта функция будет работать только в OS X, Solaris и FreeBSD. В будущем он может работать на других платформах. См. [systemtap] ниже, чтобы узнать об альтернативе, добавляемой одновременно для систем Linux.

[указатель кадра]

Это частный случай параметра [debug-compiled] выше, за исключением того, что он отключает только оптимизацию указателя кадра . Используйте frmptr вместо debug в приведенных выше командах, чтобы включить этот режим.

[hipe]

Эмулятор был скомпилирован с включенной функцией HiPE , которая представляет собой оперативный компилятор машинного кода для Erlang. Он работает только с наиболее популярными типами ЦП, которые поддерживает Erlang, и не работает со всеми конфигурациями даже с этими ЦП, поэтому он не является обязательным.

[подсчет инструкций]

Появляется, если вы определяете ERTS_OPCODE_COUNTER_SUPPORT во время сборки, что включает функцию подсчета кодов операций BEAM, предположительно полезную для тех, кто профилирует производительность эмулятора BEAM.

[kernel-poll: false]

Код эмулятора Erlang знает несколько различных способов запросить сетевой стек ОС, какой из набора файловых дескрипторов и сокетов доступен для ввода-вывода. Единственный, который работает практически везде, - это старый вызов BSD select () , который относительно медленен из-за своей конструкции и, кроме того, имеет другие проблемы с масштабируемостью. Итак, в большинстве систем есть одна или несколько более быстрых и масштабируемых замен - например, kqueue, epoll () и т. Д. - но ни одна из них не поддерживается повсеместно. Когда в сообщении запуска эмулятора указано false , это может означать, что опрос ядра недоступен, или он есть, но вы не передали + K true в erl .

[проверка блокировки]

Появляется, если вы передали - enable-lock-check в сценарий настройки.

[счетчик блокировок]

Появляется, если вы передали - enable-lock-counter в сценарий настройки.

[lttng]

Появляется, если вы передали - with-dynamic-trace = lttng в сценарий configure , чтобы включить поддержку LTTNG , среда трассировки для Linux.

[purify-compiled]

Это появляется, когда вы запускаете специальную Purify версию эмулятора Erlang BEAM с поддержкой. Инструкции такие же, как в разделе [debug-compiled] выше, за исключением того, что вы используете purify в командах вместо debug .

[sharing-preserving]

This appears if you pass --enable-sharing-preserving to the configure script, which causes to share immutable terms intra-node instead of flattening and recreating them. Whether this option makes your program faster or slower depends on details of the program, hence why it is not set in the default build.

[smp:2:2]

The [smp:2] tag changed to this format in Erlang R13, meaning 2 schedulers, both of which are online. If you say "erl +S1", it says [smp:1:1] instead. You can take schedulers offline at runtime with erlang:system_flag(schedulers_online, N), where N can be anything between 1 and the number of cores detected, inclusive.

[source] или [source-VERSION]

Это означает, что какая-то третья сторона (может быть, вы, возможно, сопровождающий вашего дистрибутива ОС, может быть, ваш системный администратор) построила Erlang из исходного кода. Альтернативой является загрузка официальной двоичной версии с Erlang.org.

Если вы собираете Erlang из репозитория Git , это сообщение изменится на что-то вроде [source-8acc644] , где шестнадцатеричное число - это фрагмент текущего Git-хэша репозитория, который позволяет вам проверить точную версию источника, создавшего данный исполняемый файл.

[systemtap]

Появляется, если вы передали - with-dynamic-trace = systemtap в сценарий configure . Это альтернатива значению = dtrace для этого параметра конфигурации, обеспечивающая практически ту же функциональность в Linux с использованием SystemTap , поскольку DTrace обычно недоступен в Linux. См. [dtrace] выше.

[type-assertions]

Появляется, когда вы раскомментируете строку ET_DEBUG в erts / emulator / beam / erl_term.h , что позволяет выполнять проверку всех данных, зависящих от типа. доступы. Не включен по умолчанию, поскольку замедляет работу эмулятора.

[valgrind-compiled]

Это появляется при запуске специальной Valgrind версии эмулятора Erlang BEAM с поддержкой. Инструкции такие же, как в разделе [debug-compiled] выше, за исключением того, что вы используете valgrind в командах вместо debug .


(Это Список взят из erts / emulator / beam / erl_bif_info.c в дереве исходных текстов Erlang OTP. См. определение erts_system_version в верхней части файла.)


Устаревшие теги :

  • Оптимизация [64-битное полуслово] для 64-битных сборок эмулятора BEAM была добавлена ​​в R14, а затем удалена без объяснения причин в 19.0. Это также исключает возможность увидеть тег [no-c-stack-objects] , который был связан с эмулятором полуслова.

  • Тег [rq: 2] ссылается на в систему очереди выполнения, предназначенную для улучшения масштабируемости в SMP-сборках эмулятора Erlang BEAM. Добавлен в R13B, он был заменен в R15B на лучшее решение .

  • Теги [hybrid-heap] и [инкрементный GC] и связанные с ними функции были удалены в R15B02 по существу потому, что это были неудачные эксперименты .

59
ответ дан 27 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: