This class is intended to reduce contention on reserving a compression context and improve cache locality (but maybe not hotness) of the contexts it manages.
Declared in <folly/compression/CompressionCoreLocalContextPool.h>
template<
typename T,
typename Creator,
typename Deleter,
typename Resetter,
typename Sizeof,
typename Callback = CompressionContextPoolDefaultCallback>
class CompressionCoreLocalContextPool
: public CompressionCoreLocalContextPoolBase
This class uses folly::AccessSpreader to spread the managed object across NumStripes domains (which should correspond to a topologically close set of hardware threads). This cache is still backed by the basic locked stack in the folly::compression::CompressionContextPool.
Note that there is a tradeoff in choosing the number of stripes. More stripes make for less contention, but mean that a context is less likely to be hot in cache.
| Name | Description |
|---|---|
CompressionCoreLocalContextPoolBase | Non-templated base class which allows for generic interaction with context pool instances. |
| Name | Description |
|---|---|
Object | The pooled object type. |
Ref | Owning handle to a pooled object that returns it to the pool on destruction. |
| Name | Description |
|---|---|
CompressionCoreLocalContextPool [constructor] | Constructs a core-local pool with the given stripe count and functors. |
~CompressionCoreLocalContextPool [destructor] [virtual] | Destroys the pool, returning cached contexts to the backing pool. |
bytes_used | Returns the total bytes of memory used by cached and backing contexts. |
cacheSize | Returns the current number of stripes. |
created_count | Returns the number of contexts ever created by the backing pool. |
flush_deep | Releases cached contexts and the backing pool's contexts. |
flush_shallow | Returns all core-local cached contexts to the backing pool. |
get | Checks out a context, creating one via the backing pool if needed. |
getNull | Returns an empty handle bound to this pool. |
setSize | setSize overloads |
| Name | Description |
|---|---|
kMaxNumStripes | The max size is derived from maximum stripes for folly::AccessSpreader. |