Files
galaxy/app/src/resource_limits.rs
T

34 lines
1.3 KiB
Rust

/// Adjusts resource limits applied to the Warp process (e.g.: the limit on open
/// file descriptors) to ensure proper behavior.
pub fn adjust_resource_limits() {
#[cfg(target_os = "macos")]
{
/// Our desired limit on the maximum number of file descriptors we can open.
///
/// MacOS sets this value to 256, by default, which can interfere with
/// normal usage of Warp for users who open lots of tabs.
const TARGET_FD_LIMIT: u64 = 2560;
use nix::sys::resource::{getrlimit, setrlimit, Resource::RLIMIT_NOFILE};
let (cur_limit, hard_limit) = match getrlimit(RLIMIT_NOFILE) {
Ok(val) => val,
Err(err) => {
log::error!("Failed to retrieve resource limit for number of files: {err:#}");
return;
}
};
log::info!(
"Initial open file descriptor limit is {cur_limit}, with a hard limit of {hard_limit}"
);
let new_limit = TARGET_FD_LIMIT.min(hard_limit);
if cur_limit < new_limit {
match setrlimit(RLIMIT_NOFILE, new_limit, hard_limit) {
Ok(_) => log::info!("Increased open file descriptor limit to {new_limit}"),
Err(err) => log::error!("Failed to increase open file descriptor limit: {err:#}"),
}
}
}
}