-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Perf regression in the HTTP parser caused by long look-ahead #11513
Comments
@lorban Interesting, as there was good improvements in jmh including gc. But let's roll back for this release and evaluate which of the optimisations work and which do not. Maybe I implemented wrongly as compared with the jmh? Strange that there is more allocation as the idea is that there should be none? |
First clues of what's going on: Allocation prof with long look-ahead vs Allocation prof without long look-ahead Zoom on |
@lorban seem like the 2 runs run different code... can you double check? |
@lorban Something is strange with that, because the changes should not have affected |
This seems reproducible: Allocation prof with long look-ahead vs Allocation prof without long look-ahead |
@lorban I can't see any significant changes in I'm guess the issue is that the quick start method might not be setting things up right for the Host header caching to work. |
@lorban same thing in your second run. The code with long lookahead is allocating HostPortHttpFields in parseFields, whilst the original code is not?? |
@gregw I cannot explain it yet, but this is the data we have. Clearly, latencies suffered, CPU profiling shows the GC is overworked so I think the allocation profile we have can be trusted... unless proven otherwise. I'll work top-down and add some stat counters to try to understand what's going on. |
@lorban found it! The new quick start paths are missing |
Fix #11513 by preparing the field cache
@gregw you nailed it, the cpu profiling of #11517 shows that the GC is now back to its normal activity. |
Fix #11513 by preparing the field cache
Jetty version(s)
12.0.x
Description
The changes in #11486 introduced a noticeable performance regression.
This profiler run was executed against branch 12.0.x and clearly shows that the GC is very busy.
While that profiler run was executed against branch
experiment/jetty-12/revert-11486
with the only difference being the changes of #11486 were reverted, and it shows the GC is doing a lot less work.The text was updated successfully, but these errors were encountered: