Commit graph

73 commits

Author SHA1 Message Date
Joakim Frostegård
2779b6ec3a aquatic: lock connections and torrents together; optimize handler
Handler: don't stop collecting requests early unless mutex can
be unlocked.
2020-04-12 14:44:34 +02:00
Joakim Frostegård
cbae43e175 aquatic: HandlerConfig: add comment 2020-04-12 13:31:32 +02:00
Joakim Frostegård
ad7a8c46a9 aquatic: config: rename recv_buffer_size to socket_recv_buffer_size 2020-04-12 13:29:21 +02:00
Joakim Frostegård
5430e561f5 aquatic: Config: add fields for max handler request, channel timeout 2020-04-12 13:26:44 +02:00
Joakim Frostegård
e61c961126 Use hashbrown hashmap directly for faster hash (ahash) 2020-04-12 13:19:07 +02:00
Joakim Frostegård
558ddadf28 Remove DashMap, use parking_lot::Mutex<HashMap> instead 2020-04-11 22:07:09 +02:00
Joakim Frostegård
70cc193522 Use crossbeam channel insteaf of SegQueue
Reduces overutilization of CPU greatly
2020-04-11 21:11:25 +02:00
Joakim Frostegård
f37ba1e52e Use (unbounded) SegQueue instead of ArrayQueue 2020-04-11 20:00:51 +02:00
Joakim Frostegård
3527952242 start work on using seperate threads for sockets and handlers 2020-04-11 19:35:15 +02:00
Joakim Frostegård
9bf17b0ab4 bittorrent_udp: response_to_bytes: return Result<(), io:Error> 2020-04-11 15:03:50 +02:00
Joakim Frostegård
834a8c3fa2 cli_helpers: run_with_cli_and_config: rename function and "f" argument 2020-04-11 14:19:46 +02:00
Joakim Frostegård
688372bdf2 aquatic: announce and scrape handlers: send back error on invalid conn 2020-04-11 14:17:03 +02:00
Joakim Frostegård
fe85901021 bittorrent_udp: add RequestParseError; remove InvalidRequest; other fixes 2020-04-10 15:16:20 +02:00
Joakim Frostegård
8dfd49af0d cli helpers: in run function, take function as argument instead 2020-04-09 17:56:20 +02:00
Joakim Frostegård
ac52668a3d add crate cli_helpers with option and config parsing; use in aquatic
Putting cli functionality into its own crate will allow using it
from aquatic_bench and possibly other programs.
2020-04-09 16:55:40 +02:00
Joakim Frostegård
b457df26e3 aquatic annonunce handler: downgrade TorrentMap ref instead of new .get 2020-04-09 11:46:06 +02:00
Joakim Frostegård
32edee9bbb aquatic: add #[inline] to handle_readable_socket and handlers
Also update aquatic_bench comment with new bench results
2020-04-09 10:14:53 +02:00
Joakim Frostegård
2fd732efc6 aquatic: handlers: pass rng's as function arguments 2020-04-09 09:53:18 +02:00
Joakim Frostegård
bd16cdd709 aquatic: event loop: don't preallocate request/response vectors
It's better to just allocate when needed.
2020-04-09 09:34:39 +02:00
Joakim Frostegård
eddd353621 aquatic: when statistics.interval == 0, skip adding to stats atomics 2020-04-08 22:00:52 +02:00
Joakim Frostegård
5d2e4412b3 aquatic: create function in tasks.rs for statistics printing 2020-04-08 21:55:16 +02:00
Joakim Frostegård
58fbf8b7fe aquatic: add comments to many config fields 2020-04-08 21:50:23 +02:00
Joakim Frostegård
e3b29723a4 aquatic: when config recv_buffer_size is zero, don't set on socket 2020-04-08 21:45:25 +02:00
Joakim Frostegård
ad68dda9f5 aquatic: remove unnecessary fields from Peer; general clean up 2020-04-08 21:40:36 +02:00
Joakim Frostegård
31c8864658 aquatic: put max_scrape_torrents, max_response_peers in NetworkConfig 2020-04-08 21:32:05 +02:00
Joakim Frostegård
7239e9c047 aquatic: add and use NetworkConfig.peer_announce_interval 2020-04-08 21:30:57 +02:00
Joakim Frostegård
ca9d15c7a9 aquatic: move some fields from Config into new NetworkConfig 2020-04-08 21:27:12 +02:00
Joakim Frostegård
fa60eddcc4 aquatic: add CleaningConfig and StatisticsConfig to Config, use them 2020-04-08 21:22:45 +02:00
Joakim Frostegård
766606cc08 aquatic: announce handler: improve safety by small margin 2020-04-08 20:26:39 +02:00
Joakim Frostegård
789783cfe4 aquatic scrape handler: preallocate stats vec better 2020-04-08 20:23:31 +02:00
Joakim Frostegård
910accad31 announce handler: keep mutable access to torrent map less time 2020-04-08 13:32:18 +02:00
Joakim Frostegård
afa4ad318f aquatic stats print: fix newline printing issue 2020-04-08 11:56:30 +02:00
Joakim Frostegård
d896b6cf29 aquatic: print entire socket errors 2020-04-08 11:49:47 +02:00
Joakim Frostegård
52078ab1ad aquatic: print bandwidth used (based on bytes received and sent) 2020-04-08 11:43:18 +02:00
Joakim Frostegård
a865f4a1ae Add inline markers; simplify ip address conversion in request_from_bytes 2020-04-08 11:21:00 +02:00
Joakim Frostegård
a99688a5a2 benchmark byte conversion as well; bittorrent_udp: use buffers 2020-04-07 20:19:28 +02:00
Joakim Frostegård
51590a3d6c aquatic: print stats about number of peers per torrent 2020-04-07 16:57:34 +02:00
Joakim Frostegård
3b52acbd20 aquatic: print num requests per readable poll event 2020-04-07 15:36:19 +02:00
Joakim Frostegård
3ca22c9f3f aquatic: take into account how many peers announcing peer wants back 2020-04-07 14:50:33 +02:00
Joakim Frostegård
00513209ad aquatic: move socket creation into run_event_loop function 2020-04-07 14:19:02 +02:00
Joakim Frostegård
40583b32a3 aquatic server conf: increase default recv_buffer_size 2020-04-07 14:11:26 +02:00
Joakim Frostegård
f348013abb aquatic: create new socket for each worker thread, don't clone one
This is the point of SO_REUSEPORT.
2020-04-07 14:09:29 +02:00
Joakim Frostegård
74e3a51fbe aquatic: add and use Config.poll_event_capacity 2020-04-07 13:50:10 +02:00
Joakim Frostegård
f5700bfa18 aquatic: add and use num_threads setting 2020-04-07 13:37:07 +02:00
Joakim Frostegård
19277831c8 aquatic: count received requests / sent responses, print on interval 2020-04-07 13:22:28 +02:00
Joakim Frostegård
e4dfe2852c aquatic: add Config struct, use in code 2020-04-06 20:14:24 +02:00
Joakim Frostegård
ad1fa5b833 aquatic: run_event_loop: extract inner logic to own function 2020-04-06 19:58:00 +02:00
Joakim Frostegård
8426e8f3f7 on invalid requests, return error response; simplify Request type 2020-04-06 19:43:49 +02:00
Joakim Frostegård
51f2fcea45 turn of mimalloc security features, seemingly improving performance 2020-04-06 14:38:59 +02:00
Joakim Frostegård
165214018c Move benchmarks to seperate crate "aquatic_bench" 2020-04-06 12:49:54 +02:00