Commit graph

287 commits

Author SHA1 Message Date
Joakim Frostegård
088daa72ff http_private: add config, launch with cli helpers 2022-04-02 14:35:40 +02:00
Joakim Frostegård
dc943674f6 work on http_private, including parsing announce requests 2022-04-02 13:32:36 +02:00
Joakim Frostegård
11829f98eb WIP: start work on aquatic_http_private 2022-04-02 12:31:06 +02:00
Joakim Frostegård
4bbdece020 Run cargo update
Updating getrandom v0.2.5 -> v0.2.6
    Updating lock_api v0.4.6 -> v0.4.7
    Updating pkg-config v0.3.24 -> v0.3.25
    Updating quote v1.0.16 -> v1.0.17
    Updating semver v1.0.6 -> v1.0.7
    Updating smartstring v1.0.0 -> v1.0.1
    Updating syn v1.0.89 -> v1.0.90
2022-03-31 12:29:57 +02:00
Joakim Frostegård
fb607ac0c2 Improve CPU pinning 2022-03-30 22:53:15 +02:00
Joakim Frostegård
d78b0fa31e Bump version to 0.2.0 for all aquatic crates 2022-03-26 11:39:37 +01:00
Joakim Frostegård
61f034386f Run cargo update 2022-03-24 16:40:46 +01:00
Joakim Frostegård
f5b1cd5525 Add command-line option for printing version and commit info 2022-03-24 16:17:17 +01:00
Joakim Frostegård
ba5a568bcd Switch from "simplelog" from "simple_logger" to remove "chrono" dep 2022-03-20 20:19:23 +01:00
Joakim Frostegård
83987563ec udp: replace dependency "chrono" with "time" 2022-03-20 19:57:44 +01:00
Joakim Frostegård
6197d120a6 Run cargo update
Updating cpufeatures v0.2.1 -> v0.2.2
    Updating crossbeam-channel v0.5.3 -> v0.5.4
    Updating futures-rustls v0.22.0 -> v0.22.1
    Updating libc v0.2.120 -> v0.2.121
