Class DataRecycler¶
-
template<typename
CACHED_ITEM_TYPE, typenameMETA_INFO_TYPE>
classDataRecycler¶ Public Types
-
template<>
usingCachedItemContainer= std::vector<CachedItem<CACHED_ITEM_TYPE, META_INFO_TYPE>>¶
-
template<>
usingPerDeviceCacheItemContainer= std::unordered_map<DeviceIdentifier, std::shared_ptr<CachedItemContainer>>¶
-
template<>
usingPerTypeCacheItemContainer= std::unordered_map<CacheItemType, std::shared_ptr<PerDeviceCacheItemContainer>>¶
-
template<>
usingPerTypeCacheMetricTracker= std::unordered_map<CacheItemType, CacheMetricTracker>¶
Public Functions
-
DataRecycler(const std::vector<CacheItemType> &item_types, size_t total_cache_size, size_t max_item_size, int num_gpus)¶
-
virtual
~DataRecycler()¶
-
virtual CACHED_ITEM_TYPE
getItemFromCache(QueryPlanHash key, CacheItemType item_type, DeviceIdentifier device_identifier, std::optional<META_INFO_TYPE> meta_info = std::nullopt) = 0¶
-
virtual void
putItemToCache(QueryPlanHash key, CACHED_ITEM_TYPE item_ptr, CacheItemType item_type, DeviceIdentifier device_identifier, size_t item_size, size_t compute_time, std::optional<META_INFO_TYPE> meta_info = std::nullopt) = 0¶
-
virtual void
initCache() = 0¶
-
virtual void
clearCache() = 0¶
-
virtual void
markCachedItemAsDirty(size_t table_key, std::unordered_set<QueryPlanHash> &key_set, CacheItemType item_type, DeviceIdentifier device_identifier) = 0¶
-
void
markCachedItemAsDirtyImpl(QueryPlanHash key, CachedItemContainer &m) const¶
-
bool
isCachedItemDirty(QueryPlanHash key, CachedItemContainer &m) const¶
-
virtual std::string
toString() const = 0¶
-
std::shared_ptr<CachedItemContainer>
getCachedItemContainer(CacheItemType item_type, DeviceIdentifier device_identifier) const¶
-
std::optional<CachedItem<CACHED_ITEM_TYPE, META_INFO_TYPE>>
getCachedItemWithoutConsideringMetaInfo(QueryPlanHash key, CacheItemType item_type, DeviceIdentifier device_identifier, CachedItemContainer &m, std::lock_guard<std::mutex> &lock)¶
-
size_t
getCurrentNumCachedItems(CacheItemType item_type, DeviceIdentifier device_identifier) const¶
-
size_t
getCurrentNumDirtyCachedItems(CacheItemType item_type, DeviceIdentifier device_identifier) const¶
-
size_t
getCurrentNumCleanCachedItems(CacheItemType item_type, DeviceIdentifier device_identifier) const¶
-
size_t
getCurrentCacheSizeForDevice(CacheItemType item_type, DeviceIdentifier device_identifier) const¶
-
std::shared_ptr<CacheItemMetric>
getCachedItemMetric(CacheItemType item_type, DeviceIdentifier device_identifier, QueryPlanHash key) const¶
-
void
setTotalCacheSize(CacheItemType item_type, size_t new_total_cache_size)¶
-
void
setMaxCacheItemSize(CacheItemType item_type, size_t new_max_cache_item_size)¶
Protected Functions
-
void
removeCachedItemFromBeginning(CacheItemType item_type, DeviceIdentifier device_identifier, int offset)¶
-
void
sortCacheContainerByQueryMetric(CacheItemType item_type, DeviceIdentifier device_identifier)¶
-
std::mutex &
getCacheLock() const¶
-
CacheMetricTracker &
getMetricTracker(CacheItemType item_type)¶
-
CacheMetricTracker const &
getMetricTracker(CacheItemType item_type) const¶
-
std::unordered_set<CacheItemType> const &
getCacheItemType() const¶
-
PerTypeCacheItemContainer const &
getItemCache() const¶
Private Functions
-
virtual bool
hasItemInCache(QueryPlanHash key, CacheItemType item_type, DeviceIdentifier device_identifier, std::lock_guard<std::mutex> &lock, std::optional<META_INFO_TYPE> meta_info = std::nullopt) const = 0¶
-
virtual void
removeItemFromCache(QueryPlanHash key, CacheItemType item_type, DeviceIdentifier device_identifier, std::lock_guard<std::mutex> &lock, std::optional<META_INFO_TYPE> meta_info = std::nullopt) = 0¶
-
virtual void
cleanupCacheForInsertion(CacheItemType item_type, DeviceIdentifier device_identifier, size_t required_size, std::lock_guard<std::mutex> &lock, std::optional<META_INFO_TYPE> meta_info = std::nullopt) = 0¶
-
template<>