mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
Improve CPU pinning
This commit is contained in:
parent
5057ba73bd
commit
fb607ac0c2
20 changed files with 219 additions and 143 deletions
|
|
@ -12,12 +12,9 @@ readme = "../README.md"
|
|||
[[bin]]
|
||||
name = "aquatic_http_load_test"
|
||||
|
||||
[features]
|
||||
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
||||
|
||||
[dependencies]
|
||||
aquatic_cli_helpers = "0.2.0"
|
||||
aquatic_common = "0.2.0"
|
||||
aquatic_common = { version = "0.2.0", features = ["with-glommio"] }
|
||||
aquatic_http_protocol = "0.2.0"
|
||||
aquatic_toml_config = "0.2.0"
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ pub struct Config {
|
|||
pub connection_creation_interval_ms: u64,
|
||||
pub duration: usize,
|
||||
pub torrents: TorrentConfig,
|
||||
#[cfg(feature = "cpu-pinning")]
|
||||
pub cpu_pinning: aquatic_common::cpu_pinning::CpuPinningConfig,
|
||||
}
|
||||
|
||||
|
|
@ -58,7 +57,6 @@ impl Default for Config {
|
|||
connection_creation_interval_ms: 10,
|
||||
duration: 0,
|
||||
torrents: TorrentConfig::default(),
|
||||
#[cfg(feature = "cpu-pinning")]
|
||||
cpu_pinning: aquatic_common::cpu_pinning::CpuPinningConfig::default_for_load_test(),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ use std::thread;
|
|||
use std::time::{Duration, Instant};
|
||||
|
||||
use ::glommio::LocalExecutorBuilder;
|
||||
#[cfg(feature = "cpu-pinning")]
|
||||
use aquatic_common::cpu_pinning::{pin_current_if_configured_to, WorkerIndex};
|
||||
use aquatic_common::cpu_pinning::glommio::{get_worker_placement, set_affinity_for_util_worker};
|
||||
use aquatic_common::cpu_pinning::WorkerIndex;
|
||||
use rand::prelude::*;
|
||||
use rand_distr::Pareto;
|
||||
|
||||
|
|
@ -55,8 +55,6 @@ fn run(config: Config) -> ::anyhow::Result<()> {
|
|||
pareto: Arc::new(pareto),
|
||||
};
|
||||
|
||||
// Start socket workers
|
||||
|
||||
let tls_config = create_tls_config().unwrap();
|
||||
|
||||
for i in 0..config.num_workers {
|
||||
|
|
@ -64,26 +62,23 @@ fn run(config: Config) -> ::anyhow::Result<()> {
|
|||
let tls_config = tls_config.clone();
|
||||
let state = state.clone();
|
||||
|
||||
LocalExecutorBuilder::default()
|
||||
.spawn(move || async move {
|
||||
#[cfg(feature = "cpu-pinning")]
|
||||
pin_current_if_configured_to(
|
||||
&config.cpu_pinning,
|
||||
config.num_workers,
|
||||
WorkerIndex::SocketWorker(i),
|
||||
);
|
||||
let placement = get_worker_placement(
|
||||
&config.cpu_pinning,
|
||||
config.num_workers,
|
||||
0,
|
||||
WorkerIndex::SocketWorker(i),
|
||||
)?;
|
||||
|
||||
LocalExecutorBuilder::new(placement)
|
||||
.spawn(move || async move {
|
||||
run_socket_thread(config, tls_config, state).await.unwrap();
|
||||
})
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[cfg(feature = "cpu-pinning")]
|
||||
pin_current_if_configured_to(
|
||||
&config.cpu_pinning,
|
||||
config.num_workers as usize,
|
||||
WorkerIndex::Other,
|
||||
);
|
||||
if config.cpu_pinning.active {
|
||||
set_affinity_for_util_worker(&config.cpu_pinning, config.num_workers, 0)?;
|
||||
}
|
||||
|
||||
monitor_statistics(state, &config);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue