branchrust_reboot/main/pool_leak_experimentscancel

10 Commits over 31 Days - 0.01cph!

11 Days Ago
Fix regression with usemutexpool 1 leaking memory
11 Days Ago
merge from main
18 Days Ago
Clean: remove editor-only add/remove fail counters - also cache cell buffer length - jit might already do it automatically, so might be moot Tests: compiles
18 Days Ago
Merge: from lprq Prepping LPRQ segment implementation to use instead of current FuzzyPool Tests: ran unit tests
18 Days Ago
Optim: inline segment storage and strip all ConcurrentQueue logic My previous estimate of 10% degradation was off - it actually was 6ms vs 3.5ms. With these changes I consistently get 4ms for AllocDeallocMTShortLived(32,False) perf test - 15% loss, still acceptable Tests: unit tests + AllocDeallocMTShortLived(32,False) perf test
18 Days Ago
Update(tests): port unit test fix from child branch Tests: ran PoolTests batch of unit tests
18 Days Ago
Merge: from main Random Editor crash seems to be gone on latest
18 Days Ago
Optim: use an over capacity segment to avoid segment churn This keeps GC activity at 0. Perf seems 10% worse than Fuzzy, but it's acceptable. Though there's a bug somewhere. Tests: AllocDeallocMTShortLived(32,False) perf test
19 Days Ago
Update: reimpleemnt whole of CoreCLR's ConcurrentQueue (same as in shipped mscorlib) - added extra telemetry to track segment alloc/retire, general tries, gc activity This time didn't rip out the segment growing logic, and looks like if it safely fits in one segment, it can be consistently used. Going to confirm if extra large segment is enough, then it'll be a viable candidate Tests: ran unit tests and AllocDeallocMTShortLived(32,False) perf test
20 Days Ago
Update: try using CoreCLR's ConcurrentQueueSegment as a Pool implementation Leaks a bit in busy MT perf tests, but breaks down at 32 threads (can leak up to 50% of the buffer). Not good enough on it's own Tests: ran perf and unit tests