Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

src: override v8 thread defaults using cli options #4344

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion doc/node.1
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@ Process v8 profiler output generated using the v8 option \fB\-\-prof\fR
.BR \-\-v8\-options
Print v8 command line options.

.TP
.BR \-\-v8\-pool\-size =\fInum\fR
Set v8's thread pool size which will be used to allocate background jobs.
If set to 0 then v8 will choose an appropriate size of the thread pool based
on the number of online processors. If the value provided is larger than v8's
max then the largest value will be chosen.

.TP
.BR \-\-tls\-cipher\-list =\fIlist\fR
Specify an alternative default TLS cipher list. (Requires Node.js to be built with crypto support. (Default))
Expand All @@ -115,7 +122,6 @@ Force FIPS-compliant crypto on startup. (Cannot be disabled from script code.) (
.BR \-\-icu\-data\-dir =\fIfile\fR
Specify ICU data load path. (overrides \fBNODE_ICU_DATA\fR)


.SH ENVIRONMENT VARIABLES

.TP
Expand Down
9 changes: 6 additions & 3 deletions src/node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,8 @@ static const char** preload_modules = nullptr;
static bool use_debug_agent = false;
static bool debug_wait_connect = false;
static int debug_port = 5858;
static const int v8_default_thread_pool_size = 4;
static int v8_thread_pool_size = v8_default_thread_pool_size;
static bool prof_process = false;
static bool v8_is_profiling = false;
static bool node_is_initialized = false;
Expand Down Expand Up @@ -178,7 +180,6 @@ static uv_async_t dispatch_debug_messages_async;
static node::atomic<Isolate*> node_isolate;
static v8::Platform* default_platform;


static void PrintErrorString(const char* format, ...) {
va_list ap;
va_start(ap, format);
Expand Down Expand Up @@ -3319,6 +3320,7 @@ static void PrintHelp() {
" --zero-fill-buffers automatically zero-fill all newly allocated\n"
" Buffer and SlowBuffer instances\n"
" --v8-options print v8 command line options\n"
" --v8-pool-size=num set v8's thread pool size\n"
#if HAVE_OPENSSL
" --tls-cipher-list=val use an alternative default TLS cipher list\n"
#if NODE_FIPS_MODE
Expand Down Expand Up @@ -3466,6 +3468,8 @@ static void ParseArgs(int* argc,
} else if (strcmp(arg, "--v8-options") == 0) {
new_v8_argv[new_v8_argc] = "--help";
new_v8_argc += 1;
} else if (strncmp(arg, "--v8-pool-size=", 15) == 0) {
v8_thread_pool_size = atoi(arg + 15);
#if HAVE_OPENSSL
} else if (strncmp(arg, "--tls-cipher-list=", 18) == 0) {
default_cipher_list = arg + 18;
Expand Down Expand Up @@ -4285,8 +4289,7 @@ int Start(int argc, char** argv) {
V8::SetEntropySource(crypto::EntropySource);
#endif

const int thread_pool_size = 4;
default_platform = v8::platform::CreateDefaultPlatform(thread_pool_size);
default_platform = v8::platform::CreateDefaultPlatform(v8_thread_pool_size);
V8::InitializePlatform(default_platform);
V8::Initialize();

Expand Down