mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 18:55:32 +00:00
aquatic_udp: set core affinities
This commit is contained in:
parent
2f07ba9898
commit
2c4f4a32da
5 changed files with 82 additions and 6 deletions
|
|
@ -17,6 +17,12 @@ pub mod network;
|
|||
pub const SHARED_CHANNEL_SIZE: usize = 4096;
|
||||
|
||||
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 num_peers = config.socket_workers + config.request_workers;
|
||||
|
||||
let request_mesh_builder = MeshBuilder::partial(num_peers, SHARED_CHANNEL_SIZE);
|
||||
|
|
@ -26,13 +32,19 @@ pub fn run(config: Config) -> anyhow::Result<()> {
|
|||
|
||||
let mut executors = Vec::new();
|
||||
|
||||
for _ in 0..(config.socket_workers) {
|
||||
for i in 0..(config.socket_workers) {
|
||||
let config = config.clone();
|
||||
let request_mesh_builder = request_mesh_builder.clone();
|
||||
let response_mesh_builder = response_mesh_builder.clone();
|
||||
let num_bound_sockets = num_bound_sockets.clone();
|
||||
|
||||
let executor = LocalExecutorBuilder::default().spawn(|| async move {
|
||||
let mut builder = LocalExecutorBuilder::default();
|
||||
|
||||
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(
|
||||
config,
|
||||
request_mesh_builder,
|
||||
|
|
@ -50,7 +62,13 @@ pub fn run(config: Config) -> anyhow::Result<()> {
|
|||
let request_mesh_builder = request_mesh_builder.clone();
|
||||
let response_mesh_builder = response_mesh_builder.clone();
|
||||
|
||||
let executor = LocalExecutorBuilder::default().spawn(|| async move {
|
||||
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);
|
||||
}
|
||||
|
||||
let executor = builder.spawn(|| async move {
|
||||
handlers::run_request_worker(config, request_mesh_builder, response_mesh_builder).await
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue