Commit Graph

1119 Commits

Author SHA1 Message Date
Herbert Wolverson
d0dd559f1d config_control.rs: Eliminate vector reallocation from get_nic_list
Refactor the get_nic_list function to use iterators with a collect
at the end, ensuring that the result vector is allocated at exactly
the needed size.
2023-01-19 15:15:42 +00:00
Herbert Wolverson
7cb8f930d1 De-async two things that shouldn't have been async to begin with. 2023-01-19 14:59:12 +00:00
Herbert Wolverson
29a9985a5a Remove file that isn't needed anymore. 2023-01-19 14:51:01 +00:00
Dave Taht
d58115fd3d Create a interfaces to test against
Dummy interfaces are commonly used to test stuff like this.
Most Linuxes do support them. A more advanced approach

Linux interfaces have a 15 character limit.

This implementation presently does not remove the created interface
and is a sterling example of how "side effects" in the OS itself
often need to be accounted for.
2023-01-19 14:44:50 +00:00
Herbert Wolverson
4d569e698c Add doc tags and general cleanup 2023-01-19 14:36:09 +00:00
Herbert Wolverson
a5fc96abc9 The lqos_node_manager cache manager uses a persistent BusClient 2023-01-18 23:39:12 +00:00
Herbert Wolverson
2633974839 Missed file from previous commit 2023-01-18 23:29:58 +00:00
Herbert Wolverson
3cb2799beb Still a work in progress, needs work - but adds a persistent client option for the bus. It currently won't work well without a pause between request/replies - but it works well enough for lqtop. More improvements needed. 2023-01-18 23:15:09 +00:00
Herbert Wolverson
da6a8f08a2 Move the socketserver into the bus crate also, makes more sense there. 2023-01-18 22:28:15 +00:00
Herbert Wolverson
2b573708ac Remove auth cookie from bus. Benchmarks show a tiny improvement in overall performance. 2023-01-18 22:18:16 +00:00
Herbert Wolverson
58c692425b Benchmark suite includes local socket round-trip. 2023-01-18 22:01:58 +00:00
Herbert Wolverson
e3b2b71289 Add benches and start benchmarking parts of the client/server setup 2023-01-18 21:46:20 +00:00
Herbert Wolverson
6c52fceb7f WIP - Use a UNIX stream socket rather than TCP for local bus communications. 2023-01-18 21:21:42 +00:00
Herbert Wolverson
0d81df6031 Merge branch 'main' of https://github.com/LibreQoE/LibreQoS 2023-01-18 21:14:46 +00:00
Dave Taht
0f16137c59 Fix comment to clarify tc_handle is calling c func
It was unclear until I read it that it was not shelling.
2023-01-18 19:03:55 +00:00
Herbert Wolverson
ea39de92c0 Fix stale comment 2023-01-18 15:35:30 +00:00
Robert Chacón
f9efbb7be7
Update README.md 2023-01-17 19:55:11 -07:00
Robert Chacón
66a4f9c763
Update README.md 2023-01-17 19:54:50 -07:00
Robert Chacón
b2531fb6dd
Improve documentation for CPU requirements 2023-01-17 19:40:50 -07:00
Dave Taht
0888d3d6da Goofed on /vendor 2023-01-17 17:02:52 -08:00
Dave Taht
3d6e214616 Add defer option to all html
If this actually breaks anything, we can revert.
2023-01-17 17:00:30 -08:00
Dave Taht
0a0248a534 Modern javascript supports the defer option
Move the javascript at the bottom of the file to the top.

Also it seems a matter of luck that vendor/bla worked when
/vendor/bla was needed.
2023-01-17 16:55:07 -08:00
Dave Taht
931b0d8d22 Move Run Bandwidth Test to left of configuration
Basic design principle for muscle memory: always put the same menu
items in the same places as often as you can.
2023-01-17 16:46:58 -08:00
Dave Taht
9bd1d876ab HTB shrunk a little 2023-01-17 16:08:19 -08:00
Dave Taht
e251ef09e3 Forgot to import the right things
Also compiling from the top of the tree doesn't recurse. curses
2023-01-17 16:08:19 -08:00
Dave Taht
c5947fff56 Get rid of 3 more Strings from tc cake parser
DiffServ had a missing (underused) option
AckFilter &
FlowMode now use the nifty dashyenum thing
Bandwidth unlimited is all that we are using cake for today

Only FWmark left to go (which is in hex and I do not know how to
parse with and without the 0x prefix)
2023-01-17 15:33:04 -08:00
Herbert Wolverson
e0552ec55b Break dash-supporting enum into its own macro. 2023-01-17 22:01:56 +00:00
Herbert Wolverson
c6661520dd Support dashes in generated enums by replacing - with _ during
the match phase. Enum options have to replace minus with underscore.

E.g. `ack-filter` becomes `ack_filter`.

So you can do:

`string_table_enum!(DashingEnum, option_1, option2);`

And read `DashingEnum::from_str("option-1")`
2023-01-17 21:42:33 +00:00
Herbert Wolverson
d83c1dc852 Merge branch 'main' of https://github.com/LibreQoE/LibreQoS 2023-01-17 21:15:00 +00:00
Herbert Wolverson
e26a9982ab Add a string table macro to make it easier to pass between JSON
exported text and known-types in queue definitions.
2023-01-17 21:13:08 +00:00
Herbert Wolverson
f9351757ca Remove per-tick printing
Cap number of watched queues at (CPU cores * 2), per belyivulk
2023-01-17 20:06:33 +00:00
Herbert Wolverson
7ea5ab3cd8 Convert diffserv from a string to a nice enum.
Co-authored-by: Dave Taht <davet@taht.net>
2023-01-17 20:00:10 +00:00
Herbert Wolverson
87aaddd82b Cargo format run 2023-01-17 19:54:11 +00:00
Herbert Wolverson
6269f41b67 Use Rayon to parallelize the queue reader 2023-01-17 19:53:59 +00:00
Herbert Wolverson
6f98e0f088 Lazy queue tracking
Instead of polling every TC queue, maintain a "watch list" (with
auto expiration). Opening a queue in the GUI adds that queue to
the "watch list".

Only queues in the watch list are polled.
2023-01-17 19:44:53 +00:00
Dave Taht
7be6a3051c Note some possible string to byte conversions
I wish I understood how to write a simple lookup table in rust...
2023-01-17 09:23:44 -08:00
Herbert Wolverson
5855a3b3ed Move tc queue monitoring into a separate crate
* Remove the `lqosd` lib/main hack.
* Move benchmarks from lqosd into the new `lqos_queue_tracker` crate.
* Move queue tracking into a separate crate, to make it easier to
  work with.
2023-01-17 15:51:11 +00:00
Herbert Wolverson
424925d0d6 Improve the /etc/lqosd example 2023-01-17 14:09:14 +00:00
Herbert Wolverson
1a0b20aa11 Add Criterion-based benchmarks to lqosd
* Add a secondary build option (as library) to lqosd, by including
  a `lib.rs` file that mirrors `main.rs`.
* Add the boilerplate required for a Criterion-based benchmark
  setup.
* Add support for `cargo bench` launching a set of tests that
  benchmark deserializing TC queues, and benchmarks retrieving
  queue statistics from `tc`.
2023-01-17 14:05:28 +00:00
Herbert Wolverson
6403ad21e4 Merge branch 'main' of https://github.com/LibreQoE/LibreQoS 2023-01-16 16:04:05 +00:00
Herbert Wolverson
7548413165 Use Log and Env_log for output. Suppress kernel messages that confuse
people on startup.

Default to "warn" level of logging. You can override by setting
RUST_LOG to "info". (Environment variable)
2023-01-16 16:03:14 +00:00
Robert Chacón
ba44bd3ca5
Update lint_python.yml
Test skipping the part of lint_python.yml that keeps breaking
2023-01-16 08:38:05 -07:00
Herbert Wolverson
6f49b2498a Implement correct signal handling for SIGINT, SIGTERM and SIGHUP
Extend the signals handler to reload configuration on SIGHUP, and terminate
on SIGINT and SIGTERM.

FIXES #202
2023-01-16 15:07:20 +00:00
Herbert Wolverson
05bb1ee959 Fix failure to display Cake Tins in web UI
Cake Diff functions now use "checked_sub" to ensure that an overflow
doesn't mess up data.

Web UI includes checks that Cake data is available on each history
tick.
2023-01-16 14:30:48 +00:00
Robert Chacón
76513466fa
Merge pull request #201 from LibreQoE/change1244
Disable refreshLatencyGraphs in schedulerAdvanced.py
2023-01-16 01:18:26 -07:00
Robert Chacón
1238123143
Rename influxDBdashboardTemplate_v2.5.1.json to influxDBdashboardTemplate.json 2023-01-16 01:10:47 -07:00
Robert Chacón
56f842371d
Delete influxDBdashboardTemplate.json 2023-01-16 01:10:31 -07:00
Robert Chacón
6b4432e899
Update README.md 2023-01-16 01:08:03 -07:00
Robert Chacón
246056e055
Update schedulerAdvanced.py 2023-01-16 01:05:32 -07:00
Robert Chacón
6a3fe4957a
Merge pull request #200 from LibreQoE/v1.4-pre-alpha-rust-integration
reforked schedulerAdvanced, plus a few other bits
2023-01-16 01:02:11 -07:00