mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 10:45:30 +00:00
start work on using seperate threads for sockets and handlers
This commit is contained in:
parent
8d7cbb7926
commit
3527952242
12 changed files with 180 additions and 98 deletions
|
|
@ -23,8 +23,6 @@ pub fn bench(
|
|||
config: &Config,
|
||||
requests: Arc<Vec<([u8; MAX_REQUEST_BYTES], SocketAddr)>>
|
||||
) -> (usize, Duration){
|
||||
let mut responses = Vec::with_capacity(ANNOUNCE_REQUESTS);
|
||||
|
||||
let mut buffer = [0u8; MAX_PACKET_SIZE];
|
||||
let mut cursor = Cursor::new(buffer.as_mut());
|
||||
let mut num_responses: usize = 0;
|
||||
|
|
@ -50,11 +48,10 @@ pub fn bench(
|
|||
&state,
|
||||
config,
|
||||
&mut small_rng,
|
||||
&mut responses,
|
||||
requests,
|
||||
);
|
||||
|
||||
for (response, _) in responses.drain(..) {
|
||||
while let Ok((response, src)) = state.response_queue.pop(){
|
||||
if let Response::Announce(_) = response {
|
||||
num_responses += 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,8 +19,6 @@ pub fn bench(
|
|||
state: State,
|
||||
requests: Arc<Vec<([u8; MAX_REQUEST_BYTES], SocketAddr)>>
|
||||
) -> (usize, Duration){
|
||||
let mut responses = Vec::with_capacity(ITERATIONS);
|
||||
|
||||
let mut buffer = [0u8; MAX_PACKET_SIZE];
|
||||
let mut cursor = Cursor::new(buffer.as_mut());
|
||||
let mut num_responses: usize = 0;
|
||||
|
|
@ -42,9 +40,9 @@ pub fn bench(
|
|||
|
||||
let requests = requests.drain(..);
|
||||
|
||||
handle_connect_requests(&state, &mut rng, &mut responses, requests);
|
||||
handle_connect_requests(&state, &mut rng, requests);
|
||||
|
||||
for (response, _) in responses.drain(..){
|
||||
while let Ok((response, _)) = state.response_queue.pop(){
|
||||
if let Response::Connect(_) = response {
|
||||
num_responses += 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ fn run(bench_config: BenchConfig){
|
|||
let mut announce_data = (0usize, Duration::new(0, 0));
|
||||
let mut scrape_data = (0usize, Duration::new(0, 0));
|
||||
|
||||
let config = Config::default();
|
||||
|
||||
println!("# Benchmarking request handlers\n");
|
||||
|
||||
// Benchmark connect handler
|
||||
|
|
@ -95,7 +97,7 @@ fn run(bench_config: BenchConfig){
|
|||
let pb = create_progress_bar("Connect handler", bench_config.num_rounds);
|
||||
|
||||
for _ in (0..bench_config.num_rounds).progress_with(pb){
|
||||
let state = State::new();
|
||||
let state = State::new(&config);
|
||||
|
||||
let handles: Vec<_> = (0..bench_config.num_threads).map(|_| {
|
||||
let requests = requests.clone();
|
||||
|
|
@ -115,7 +117,6 @@ fn run(bench_config: BenchConfig){
|
|||
|
||||
let mut rng = SmallRng::from_rng(thread_rng()).unwrap();
|
||||
let info_hashes = create_info_hashes(&mut rng);
|
||||
let config = Config::default();
|
||||
|
||||
// Benchmark announce handler
|
||||
let last_torrents: Option<Arc<TorrentMap>> = {
|
||||
|
|
@ -156,7 +157,7 @@ fn run(bench_config: BenchConfig){
|
|||
let mut last_torrents = None;
|
||||
|
||||
for i in (0..bench_config.num_rounds).progress_with(pb){
|
||||
let mut state = State::new();
|
||||
let mut state = State::new(&config);
|
||||
|
||||
state.connections = connections.clone();
|
||||
|
||||
|
|
@ -185,7 +186,7 @@ fn run(bench_config: BenchConfig){
|
|||
|
||||
// Benchmark scrape handler
|
||||
{
|
||||
let mut state = State::new();
|
||||
let mut state = State::new(&config);
|
||||
state.torrents = last_torrents.unwrap();
|
||||
|
||||
let requests = scrape::create_requests(&mut rng, &info_hashes);
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@ pub fn bench(
|
|||
state: &State,
|
||||
requests: Arc<Vec<([u8; MAX_REQUEST_BYTES], SocketAddr)>>
|
||||
) -> (usize, Duration){
|
||||
let mut responses = Vec::with_capacity(SCRAPE_REQUESTS);
|
||||
|
||||
let mut buffer = [0u8; MAX_PACKET_SIZE];
|
||||
let mut cursor = Cursor::new(buffer.as_mut());
|
||||
let mut num_responses: usize = 0;
|
||||
|
|
@ -45,11 +43,10 @@ pub fn bench(
|
|||
|
||||
handle_scrape_requests(
|
||||
&state,
|
||||
&mut responses,
|
||||
requests,
|
||||
);
|
||||
|
||||
for (response, _src) in responses.drain(..){
|
||||
while let Ok((response, _)) = state.response_queue.pop(){
|
||||
if let Response::Scrape(_) = response {
|
||||
num_responses += 1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue