Move CoreAffinityConfig to aquatic_common, use in glommio http

This commit is contained in:
Joakim Frostegård 2021-10-27 20:19:02 +02:00
parent 8747f8de4e
commit d659117ae5
7 changed files with 37 additions and 23 deletions

View file

@ -26,6 +26,7 @@ aquatic_cli_helpers = "0.1.0"
aquatic_common = "0.1.0"
aquatic_http_protocol = "0.1.0"
cfg-if = "1"
core_affinity = "0.5"
either = "1"
hashbrown = "0.11.2"
indexmap = "1"

View file

@ -1,6 +1,7 @@
use std::{net::SocketAddr, path::PathBuf};
use aquatic_common::access_list::AccessListConfig;
use aquatic_common::cpu_pinning::CoreAffinityConfig;
use serde::{Deserialize, Serialize};
use aquatic_cli_helpers::LogLevel;
@ -23,6 +24,7 @@ pub struct Config {
pub statistics: StatisticsConfig,
pub privileges: PrivilegeConfig,
pub access_list: AccessListConfig,
pub core_affinity: CoreAffinityConfig,
}
impl aquatic_cli_helpers::Config for Config {
@ -116,6 +118,7 @@ impl Default for Config {
statistics: StatisticsConfig::default(),
privileges: PrivilegeConfig::default(),
access_list: AccessListConfig::default(),
core_affinity: CoreAffinityConfig::default(),
}
}
}

View file

@ -16,6 +16,12 @@ mod network;
const SHARED_CHANNEL_SIZE: usize = 1024;
pub fn run(config: Config) -> anyhow::Result<()> {
if config.core_affinity.set_affinities {
core_affinity::set_for_current(core_affinity::CoreId {
id: config.core_affinity.offset,
});
}
let access_list = if config.access_list.mode.is_on() {
AccessList::create_from_path(&config.access_list.path).expect("Load access list")
} else {
@ -43,9 +49,9 @@ pub fn run(config: Config) -> anyhow::Result<()> {
let mut builder = LocalExecutorBuilder::default();
// if config.core_affinity.set_affinities {
// builder = builder.pin_to_cpu(config.core_affinity.offset + 1 + i);
// }
if config.core_affinity.set_affinities {
builder = builder.pin_to_cpu(config.core_affinity.offset + 1 + i);
}
let executor = builder.spawn(|| async move {
network::run_socket_worker(
@ -70,10 +76,10 @@ pub fn run(config: Config) -> anyhow::Result<()> {
let mut builder = LocalExecutorBuilder::default();
// if config.core_affinity.set_affinities {
// builder =
// builder.pin_to_cpu(config.core_affinity.offset + 1 + config.socket_workers + i);
// }
if config.core_affinity.set_affinities {
builder =
builder.pin_to_cpu(config.core_affinity.offset + 1 + config.socket_workers + i);
}
let executor = builder.spawn(|| async move {
handlers::run_request_worker(