-
-
Notifications
You must be signed in to change notification settings - Fork 798
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
Part of #1260: write a manually run concurrency test to tease out problem with pool retention #1265
Conversation
…blem with LockFreePool
Running locally, with the latest code -- with 100 threads, 60 seconds for others, 120 seconds for lock-free, I get results:
Interestingly enough, But the other two implementations appear much better behaved. So I am starting to think that maybe default should actually be changed to EDIT: one more test run:
|
…blem with pool retention (#1265)
@cowtowncoder nice reproducer! I also gave a try and came to your similar conclusions, even though I made a few attempts and never seen numbers so high for the All this considered I agree on your suggestion of deprecating and ultimately removing the |
All of these new pools have much worse performance than the thread pool one. I feel strongly that it is much too early to make the default to use the really slow pools. |
At this point there is just one more thing I would like to confirm wrt performance before rollback for 2.18+ (for 2.17.1 it;s done): is the problem
since (1) is something we perhaps cannot solve. One way to figure out if (2) might occur would be to profile memory allocations: if recycling works as it should, new pool recycler would not do any more allocations than threadlocal-based pool. |
So,
RecyclerPoolTest
undersrc/test/java/perf/
runs through 3 pool implementations with N threads (like 100) over some amount of time (30 or 60 seconds), and checks pooled entry count (pool.pooledCount()); occasionally printing size.Hope is that this will show abnormal behavior seen in production environments.