2022-03-20 19:44:16 +01:00
Joakim Frostegård
fd704b6412 http: implement network.only_ipv6 and network.tcp_backlog 2022-03-20 18:44:38 +01:00
Joakim Frostegård
06a716f78a ws: implement network.only_ipv6 and network.tcp_backlog 2022-03-20 18:41:41 +01:00
Joakim Frostegård
688d68105b http, http_protocol: upgrade smartstring from 0.2 to 1.0 2022-03-18 15:51:20 +01:00
Joakim Frostegård
fbd3ce17b7 Run cargo update 2022-03-18 15:21:18 +01:00
Joakim Frostegård
667cf04085 ws: remove mio implementation 2022-03-18 15:15:34 +01:00
Joakim Frostegård
f6a7514fb8 Update to glommio version 0.7 (using crates.io instead of git version) 2022-02-19 15:32:25 +01:00
Joakim Frostegård
14a4c10546 s/toml_config/aquatic_toml_config/ 2022-02-19 15:11:00 +01:00
Joakim Frostegård
8abdf702b7 Update tungstenite and async-tungstenite to 0.17 2022-02-19 14:48:57 +01:00
Joakim Frostegård
7c8c67b847 Update rustls-pemfile to 0.3 2022-02-19 14:46:16 +01:00
Joakim Frostegård
f56d482760 ws: update parking_lot to 0.12 2022-02-19 14:38:18 +01:00
Joakim Frostegård
4073a1b8be Update hashbrown to 0.12 2022-02-19 14:32:31 +01:00
Joakim Frostegård
40d7265f5b Run cargo update 2022-02-19 14:27:24 +01:00
Joakim Frostegård
ee6ce8f0e9 Remove hashbrown dependency where unused 2022-02-19 14:27:00 +01:00
Joakim Frostegård
5e8777d2e2 udp, http: remove unused parking_lot dependency 2022-02-19 14:13:27 +01:00
Joakim Frostegård
7e06e63bd5 Run cargo update 2022-02-03 19:31:33 +01:00
Joakim Frostegård
91dcd3de4d
Add CanonicalSocketAddr struct (#49)
* Add CanonicalSocketAddr struct to aquatic_common, use in aquatic_udp

* udp_bench: fix build error by using CanonicalSocketAddr
2022-02-02 22:34:54 +01:00
Joakim Frostegård
84d57c1c86 http: make response sending more efficient by avoiding some copies 2022-01-30 17:13:00 +01:00
Joakim Frostegård
9ba72ce3fd Upgrade itoa to version 1 2022-01-30 15:55:35 +01:00
Joakim Frostegård
a208775104
Include documentation in printed config files (#41)
* Start work on printing toml config with comments

* WIP: toml_config: extract default values for fields

* WIP: toml_config: handle single-level nested structs

* WIP: toml_config: improve comment handling, std type trait impls

* WIP: toml_config: add Private trait, improve comment handling, clean up

* toml_config: fix default value bug; improve tests

* Use toml_config in all applicable crates; add toml_config enum support

* toml_config: improve comments

* toml_config_derive: support enum comments

* Improve config comments for udp, cli_helpers, common

* Improve config comments

* Add tests for Config struct TomlConfig implementations

* Improve Config comments

* Improve Config comments

* ws, http: add config comments for tls cert and private key lines

* small fixes to toml_config and toml_config_derive

* Run cargo fmt

* Fix typo in several config comments

* Update README

* Update README
2021-12-26 11:33:27 +01:00
Joakim Frostegård
9dd036a813 Run cargo update 2021-12-22 00:29:56 +01:00
Joakim Frostegård
f531a246b0 udp: support writing statistics html report to file 2021-12-21 23:16:48 +01:00
Joakim Frostegård
67c4c02bbd
aquatic_ws: mio: replace native_tls with rustls, rewrite connection state logic completely (#38)
* ws: mio: use rustls, rewrite Connection logic

* ws: mio: improve poll register/deregister handling

* ws: mio: work on type-level poll registry safety

* ws: mio: use stronger poll registry type-level guarantees

* ws: mio: fix stream reading

* ws: clean up, run fmt

* ws: mio: don't require registered connection for writing, improve docs

* ws: mio: add Connection::get_meta(), make Connection::meta private

* ws: mio: add ConnectionMap struct; remove utils.rs

* ws: mio: move token counter into ConnectionMap, improve docs

* ws: mio: connection: move Connection struct above state structs

* Update TODO

* ws: fix build errors

* ws: upgrade to tungstenite 0.16

* ws load test: don't panic on Close message; print shorter errors

* ws: fix socket worker bugs, add log statements

* ws: mio: wait for write availability if would block for ws messages

* Update README

* ws: mio: limit channels & queues; read 1 message only; other fixes

* ws: mio: send local responses each event; decrease channel size

* Update TODO

* ws: mio: limit ws send queue, fixing memory leak; limit pending messages

Also change some log output levels and run rustfmt

* Update TODO

* Update TODO
2021-12-16 16:09:36 +01:00
Joakim Frostegård
222fac0e09
Improve aquatic_ws glommio implementation, fixing memory leak (#37)
* ws: upgrade tungstenite and async-tungstenite to 0.16

* ws: use latest glommio

* ws: glommio: add config key connection_cleaning_interval

* ws: glommio: limit socket worker local channel size

Quick fix for memory leak

* ws: glommio: use prioritized task queue for sending responses

This is a start on trying to fix the large amount of responses
being dropped due to local response channel being full

* scripts/watch-threads.sh: don't highlight changes

* ws: glommio: await when sending responses from shared to local

* ws: glommio: limit ws message queue; add lots of ::log::warn for debug

* ws: glommio: add timeout to send_out_message, maybe pinpointing issue

* ws: glommio: clean up, tweak channel sizes; update TODO

* ws: glommio: set send timeout to 10s, add backpressure, accept drops

* ws: glommio: yield if needed in ConnectionReader backoff loop

* ws load test: add config key connection_creation_interval_ms

* ws load test: don't print "run connection" when opening connection

* ws load test: rename config num_connection to num_connections_per_worker

* ws load test config: improve order of code in file

* ws: glommio: info-level log for socket send timeout

* ws glommio: clean idle connections, improve cleaning code

* ws: glommio: make ConnectionWriter::send_error_response fallible; fmt

* ws: glommio: store JoinHandle in conn reference, cancel task on clean

* add scripts/heaptrack.sh

* Update TODO
2021-12-11 18:50:05 +01:00
Joakim Frostegård
31e44db469 Upgrade simplelog to version 0.11 2021-11-19 03:06:02 +01:00
Joakim Frostegård
fee3c9ca4e Update mio to version 0.8 2021-11-19 03:01:03 +01:00
Joakim Frostegård
7305a3532c Run cargo update 2021-11-19 02:47:17 +01:00
Joakim Frostegård
593a46452f aquatic_common: use hwloc for cpu pinning, for automatic core selection
This might not work very well on virtualized hosts, however..
2021-11-19 00:17:14 +01:00
Joakim Frostegård
138ae710ef udp: remove io_uring version, it is slower than mio version 2021-11-18 22:42:37 +01:00
Joakim Frostegård
99632d4be5 udp: implement torrent map cleaning for new, sharded torrent state 2021-11-18 22:42:37 +01:00
Joakim Frostegård
54149ed3eb aquatic_common: add work-in-progress SO_ATTACH_REUSEPORT_CBPF impl 2021-11-18 22:42:37 +01:00
Joakim Frostegård
fc6f3c299e udp load test: move config to own file, clean up imports 2021-11-18 22:42:37 +01:00
Joakim Frostegård
4641dd29f2 udp: remove glommio implementation 2021-11-18 22:42:36 +01:00
Joakim Frostegård
c949bde532 WIP: udp io-uring experiments 2021-11-18 22:42:11 +01:00
Joakim Frostegård
0e61744443 http load test: connection open interval setting, other improvements 2021-11-11 17:52:57 +01:00
Joakim Frostegård
e86410291a cpu pinning: set affinity to multiple hyperthreads, fix issues 2021-11-07 13:31:03 +01:00
Joakim Frostegård
b653e3e3ff ws load test: add cpu pinning and log crate logging 2021-11-07 12:00:36 +01:00
Joakim Frostegård
b54694bbc0 aquatic_ws: improve cpu pinning 2021-11-07 11:46:48 +01:00
Joakim Frostegård
57896f4648 http, http load test: improve CPU pinning 2021-11-07 11:25:50 +01:00
Joakim Frostegård
aa332ab296 aquatic_common, udp, udp load test: improve cpu pinning 2021-11-07 11:04:31 +01:00