diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2024-11-15 09:33:03 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-15 10:33:03 +0100 |
commit | c9baf3849fdbe161a9251a712a71e2b91eeabf3e (patch) | |
tree | 61d082720160d928e303b4e1ae4816d3f228894a /cli/worker.rs | |
parent | dcc75d5685ddb1ad3c1b97721cbc24bf6fa56c76 (diff) |
perf: use available system memory for v8 isolate memory limit (#26868)
Instead of using the default 1.4Gb limit (which was meant for browser
tabs) configure V8 to
set the heap limit to the amount of memory available in the system.
Closes https://github.com/denoland/deno/issues/23424
Closes https://github.com/denoland/deno/issues/26435
Closes https://github.com/denoland/deno/issues/21226
Diffstat (limited to 'cli/worker.rs')
-rw-r--r-- | cli/worker.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/cli/worker.rs b/cli/worker.rs index 1afe37e34..c6cbf77f1 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -555,6 +555,7 @@ impl CliMainWorkerFactory { permissions, v8_code_cache: shared.code_cache.clone(), }; + let options = WorkerOptions { bootstrap: BootstrapOptions { deno_version: crate::version::DENO_VERSION_INFO.deno.to_string(), @@ -585,7 +586,7 @@ impl CliMainWorkerFactory { }, extensions: custom_extensions, startup_snapshot: crate::js::deno_isolate_init(), - create_params: None, + create_params: create_isolate_create_params(), unsafely_ignore_certificate_errors: shared .options .unsafely_ignore_certificate_errors @@ -786,6 +787,7 @@ fn create_web_worker_callback( }, extensions: vec![], startup_snapshot: crate::js::deno_isolate_init(), + create_params: create_isolate_create_params(), unsafely_ignore_certificate_errors: shared .options .unsafely_ignore_certificate_errors @@ -806,6 +808,17 @@ fn create_web_worker_callback( }) } +/// By default V8 uses 1.4Gb heap limit which is meant for browser tabs. +/// Instead probe for the total memory on the system and use it instead +/// as a default. +pub fn create_isolate_create_params() -> Option<v8::CreateParams> { + let maybe_mem_info = deno_runtime::sys_info::mem_info(); + maybe_mem_info.map(|mem_info| { + v8::CreateParams::default() + .heap_limits_from_system_memory(mem_info.total, 0) + }) +} + #[allow(clippy::print_stdout)] #[allow(clippy::print_stderr)] #[cfg(test)] |