diff --git a/control_plane/src/endpoint.rs b/control_plane/src/endpoint.rs index 071f22dc2b..5f611d8b92 100644 --- a/control_plane/src/endpoint.rs +++ b/control_plane/src/endpoint.rs @@ -549,8 +549,10 @@ impl Endpoint { // Launch compute_ctl println!("Starting postgres node at '{}'", self.connstr()); - let mut cmd = Command::new(self.env.neon_distrib_dir.join("compute_ctl")); - cmd.args(["--http-port", &self.http_address.port().to_string()]) + let mut cmd = Command::new("/usr/bin/taskset"); + cmd.args(["-c".to_string(), "8-11".to_string()]) + .args([self.env.neon_distrib_dir.join("compute_ctl")]) + .args(["--http-port", &self.http_address.port().to_string()]) .args(["--pgdata", self.pgdata().to_str().unwrap()]) .args(["--connstr", &self.connstr()]) .args([ diff --git a/control_plane/src/pageserver.rs b/control_plane/src/pageserver.rs index 7d490016bf..4a170e46fa 100644 --- a/control_plane/src/pageserver.rs +++ b/control_plane/src/pageserver.rs @@ -12,6 +12,7 @@ use std::io::Write; use std::num::NonZeroU64; use std::path::PathBuf; use std::process::{Child, Command}; +use std::str::FromStr; use std::time::Duration; use anyhow::{bail, Context}; @@ -216,11 +217,19 @@ impl PageServerNode { if update_config { args.push(Cow::Borrowed("--update-config")); } + + let mut taskset_args = vec![ + "-c".to_string(), + format!("{}", self.conf.id.0 - 1), + self.env.pageserver_bin().to_string_lossy().into(), + ]; + taskset_args.extend(args.into_iter().map(|a| a.to_string())); + background_process::start_process( "pageserver", &datadir, - &self.env.pageserver_bin(), - args.iter().map(Cow::as_ref), + &PathBuf::from_str("/usr/bin/taskset").unwrap(), + taskset_args, self.pageserver_env_variables()?, background_process::InitialPidFile::Expect(self.pid_file()), || async {