Provide machine readable vespa profile inspect output
Is your feature request related to a problem? Please describe. We want to integrate automated reporting by programmatically processing the output of the vespa inspect profile tool. However, the current output format is not easily machine-readable, making automation more challenging.
Describe the solution you'd like We propose adding a parameter to configure the profiling output as JSON and specify a target output file. This would allow seamless integration into automated workflows.
Example:
vespa inspect profile -f response_example.json -format json -o output.json
This enhancement would improve automation capabilities and make it easier to parse profiling data programmatically.
This is not straightforward to implement, as both the output-format of the trace (and the profile output) is dynamic and subject to change. Could you expand of which part of the output that would be most valuable to you in this setting @jcorderor?
Hi @thomasht86,
Taking this as an example of the output:
[dummydate]: PROGRESS: vespa-fbench: Seconds left 60
Stopping clients
Clients stopped.
........................................
Clients Joined.
*** HTTP keep-alive statistics ***
connection reuse count -- 384
***************** Benchmark Summary *****************
clients: 40
ran for: 60 seconds
cycle time: 0 ms
lower response limit: 0 bytes
skipped requests: 0
failed requests: 0
successful requests: 464
cycles not held: 464
minimum response time: 989.25 ms
maximum response time: 9379.58 ms
average response time: 5281.09 ms
25 percentile: 4218.98 ms
50 percentile: 5394.30 ms
75 percentile: 6420.52 ms
90 percentile: 7528.06 ms
95 percentile: 8095.65 ms
98 percentile: 8520.60 ms
99 percentile: 8866.91 ms
99.5 percentile: 8985.17 ms
99.6 percentile: 9020.54 ms
99.7 percentile: 9030.68 ms
99.8 percentile: 9064.39 ms
99.9 percentile: 9221.99 ms
actual query rate: 7.57 Q/s
utilization: 100.00 %
zero hit queries: 0
zero hit percentage: 0.00 %
http request status breakdown:
200 : 464
We normally take these values for comparison:
- minimum response time
- maximum response time
- average response time
- Some percentiles, in case there is a big variability on the results
- actual query rate
- zero hit queries
- zero hit percentage
- % HTTP Errors
- failed requests
- successful requests
Thanks!
Hi @jcorderor!
I understood that the original issue was about getting output from vespa inspect profile into machine-readable format.
If you also have the same request for vespa-fbench-output, we would appreciate if you could create another issue for that.
Do you have a similar specification for what you would like from vespa inspect profile-output?
Hi @thomasht86!
Apologies, you are absolutely right. I was thinking of something similar for fbench and confused myself.
For the vespa inspect, what could be interesting for us is at least:
- total time
- query, summary, and other times
- matching time
- first phase time
- second phase time
Within the first and second phases, the timing for all the rankers and functions used
It would also be great to add the search chain and the query profile used.
Thanks in advance.