Erlang 20.0の時点で、バージョン文字列タグの完全なセットは次のとおりです。
[64ビット]
BEAM エミュレータは、64 ビット CPU を最大限に活用するように構築されています。
[非同期スレッド:10]
これは、Erlang エミュレーターの非同期スレッド プール内のスレッド数を指し、エミュレーターが停止する前に、バックグラウンド スレッドにスピンオフできるブロックされたシステム コールの数を多かれ少なかれ示します。
現在のデフォルトは 10 ですが、デフォルトは何年もの間 0 でした。つまり、すべてのシステム コールが各 Erlang エミュレータ スレッド内で同期的に実行されていました。システム コールがブロックされると、システム コールが終了するまで Erlang エミュレータ スレッドの実行が停止されました。現在の小さなデフォルト値により、エミュレーターは、システム コールが非同期 I/O スレッドの 1 つをブロックしている間、停止して別のことを試みることができます。
オプションを使用してデフォルト値を+A
Erlang ランタイムに変更できます。(例erl +A 50
) これを変更する場合は、結果が特定のシステムとワークロードに依存することに注意してください。値が高すぎると、システムが非常にビジーなときにバックグラウンドで多くのことを実行しようとするため、パフォーマンスが低下する可能性があります。一部のワークロードでは、機能を無効にするerl +A 0
ことが最適なオプションになる場合があります。
[デバッグコンパイル]
これは、別の BEAM エミュレーターをわざわざビルドして、結果の実行可能ファイルをデバッグしやすくするコンパイラ オプションを設定した場合にのみ表示されますgdb
。また、この代替 BEAM エミュレーターを特別な方法で実行する必要があります。
通常、Erlang BEAM エミュレーターは速度を重視して構築されているため、デバッガーの作業が困難になることがよくあります。BEAM エミュレーターの次のバージョンの開発に取り組んでいる場合は、作業を改良する際に特別なデバッグ ビルドを実行すると役立つ場合があります。
このモードを有効にするcd
にerts/emulator
は、実行後に Erlang ソース ツリーの下に移動 configure
し、次のように入力しERL_TOP=../.. make FLAVOR=smp debug
ます。次に、新しいデバッグ可能な BEAM エミュレーターを実行するbin/cerl -debug
には、Erlang/OTP システムの残りの部分が構築された後、Erlang ソース ツリーのトップ レベルから実行する必要があります。
このトピックの詳細については、「デバッグが有効な Erlang ランタイム システムを構築する方法」を参照してください。
[ds:1:1:1]
ERTS 9.0 の時点で、SMP サポートを使用して BEAM エミュレーターをビルドした場合、これは常に表示されます。これは、「ダーティ スケジューラ」機能を指します。値は、このシステムでの機能の構成を表します。
この機能は Erlang 19.0 で導入されました。最初は実験的な機能でしたが、Erlang 20.0 のように SMP ビルドではデフォルトでコンパイルされませんでした。
[トレース]
R15B01 で追加された実験的なDTrace--with-dynamic-trace=dtrace
計測機能を有効にするconfigure
スクリプトに渡した場合に表示されます。この機能は、OS X、Solaris、および FreeBSD でのみ動作することが期待されています。将来的には他のプラットフォームでも動作する可能性があります。Linux システム用に同時に追加された代替手段については、以下の[systemtap]を参照してください。
[フレームポインタ]
これは、上記の[debug-compiled]オプションの特殊なケースですが、フレーム ポインターの最適化のみを無効にします。このモードを有効にするには、上記のコマンドのfrmptr
代わりに使用します。debug
[ハイプ]
エミュレーターは、Erlang のオンザフライ ネイティブ コード コンパイラーであるHiPE機能を有効にしてコンパイルされました。Erlang がサポートする最も一般的な CPU タイプでのみ動作し、それらの CPU でもすべての構成で動作するわけではないため、オプションになっています。
[命令カウント]
ビルド中に定義すると表示ERTS_OPCODE_COUNTER_SUPPORT
されます。これにより、BEAM オペコード カウント機能が有効になり、BEAM エミュレータのパフォーマンスをプロファイリングするのに役立つと思われます。
[kernel-poll:false]
Erlang エミュレーターのコードは、OS のネットワーク スタックに、一連のファイル記述子とソケットのどれが I/O に使用できるかを問い合わせるいくつかの異なる方法を知っています。ほぼすべての場所で機能する唯一のものは、select()
その設計のために比較的遅く、他のスケーラビリティの問題を抱えている古い BSD 呼び出しです。そのため、ほとんどのシステムには、より高速でスケーラブルな代替手段 (kqueueepoll()
など) が 1 つ以上ありますが、どこでもサポートされているわけではありません。エミュレーターの起動メッセージがfalse
ここにある場合は、カーネル ポーリングが利用できないか、利用可能であるが に渡さなかったことを意味する可能性があり+K true
ますerl
。
【施錠確認】
--enable-lock-check
configure スクリプトに渡した場合に表示されます。
[ロックカウント]
--enable-lock-counter
configure スクリプトに渡した場合に表示されます。
[限定]
Linux のトレース フレームワークであるLTTNG--with-dynamic-trace=lttng
のサポートを有効にするconfigure
スクリプトに渡した場合に表示されます。
[浄化コンパイル]
これは、特別なPurify対応バージョンの Erlang BEAM エミュレーターを実行すると表示されます。手順は、上記の[debug-compiled]セクションと同じですがpurify
、コマンドで の代わりにdebug
.
【共有保存】
--enable-sharing-preserving
これは、configure
スクリプトに渡した場合に表示されます。これにより、不変の用語をフラット化して再作成するのではなく、ノード内で共有することになります。このオプションによってプログラムが速くなるか遅くなるかは、プログラムの詳細に依存するため、デフォルト ビルドでは設定されていません。
[smp:2:2]
[ smp:2]タグは、Erlang R13 でこの形式に変更されました。これは、2 つのスケジューラーが両方ともオンラインであることを意味します。「erl +S1」と言うと、代わりに[smp:1:1]と表示されます。erlang:system_flag(schedulers_online, N) を使用して実行時にスケジューラをオフラインにすることができます。ここで、N は 1 から検出されたコアの数までの任意の数です。
[source] または [source-VERSION]
これは、サードパーティ (おそらくあなた、あなたの OS ディストリビューションのパッケージメンテナー、おそらくあなたのシステム管理者) がソースコードから Erlang を構築したことを意味します。代わりの方法は、Erlang.org から公式のバイナリ バージョンをダウンロードすることです。
Git リポジトリから Erlang をビルドすると、このメッセージは[source-8acc644] のようなものに変わります。ここで、16 進数はリポジトリの現在のGit ハッシュのフラグメントです。これにより、ビルドしたソースの正確なバージョンを確認できます。指定された実行可能ファイル。
【システムタップ】
--with-dynamic-trace=systemtap
スクリプトに渡した場合に表示されconfigure
ます。=dtrace
これは、この構成オプションの値の代替であり、SystemTapを使用して Linux で本質的に同じ機能を提供します。DTraceは通常 Linux では使用できないためです。上記の[dtrace]を参照してください。
[型アサーション]
ET_DEBUG
の行のコメントを外すと表示されerts/emulator/beam/erl_term.h
、すべてのタイプ固有のデータ アクセスの実行時チェックが有効になります。エミュレータの速度が低下するため、デフォルトでは有効になっていません。
[valgrind コンパイル済み]
これは、特別なValgrind対応バージョンの Erlang BEAM エミュレーターを実行すると表示されます。手順は、上記の[debug-compiled]セクションと同じですがvalgrind
、コマンドで の代わりにdebug
.
(このリストはerts/emulator/beam/erl_bif_info.c
、Erlang OTP ソース ツリーから取得されerts_system_version
ます。ファイルの上部近くにある の定義を参照してください。)
廃止されたタグ:
BEAM エミュレータの 64 ビット ビルドに対する [64 ビット ハーフワード] 最適化は、R14 で追加され、19.0 で説明なしに削除されました。これにより、ハーフワード エミュレーターに関連付けられていた[no-c-stack-objects]タグが表示される可能性もなくなります。
[ rq:2]タグは、Erlang BEAM エミュレーターの SMP ビルドでスケーラビリティを向上させることを目的とした実行キュー システムを参照していました。R13B で追加され、R15B でより良いソリューションに置き換えられました。
[ hybrid-heap]および[incremental GC]タグと関連する機能は、基本的に R15B02 で削除されました。