mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 18:55:32 +00:00
udp: uring: tune
This commit is contained in:
parent
b6f6a2d73b
commit
42d99cefee
1 changed files with 21 additions and 23 deletions
|
|
@ -175,7 +175,7 @@ pub fn run_socket_worker(
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let timeout = Timespec::new().sec(1);
|
let timeout = Timespec::new().nsec(100_000_000);
|
||||||
|
|
||||||
let mut force_send_responses = false;
|
let mut force_send_responses = false;
|
||||||
let mut timeout_queued = false;
|
let mut timeout_queued = false;
|
||||||
|
|
@ -298,23 +298,6 @@ pub fn run_socket_worker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !timeout_queued {
|
|
||||||
// Setup timer to occasionally force sending of responses
|
|
||||||
let user_data = UserData::Timeout;
|
|
||||||
|
|
||||||
let timespec_ptr: *const Timespec = &timeout;
|
|
||||||
|
|
||||||
let entry = io_uring::opcode::Timeout::new(timespec_ptr)
|
|
||||||
.build()
|
|
||||||
.user_data(user_data.into());
|
|
||||||
|
|
||||||
unsafe {
|
|
||||||
sq.push(&entry).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
timeout_queued = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (response, addr) in response_receiver.try_iter() {
|
for (response, addr) in response_receiver.try_iter() {
|
||||||
let opt_response = match response {
|
let opt_response = match response {
|
||||||
ConnectedResponse::Scrape(r) => pending_scrape_responses.add_and_get_finished(r),
|
ConnectedResponse::Scrape(r) => pending_scrape_responses.add_and_get_finished(r),
|
||||||
|
|
@ -355,6 +338,23 @@ pub fn run_socket_worker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !timeout_queued & !force_send_responses {
|
||||||
|
// Setup timer to occasionally force sending of responses
|
||||||
|
let user_data = UserData::Timeout;
|
||||||
|
|
||||||
|
let timespec_ptr: *const Timespec = &timeout;
|
||||||
|
|
||||||
|
let entry = io_uring::opcode::Timeout::new(timespec_ptr)
|
||||||
|
.build()
|
||||||
|
.user_data(user_data.into());
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
sq.push(&entry).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout_queued = true;
|
||||||
|
}
|
||||||
|
|
||||||
if iter_counter % 32 == 0 {
|
if iter_counter % 32 == 0 {
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
|
|
||||||
|
|
@ -365,12 +365,10 @@ pub fn run_socket_worker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let all_responses_sent = local_responses.is_empty() & response_receiver.is_empty();
|
let wait_for_num = if force_send_responses {
|
||||||
|
|
||||||
let wait_for_num = if all_responses_sent {
|
|
||||||
send_entries.len() + recv_entries.len()
|
|
||||||
} else {
|
|
||||||
send_entries.len()
|
send_entries.len()
|
||||||
|
} else {
|
||||||
|
send_entries.len() + recv_entries.len()
|
||||||
};
|
};
|
||||||
|
|
||||||
sq.sync();
|
sq.sync();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue