2017-08-28 7 views
1

問題のプロセスを実行する前にUV_THREADPOOL_SIZE環境変数を設定することによって、libuvスレッドプールサイズを制御できることがわかりました。実行時にlibuvスレッドプールサイズを決定しますか?

しかし、これは変更される可能性があります(サーバーの設定によって異なります)。libuvが実際に使用しているスレッドプールのサイズを実行時に調べると良いでしょう。どうすればこのことができますか?

ありがとうございました。

+0

スレッドプールサイズは変更されません。現在の値が必要な場合は、getenvまたはuv_os_getenvを使用しないでください。 – dlmeetei

答えて

1

現在スレッドプールサイズは実行時に変更できません。最初に操作がプールにキューイングされると、libuvはUV_THREADPOOL_SIZE環境変数を読み取り、スレッドプールを作成します。それ以来、そのサイズは変わらないでしょう。

+0

サイズは固定ですが、UV_THREADPOOL_SIZEは環境変数にすぎず、修正されていません。この値は変更が遅すぎる可能性があります(つまり、操作がプールにキューイングされた後)、実際に使用されているスレッドプールサイズが反映されない可能性があります。 – logidelic

+0

良い点。現時点では、スレッドプールは外部に公開されていない実装の詳細です(env変数をモジュロにする)ので、サイズを変更する方法を追加することで変更や変更はできません。 「弾性」スレッドプール(https://github.com/libuv/libuv/issues/267)に切り替える予定(今は機能していません)があります。これにより、このメトリックの関連性はさらに低くなります。実行時にこれを知る必要があるのはなぜですか? – saghul

+0

私は制御できないノードプロセスによってロードできるC++ノードモジュールのアドオンを書きました。モジュールで最も効率的に動作する方法を決定するのに役立つlibuvスレッドプールのサイズを調べることができれば便利です。私はUV_THREADPOOL_SIZEに頼ることができません。なぜなら、いくつかの開発者がノードスクリプトでこれを設定しているが、遅すぎると効果があることがわかっているからです。 – logidelic

関連する問題