I tested posting the block back to the originating strand for destruction, but this shows little or no benefit. That makes sense if the problem is in fact contention for deallocation. Also it tried performing the same posts but with a null block pointer (no performance issue). So it only occurs with block destruct on a non-originating thread. There is really no way to post back to a specific thread, and that would produce its own set of significant performance issues. So the possible resolutions consist of (1) not doing it and (2) using a custom allocator/deallocator. #1 is possible by just avoiding the optimization and simply re-reading blocks from the store as before. This performs well on the high memory machine, but not otherwise. So I’m taking a look at #2.