Repository navigation
Benchmark every pull request against its base branch - #1326
Merged
Merged
Conversation
Contributor
|
I would love it more if it used uSockets http_load_test instead of wrk |
Contributor
Author
|
Done: the http rows use |
| # built with it | ||
| - name: Build http_load_test | ||
| working-directory: head/uWebSockets/uSockets | ||
| run: clang-18 -O3 -DLIBUS_NO_SSL -Isrc src/*.c src/eventing/*.c src/crypto/*.c examples/http_load_test.c -o http_load_test |
Contributor
There was a problem hiding this comment.
Okay either way but this is just "make examples" in uSockets folder otherwise
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A performance PR here comes with numbers measured by its author, on his machine, with his method, and the review can only take them or leave them. This adds a workflow that measures the PR itself, on the runner, against its base branch.
It builds both, starts servers from each build and alternates the load between them scenario by scenario, so both arms see the same machine in the same minute and only the ratio is read. Each arm runs twice, the second time from a copy of its build: base against base and head against head is the noise of that run, and a row is marked only when it moved more than that. Every server reports its own cpu time too, so the table shows how busy it was and what a request cost it.
http_load_testfrom uSockets for the http rows andload_testfor the ws rows, both built from the submodule, the server pinned to a core whose hyperthread stays idle.Scenarios: hello world, headers in and out, the JSON POST of
http_load_testthroughonData, a microcached route, ws echo at 20 B and 4 KB. Same design as brianc/node-postgres#3775.The table is posted as a comment on the PR by a second workflow on
workflow_run, so also on a PR from a fork, where the token of the run cannot comment.workflow_runuses the file on master, so the comment starts after the merge. About 15 minutes per run. Same code on both arms on a hosted runner (nigrosimone#4):Node v26.10.0, AMD EPYC 7763, 4 cores (server on cpu 0, load on 2,3), 100 connections.
see https://github.com/uNetworking/uWebSockets.js/actions/runs/36669803181/jobs/89233603871/summary_raw