Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adaptive Load Controller #416

Open
eric846 opened this issue Jul 22, 2020 · 2 comments
Open

Adaptive Load Controller #416

eric846 opened this issue Jul 22, 2020 · 2 comments

Comments

@eric846
Copy link
Contributor

eric846 commented Jul 22, 2020

Create a tool that repeatedly calls a Nighthawk Service with brief benchmarks at different RPS values and adjusts the RPS based on latency, logging all results.

Create a C++ library with a CLI wrapper.

Generalize to inputs other than RPS and metrics other than latency, including metrics pulled from outside services.

Allow plugging in different algorithms for computing the next RPS.

mum4k pushed a commit that referenced this issue Jul 29, 2020
All protos, including plugin-specific config protos for all plugins we plan to ship initially.

Works on #416 

Signed-off-by: eric846 <56563761+eric846@users.noreply.github.com>
mum4k pushed a commit that referenced this issue Jul 31, 2020
This is the public C++ API of the Adaptive Load Controller library:

- A single function: PerformAdaptiveLoadSession()
- Interfaces for user-defined plugins:
  - MetricsPlugin
  - StepController
  - ScoringFunction
  - InputVariableSetter

After submitting this PR, I will try to send 4 small independent plugin implementation PRs in parallel, then one larger PR with the main driver that depends on all of them, then a PR with the CLI wrapper.

#416
@dubious90
Copy link
Contributor

@eric846 Should this issue be closed at this point? Just stumbled across this in an investigation of something else, but I'm fairly sure this is now complete.

@eric846
Copy link
Contributor Author

eric846 commented Jan 5, 2021

We got interrupted before creating the CLI wrapper executable, but we still plan to do that.

dubious90 pushed a commit that referenced this issue Feb 4, 2021
A mock for AdaptiveLoadController for use in unit tests of the upcoming adaptive load CLI executable.

Part of #416

Signed-off-by: eric846 <56563761+eric846@users.noreply.github.com>
dubious90 pushed a commit that referenced this issue Feb 11, 2021
An adaptive load command line executable that drives a Nighthawk Service with a series of benchmarks, varying the RPS or another input variable dynamically.

`bazel build -c opt :nighthawk`

`bazel-bin/nighthawk_adaptive_load_client`

- `--spec-file` _pathname_
  - Pathname of an `AdaptiveLoadSessionSpec` textproto defining the session
  - Required
  - Example:`test/adaptive_load/test_data/valid_session_spec.textproto`
- `--output-file` _pathname_ 
  - Pathname to write the `AdaptiveLoadSessionOutput` textproto session output
  - Required
- `--nighthawk-service-address` _host:port_ 
  - Address of the Nighthawk Service to be driven by the adaptive load controller over gRPC
  - Default `localhost:8443`
- `--use-tls`
  - Use TLS for the gRPC connection when sending commands to the Nighthawk Service
  - Default false (insecure connection)

Note that to run an adaptive load session, you must also have a Nighthawk Service running, e.g.:
`bazel-bin/nighthawk_service &`  (to run at localhost:8443)

Part of #416.

Signed-off-by: eric846 <56563761+eric846@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants