問題のプロセスを実行する前にUV_THREADPOOL_SIZE環境変数を設定することによって、libuvスレッドプールサイズを制御できることがわかりました。実行時にlibuvスレッドプールサイズを決定しますか?
しかし、これは変更される可能性があります(サーバーの設定によって異なります)。libuvが実際に使用しているスレッドプールのサイズを実行時に調べると良いでしょう。どうすればこのことができますか?
ありがとうございました。
問題のプロセスを実行する前にUV_THREADPOOL_SIZE環境変数を設定することによって、libuvスレッドプールサイズを制御できることがわかりました。実行時にlibuvスレッドプールサイズを決定しますか?
しかし、これは変更される可能性があります(サーバーの設定によって異なります)。libuvが実際に使用しているスレッドプールのサイズを実行時に調べると良いでしょう。どうすればこのことができますか?
ありがとうございました。
現在スレッドプールサイズは実行時に変更できません。最初に操作がプールにキューイングされると、libuvはUV_THREADPOOL_SIZE
環境変数を読み取り、スレッドプールを作成します。それ以来、そのサイズは変わらないでしょう。
サイズは固定ですが、UV_THREADPOOL_SIZEは環境変数にすぎず、修正されていません。この値は変更が遅すぎる可能性があります(つまり、操作がプールにキューイングされた後)、実際に使用されているスレッドプールサイズが反映されない可能性があります。 – logidelic
良い点。現時点では、スレッドプールは外部に公開されていない実装の詳細です(env変数をモジュロにする)ので、サイズを変更する方法を追加することで変更や変更はできません。 「弾性」スレッドプール(https://github.com/libuv/libuv/issues/267)に切り替える予定(今は機能していません)があります。これにより、このメトリックの関連性はさらに低くなります。実行時にこれを知る必要があるのはなぜですか? – saghul
私は制御できないノードプロセスによってロードできるC++ノードモジュールのアドオンを書きました。モジュールで最も効率的に動作する方法を決定するのに役立つlibuvスレッドプールのサイズを調べることができれば便利です。私はUV_THREADPOOL_SIZEに頼ることができません。なぜなら、いくつかの開発者がノードスクリプトでこれを設定しているが、遅すぎると効果があることがわかっているからです。 – logidelic
スレッドプールサイズは変更されません。現在の値が必要な場合は、getenvまたはuv_os_getenvを使用しないでください。 – dlmeetei