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
Fix performance of HTTP server (for strict entities at least) #19255
Fix performance of HTTP server (for strict entities at least) #19255
Conversation
630bc35
to
eee55c6
Compare
Test FAILed. |
Test FAILed. |
…with simple GraphStage
…on the rendering-side
eee55c6
to
fa6b36a
Compare
Cleaned up and rebased (also I added an issue for the second part: #19352). It is interesting that you don't need to actually touch the stage functionality (on both sides). The only thing that is needed is some slight additions to the already existing GraphStages that handle the substreams properly. I wonder if some form of this would even be generic enough to be included in GraphStages themselves as helper methods. On the rendering side the only thing needed would be an On the parsing side, something similar is needed, i.e. which creates a substream, wraps that substream (in an HttpEntity in that case) and pushes it and then transfers input elements to that substream as long as (or until) some predicate holds. |
Test FAILed. |
Here is the current benchmark with and without this PR:
It turns out that fusing has no effect in the original version because basically all the time is spent in materialization. Only after per-request materialization was removed the benefits of fusing can actually reap their benefits. |
The test failure was in |
Those look very promising, and also seem to overlap with what Roland observed before xmas when benchmarking (that things did not make much of a difference then). Thanks a lot! |
PLS BUILD |
Test PASSed. |
Promising to (1st commit, 2nd already done) review (and hope to merge) today. |
Finally read through the entire thing, looks good! Thanks a lot and sorry for the delay @jrudolph! |
Fix performance of HTTP server (for strict entities at least)
Cool, thanks for reviewing and merging, @ktoso. |
…erges Fix performance of HTTP server (for strict entities at least)
i.e. only for Strict entities where we can now completely get rid of per-request materialization.
This includes a fix for #19240 and also the corresponding issue on the rendering side.
This is just a quick try which makes a few tests fail probably because some boundary conditions need to be fixed properly.
With this patch performance is up to ~ 90k RPS (from 15k without the patch) on my machine.
/cc @sirthias