Feature-gate CPU pinning, since it only works on Linux

This commit is contained in:
Joakim Frostegård 2021-11-09 11:40:16 +01:00
parent c90c82fb5c
commit 4f8328b70a
22 changed files with 77 additions and 19 deletions

View file

@ -9,6 +9,9 @@ repository = "https://github.com/greatest-ape/aquatic"
[[bin]]
name = "aquatic_udp_load_test"
[features]
cpu-pinning = ["aquatic_common/cpu-pinning"]
[dependencies]
anyhow = "1"
aquatic_cli_helpers = "0.1.0"

View file

@ -2,6 +2,7 @@ use std::net::SocketAddr;
use std::sync::{atomic::AtomicUsize, Arc};
use aquatic_cli_helpers::LogLevel;
#[cfg(feature = "cpu-pinning")]
use aquatic_common::cpu_pinning::CpuPinningConfig;
use hashbrown::HashMap;
use parking_lot::Mutex;
@ -30,6 +31,7 @@ pub struct Config {
pub duration: usize,
pub network: NetworkConfig,
pub handler: HandlerConfig,
#[cfg(feature = "cpu-pinning")]
pub cpu_pinning: CpuPinningConfig,
}
@ -110,6 +112,7 @@ impl Default for Config {
duration: 0,
network: NetworkConfig::default(),
handler: HandlerConfig::default(),
#[cfg(feature = "cpu-pinning")]
cpu_pinning: CpuPinningConfig::default_for_load_test(),
}
}

View file

@ -3,6 +3,7 @@ use std::sync::{atomic::Ordering, Arc};
use std::thread;
use std::time::{Duration, Instant};
#[cfg(feature = "cpu-pinning")]
use aquatic_common::cpu_pinning::{pin_current_if_configured_to, WorkerIndex};
use crossbeam_channel::unbounded;
use hashbrown::HashMap;
@ -97,6 +98,7 @@ fn run(config: Config) -> ::anyhow::Result<()> {
let state = state.clone();
thread::spawn(move || {
#[cfg(feature = "cpu-pinning")]
pin_current_if_configured_to(
&config.cpu_pinning,
config.num_socket_workers as usize,
@ -114,6 +116,7 @@ fn run(config: Config) -> ::anyhow::Result<()> {
let response_receiver = response_receiver.clone();
thread::spawn(move || {
#[cfg(feature = "cpu-pinning")]
pin_current_if_configured_to(
&config.cpu_pinning,
config.num_socket_workers as usize,
@ -132,6 +135,7 @@ fn run(config: Config) -> ::anyhow::Result<()> {
.expect("bootstrap: add initial request to request queue");
}
#[cfg(feature = "cpu-pinning")]
pin_current_if_configured_to(
&config.cpu_pinning,
config.num_socket_workers as usize,