問題タブ [erlang-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
197 参照

frameworks - Erlangログフレームワークについて

ログフレームワークとしてラガーを使用しようとしました。しかし、私たちはいくつかの問題に直面しています。

  1. lager の日付が失われている可能性があります.lager のソースコードを見ました.その理由は gen_event notify が非同期呼び出しであるためだと思います. メッセージの受信を保証するものではありません.

  2. より大きなパフォーマンスは十分ではありません。ラガーのファイルバックエンドがerlangで書かれているためだと思います。そのため、性能がよくありません。

したがって、C で作成され、Erlang でカプセル化されたログ フレームワークが適切な選択であると思います。

要件を満たす Erlang フレームワークがあることをご存知ですか?

0 投票する
1 に答える
49 参照

erlang - R16B より前の driver_async_port_key 代替

functionのerl_driver ドキュメントにdriver_async_port_keyよると、

OTP-R16 より前は、実際のポート ID を適切なキャストでキーとして使用できましたが、ポート サブシステムの書き換え後は、そうではなくなりました。この機能により、OTP-R16以前と同様のポートIDによる配信が実現できます。

この適切なキャストは何ですか?

0 投票する
1 に答える
216 参照

erlang - Erlang ドライバーの erl_errno の問題

で遊んでいerl_driverます。私のドライバーの開始コールバックは次のとおりです。

ErlDrvData drv_start(ErlDrvPort port, char* command) { char* file_name = command + sizeof(drv_name); GenTtyData* port_data = (GenTtyData*)driver_alloc(sizeof(GenTtyData)); erl_errno = gt_open(file_name, &port_data->file); if (erl_errno != 0) { // Assertion there is just to show you my intention assert(erl_errno == ENOENT); driver_free(port_data); return ERL_DRV_ERROR_ERRNO; } return port_data; }

ドキュメンテーションによると

ErlDrvData (開始)(ErlDrvPort ポート、charコマンド)

したがって、erlang:open_port/2エラーの説明を含む終了シグナルが送信されると思います(eaccesたとえば、 or enotty)。ただし、テストでは

{'EXIT', {unknown, [{erlang,open_port,[{spawn,"gen_tty_drv non_existent.tty"},[]],[]}, {gen_tty,open,1, [{file, "/home/vkovalev/workspace/gen_tty_drv/_build/test/lib/gen_tty/src/gen_tty.erl"}, {line,48}]}, {gen_tty_drv_SUITE,open_non_existent_file,1, [{file, "/home/vkovalev/workspace/gen_tty_drv/test/gen_tty_drv_SUITE.erl"}, {line,29}]}, {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1450}]}, {test_server,run_test_case_eval1,6, [{file,"test_server.erl"},{line,1026}]}, {test_server,run_test_case_eval,9, [{file,"test_server.erl"},{line,968}]}]}}

erlang がエラー理由を認識しないかデコードできないようで、 を送信しますunknownstartでは、コールバックの何が問題なのですか?

0 投票する
1 に答える
426 参照

erlang - スケーラビリティを犠牲にすることなくErlangで計算集約的なタスクを実行する最良の方法は何ですか?

Erlang Interoperability guide では、さまざまな相互運用メカニズムについて説明しています。ここに私の結論があります:

  • Ports および Erl_Interface プログラム: OS によってスケジュールされ、スケーラビリティが制限されます。

  • ポート ドライバー: ポート ドライバーがクラッシュするとエミュレーターもダウンするため、危険です。

  • C ノード: ノード サーバーは、スケーラビリティの犠牲を避けるために、Erlang アプリと同様にスケーリングする必要があります。

  • NIF: Loicはそれらをうまくまとめています。

ErlangエミュレーターにCPUを所有させながら、基本的にリソースを大量に消費する計算をGPUに委譲するOpenCLの使用を支持する人もいます。これは素晴らしいことのように思えますが、サーバーに適切な GPU を搭載する必要があります。

JInterface を使用し、すべての要求に対してスレッドを生成する Java プロセスと通信することは、オプションかもしれません。

それでは、実際にテストされ、うまく機能することが判明したソリューションに出くわした人はいますか?