docs: added comment about merge queues (#42)
docs: added comment about merge queues
Update CONTRIBUTING.md
Co-authored-by: Lindsay Stewart stewart.r.lindsay@gmail.com
- ci: Merge queue events need to trigger the final report publish.
Co-authored-by: Lindsay Stewart stewart.r.lindsay@gmail.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802032778号
s2n-netbench
An efficiency, performance, and correctness analysis tool for transport protocols.
Why does this exist?
There are many transport protocols and several implementations of each. This tool exists to provide users with the ability to perform a direct comparison and decide the best implementation for their workloads.
Here are a few examples of questions that s2n-netbench aims to answer:
Quickstart
A basic use of s2n-netbench is demonstrated in the
netbench-run.shscript. This script willrequest-response.jsonscenario usings2n-quicands2n-tlsdriversconnect.jsonscenario usings2n-quicands2n-tlsdriversnetbench-collector./target/netbench/reportdirectoryFrom the main
netbenchfolder, run the following commandsThen navigate to
localhost:9000in a browser to view the netbench results.Note that this script does not support bpftrace, as it runs without any of the elevated permissions required for bpf programs.
How it works
netbench-scenarios
netbenchprovides tools to write scenarios that describe application workloads. An example of a scenario is a simple request/response pattern between a client and server:This scenario generates a json file of instructions. These instructions are protocol and language independent, which means they can easily be executed by a “netbench driver”, written in any language or runtime.
netbench-driver
Netbench drivers are responsible for executing netbench scenarios. Each transport protocol has a
clientandserverimplementation. Each of these implementations is a self-container binary that consumes ascenario.jsonfile. Implemented drivers include:TCPnative-tlss2n-quics2n-tlsnetbench-collector
Driver metrics are collected with the
netbench-collectorutility. There are two implementation of this available - a generic utility and a bpftrace utility. The generic utility uses theproc fsto gather information about the process, while thebpftraceimplementation is able to collect a wider variety of statistics through ebpf probes.The collector binary takes a
netbench-driveras an argument. The driver binary is spawned as a child process. The collector will continuously gather metrics from the driver and emit those metrics tostdout.netbench-cli
netbench-cliis used to visualize the results of the scenarios. This reports use vega which is “a declarative format for creating, saving, and sharing visualization designs”.reportis used to generate individual.jsonreports. These can be visualized by pasting them into the vega editor.report-treeis used to to generate a human-readable.htmlreport. Given a directory structure like the followingreport-treewill generate the individualreportsand package them into a human readableindex.htmlfile that can be used to view graphs of the results.A sample report can be found here.
Note that you will not be able to open the report directly since the report relies on the jsdelivr cdn. This request will fail when the URL is a local file scheme with a CORS request not HTTP error.
To get around this, use a local server.
In a browser, navigate to
localhost:9000to view the netbench report.