-
Notifications
You must be signed in to change notification settings - Fork 40
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
SPIKE: Secretless benchmark metrics are defined #1398
Comments
In the feature spec we are focused on TCP - can we focus on TCP here as well? Can we also ensure scope is clear, eg right now we only need to measure post-connection streaming latency and throughput. In particular, from the doc we have:
I think in this card we are asking: how can we measure post-authentication handshake latency / throughput? One other relevant requirement:
So at a minimum, the data that's output has to be timestamped and tagged to indicate which specific connection the datapoint is relevant to. |
The outcome from this spike is captured in the telemetry branch, where there is a reference implementation of metric measurement, collection, export and analysis. For making measurements we start by noting that network I/O in Go is blocking. That means reads will block a goroutine until the buffer has something. We use In order to take measurements, we must instrument each TCP connection instance by wrapping it to intercept reads and writes. Metrics definitionsThe metrics are defined below. NOTE that each metric is e TCP streaming latencyThe time between when a source connection's Read unblocks from the arrival of some packet to when the destination connection's Write for that packet returns. NOTE: some small experiments indicate that the order of events in Secretless is that there is always a source connection Read followed by a destination connection's Write. TCP streaming throughputThe ongoing sum of the number of bytes written in any direction. POC implementationThe POC implementation follows the ideas above. The metrics are defined and labelled with connector specific information like the Secretless service name and connector type. secretless-broker/internal/proxyservice/proxy_service.go Lines 315 to 329 in 1de7c61
The connections are instrumented to allow measurement of latency and throughput, and measurements are taken via OpenTelemetry. secretless-broker/internal/plugin/connectors/tcp/proxy_service.go Lines 175 to 205 in 1de7c61
|
Overview
For this effort our focus is on TCP connectors, and only the "streaming" segment of the connection (post authentication). The metrics we are interested in are therefore
The goal here is
To provide a broader context for our language around the metrics we should elaborate on the pathways that different types of connections (TCP, HTTP etc.) take and how they are handled by Secretless; ensuring to describe the lifecycle of connections (auth vs streaming etc.). Diagrams and flow charts will be useful here. It would also help if such diagrams references parts of the code.For the metrics we should associate them with some metrics type (e.g. Value recorder is appropriate for latency), and capture any (correlating/otherwise) metadata.
Definition of done
The text was updated successfully, but these errors were encountered: