Commit graph

60 commits

Author SHA1 Message Date
Joakim Frostegård
6691b77824 aquatic_http_load_test: store connections in a slab::Slab 2020-07-20 16:30:47 +02:00
Joakim Frostegård
da3b2bcd8c WIP: cleanup aquatic_http_load_test and aquatic_http_protocol 2020-07-20 14:50:19 +02:00
Joakim Frostegård
d1e9d24773 WIP: work on http load test (now partly working) and http protocol 2020-07-20 14:30:36 +02:00
Joakim Frostegård
5b0d364ccf WIP: start work on porting udp load test to http 2020-07-19 23:03:30 +02:00
Joakim Frostegård
4ac2012a2a aquatic_http: move protocol module to new crate aquatic_http_protocol 2020-07-19 21:59:31 +02:00
Joakim Frostegård
9df1f0ecc6 aquatic_http: rewrite request parsing, use smartstring
Use smartstring in PeerMapKey too.

Improves benchmark speed.

request-from-path:

time:   [2.1484 us 2.1530 us 2.1586 us]
change: [-24.246% -23.908% -23.570%] (p = 0.00 < 0.01)
Performance has improved.
2020-07-19 15:38:26 +02:00
Joakim Frostegård
a8e355f22a aquatic_http: add criterion benchmarks for request from path parsing
About 35% improvement by using both memchr methods
2020-07-19 01:58:41 +02:00
Joakim Frostegård
056cd41732 aquatic_http: add memchr version of urldecode, which might be faster 2020-07-18 06:05:13 +02:00
Joakim Frostegård
f94c52da77 aquatic_http: send_response: use itoa and Vec::with_capacity
This leads to fewer allocations and possibly better performance.
2020-07-18 03:05:40 +02:00
Joakim Frostegård
8269ae2994 aquatic_http: remove (no longer used) dependency serde_urlencoded 2020-07-05 19:50:52 +02:00
Joakim Frostegård
1dc2f44d9c restructure aquatic_common_tcp, move more into it from aquatic_http 2020-07-03 00:23:19 +02:00
Joakim Frostegård
82378e71f6 Move things to aquatic_common_tcp 2020-07-02 16:54:27 +02:00
Joakim Frostegård
720596dfb4 move more things from aquatic_http to aquatic_common_tcp 2020-07-02 16:47:33 +02:00
Joakim Frostegård
2e53a2adc1 add aquatic_common_tcp crate, move common functionality there 2020-07-02 16:34:36 +02:00
Joakim Frostegård
6b1f11635b aquatic_http: bencoded response with content-length 2020-07-02 13:47:37 +02:00
Joakim Frostegård
76079cf66e WIP: more work on aquatic_http 2020-07-02 00:39:50 +02:00
Joakim Frostegård
404e528616 WIP: start work on http tracker 2020-07-01 18:56:19 +02:00
Joakim Frostegård
3addab07f0 move plot_pareto from aquatic_udp_bench crate into own crate 2020-05-25 19:38:53 +02:00
Joakim Frostegård
2f13e1e1a8 rename crate "cli_helpers" to "aquatic_cli_helpers" 2020-05-25 19:27:22 +02:00
Joakim Frostegård
bc4ada104d rename crate "bittorrent_udp" to "aquatic_udp_protocol" 2020-05-25 19:21:52 +02:00
Joakim Frostegård
5babd8eda0 aquatic udp load test: use socket2 instead of net2 2020-05-25 18:42:23 +02:00
Joakim Frostegård
96991562e3 aquatic_udp: use socket2 instead of net2 2020-05-25 18:33:07 +02:00
Joakim Frostegård
1ec4745f45 aquatic_ws: use socket2 instead of net2 2020-05-25 18:24:36 +02:00
Joakim Frostegård
bc8916dce4 aquatic_ws: add logging with level configured by config file 2020-05-23 20:16:56 +02:00
Joakim Frostegård
f3bdb6bc2a aquatic_ws: privilege dropping; cli_helpers: show error context 2020-05-23 17:02:52 +02:00
Joakim Frostegård
7430c23ccc aquatic_ws: add simple_logger for debugging, need better solution 2020-05-23 14:53:29 +02:00
Joakim Frostegård
0f6d6d4b21 aquatic_ws: use log crate for debug error messages 2020-05-23 14:24:26 +02:00
Joakim Frostegård
526faa9aab cli_helpers: use anyhow in app fn; aquatic_ws: reorganize error handling 2020-05-23 14:05:50 +02:00
Joakim Frostegård
9a04173f65 Run cargo update 2020-05-17 12:14:59 +02:00
Joakim Frostegård
0bcfffb2bd aquatic_ws: create HandshakeMachine from ConnectionStage 2020-05-13 19:17:33 +02:00
Joakim Frostegård
de9a32840f WIP: aquatic_ws: start work on wss (ws with tls) 2020-05-12 18:48:50 +02:00
Joakim Frostegård
761952513f remove unused dependencies from aquatic_ws; run cargo update 2020-05-11 23:24:50 +02:00
Joakim Frostegård
5c83af9f88 Move some code from aquatic_udp into aquatic_common 2020-05-11 17:06:37 +02:00
Joakim Frostegård
1b8d74e26d rename aquatic to aquatic_udp, same for bench and load test crates 2020-05-11 16:55:46 +02:00
Joakim Frostegård
5b58db90e3 aquatic_ws: pass on offers to other peers; minor fixes 2020-05-08 21:05:46 +02:00
Joakim Frostegård
4d0c3d309a aquatic_ws: add tungstenite::Message encode and decode, not tested 2020-05-07 19:34:28 +02:00
Joakim Frostegård
cf75a07a7e WIP: aquatic_ws: start work on data structures, data flow 2020-05-07 16:49:28 +02:00
Joakim Frostegård
1080652282 WIP: start work on webtorrent support 2020-05-07 01:08:29 +02:00
Joakim Frostegård
6110017980 aquatic: add setting for dropping privileges after opening sockets 2020-05-06 15:54:03 +02:00
Joakim Frostegård
c8ce374736 Run cargo update 2020-04-28 13:25:59 +02:00
Joakim Frostegård
f6ed47fec7 add aquatic_load_test for benchmarking aquatic over the network 2020-04-19 10:21:12 +02:00
Joakim Frostegård
f4ca9c2795 aquatic_bench: start work on fixing it: create new connect bencher 2020-04-13 01:34:05 +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
3527952242 start work on using seperate threads for sockets and handlers 2020-04-11 19:35:15 +02:00
Joakim Frostegård
8d7cbb7926 aquatic_bench: test multiple threads at once, with disappointing results
DashMap doesn't scale as well as I had hoped. Only the scrape
handler performed somewhat better with more threads, since it
doesn't exlusively lock the torrent map. The announce and connect
handlers, however, gained barely nothing from more threads.
2020-04-11 17:54:23 +02:00
Joakim Frostegård
9a1143ffac aquatic_bench: enable loading configuration from file 2020-04-11 14:31:21 +02:00
Joakim Frostegård
c964f05e84 bittorrent_udp: add quickcheck tests for response byte conversion 2020-04-10 03:30:53 +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