Skip to content

Issue75 rebased - #88

Merged
byrnedj merged 9 commits into
pmem:developfrom
igchor:issue75_rebased
Jul 5, 2022
Merged

Issue75 rebased#88
byrnedj merged 9 commits into
pmem:developfrom
igchor:issue75_rebased

Conversation

@igchor

@igchorigchor commented Jun 27, 2022

Copy link
Copy Markdown

This change is Reviewable

@byrnedj

Copy link
Copy Markdown
Collaborator

I was able to test and run different tier ratios, the code changes look good.

@igchor

Copy link
Copy Markdown
Author

@byrnedj could you please look one more time? I fixed one failing test (took a little bit different approach to calculating ratios: reverted to how Victoria did it on her PR), just rebased to upstream patch

@igchorigchor mentioned this pull request Jun 29, 2022
victoria-mcgrathand others added 9 commits June 30, 2022 14:07
…ed by header size) when creating new memory pools
…caches (facebook#138)
Summary:
These changes introduce per-tier cache configuration required to implement features discussed here: facebook#102. These specific changes enable single DRAM tier configs only which are compatible with the current version of cachelib. Configuration API will be expanded as multi-tier changes in other parts of the library are introduced.
Pull Request resolved: facebook#138
Reviewed By: therealgymmy
Differential Revision: D36189766
Pulled By: jiayuebao
fbshipit-source-id: 947aa0cd800ea6accffc1b7b6b0c9693aa7fc0a5
@byrnedj
byrnedj merged commit 3c34254 into pmem:developJul 5, 2022
guptask pushed a commit to guptask/CacheLib that referenced this pull request Aug 11, 2022
* pmem#75: Use actual tier sizes (rounded down to slab size and decreased by header size) when creating new memory pools
* Added getPoolSize method to calculate combined pool size for all tiers; added pool size validation to tests
* Explicitly specified type for totalCacheSize to avoid overflow
* Minor test change
* Reworked tests
* Minor change
* Deleted redundant tests
* Deleted unused constant
* First set of changes to cache configuration API to enable multi-tier caches (facebook#138)
Summary:
These changes introduce per-tier cache configuration required to implement features discussed here: facebook#102. These specific changes enable single DRAM tier configs only which are compatible with the current version of cachelib. Configuration API will be expanded as multi-tier changes in other parts of the library are introduced.
Pull Request resolved: facebook#138
Reviewed By: therealgymmy
Differential Revision: D36189766
Pulled By: jiayuebao
fbshipit-source-id: 947aa0cd800ea6accffc1b7b6b0c9693aa7fc0a5
Co-authored-by: Victoria McGrath <victoria.mcgrath@intel.com>
vinser52 pushed a commit that referenced this pull request Sep 13, 2022
* #75: Use actual tier sizes (rounded down to slab size and decreased by header size) when creating new memory pools
* Added getPoolSize method to calculate combined pool size for all tiers; added pool size validation to tests
* Explicitly specified type for totalCacheSize to avoid overflow
* Minor test change
* Reworked tests
* Minor change
* Deleted redundant tests
* Deleted unused constant
* First set of changes to cache configuration API to enable multi-tier caches (facebook#138)
Summary:
These changes introduce per-tier cache configuration required to implement features discussed here: facebook#102. These specific changes enable single DRAM tier configs only which are compatible with the current version of cachelib. Configuration API will be expanded as multi-tier changes in other parts of the library are introduced.
Pull Request resolved: facebook#138
Reviewed By: therealgymmy
Differential Revision: D36189766
Pulled By: jiayuebao
fbshipit-source-id: 947aa0cd800ea6accffc1b7b6b0c9693aa7fc0a5
Co-authored-by: Victoria McGrath <victoria.mcgrath@intel.com>
byrnedj pushed a commit to byrnedj/CacheLib that referenced this pull request Nov 12, 2022
* pmem#75: Use actual tier sizes (rounded down to slab size and decreased by header size) when creating new memory pools
* Added getPoolSize method to calculate combined pool size for all tiers; added pool size validation to tests
* Explicitly specified type for totalCacheSize to avoid overflow
* Minor test change
* Reworked tests
* Minor change
* Deleted redundant tests
* Deleted unused constant
* First set of changes to cache configuration API to enable multi-tier caches (facebook#138)
Summary:
These changes introduce per-tier cache configuration required to implement features discussed here: facebook#102. These specific changes enable single DRAM tier configs only which are compatible with the current version of cachelib. Configuration API will be expanded as multi-tier changes in other parts of the library are introduced.
Pull Request resolved: facebook#138
Reviewed By: therealgymmy
Differential Revision: D36189766
Pulled By: jiayuebao
fbshipit-source-id: 947aa0cd800ea6accffc1b7b6b0c9693aa7fc0a5
Co-authored-by: Victoria McGrath <victoria.mcgrath@intel.com>
byrnedj pushed a commit to byrnedj/CacheLib that referenced this pull request Dec 15, 2022
author Chorazewicz, Igor <igor.chorazewicz@intel.com> 1632834667 +0200
committer Daniel Byrne <byrnedj12@gmail.com> 1671070203 -0800
Initial multi-tier support implementation
Extend CompressedPtr to work with multiple tiers
Now it's size is 8 bytes intead of 4.
Original CompressedPtr stored only some offset with a memory Allocator.
For multi-tier implementation, this is not enough. We must also store
tierId and when uncompressing, select a proper allocator.
An alternative could be to just resign from CompressedPtr but they
are leveraged to allow the cache to be mapped to different addresses on shared memory.
Changing CompressedPtr impacted CacheItem size - it increased from 32 to 44 bytes.
Implemented async Item movement between tiers (with corrected
behaivour of tryEvictToNextMemoryTier).
Fix ReaperSkippingSlabTraversalWhileSlabReleasing test
The issue was caused by incorrect behaviour of the
CacheAllocator<CacheTrait>::tryEvictToNextMemoryTier method in case the
evicted item is expired. We cannot simply return a handle to it, but we need
to remove it from the access container and MM container.
Enable workarounds in tests
Add basic multi-tier test
Set correct size for each memory tier
Do not compensate for rounding error when calculating tier sizes (pmem#43)
Compensation results in ratios being different than originially specified.
Fixed total cache size in CacheMemoryStats (pmem#38)
Return a sum of sizes of each tier instead of just 1st tier's size.
Issue75 rebased (pmem#88)
* pmem#75: Use actual tier sizes (rounded down to slab size and decreased by header size) when creating new memory pools
* Added getPoolSize method to calculate combined pool size for all tiers; added pool size validation to tests
* Explicitly specified type for totalCacheSize to avoid overflow
* Minor test change
* Reworked tests
* Minor change
* Deleted redundant tests
* Deleted unused constant
* First set of changes to cache configuration API to enable multi-tier caches (facebook#138)
Summary:
These changes introduce per-tier cache configuration required to implement features discussed here: facebook#102. These specific changes enable single DRAM tier configs only which are compatible with the current version of cachelib. Configuration API will be expanded as multi-tier changes in other parts of the library are introduced.
Pull Request resolved: facebook#138
Reviewed By: therealgymmy
Differential Revision: D36189766
Pulled By: jiayuebao
fbshipit-source-id: 947aa0cd800ea6accffc1b7b6b0c9693aa7fc0a5
Co-authored-by: Victoria McGrath <victoria.mcgrath@intel.com>
Fix eviction flow and removeCb calls
Without this fix removeCb called even in case when Item is moved between
tiers.
Fix issue with "Destorying an unresolved handle"
The issue happened when ReadHandleImpl ctor needs to destroy
waitContext_ because addWaitContextForMovingItem() returns false.
So before destroying waitContext_ we are calling discard method to
notify ~ItemWaitContext() that Item is ready.
Fix slab release code
Get tier id of item before calling any function on allocator
(which needs the tierID).
byrnedj pushed a commit to byrnedj/CacheLib that referenced this pull request Dec 22, 2022
* New class MemoryTierCacheConfig allows to configure a memory tier.
Setting tier size and location of a file for file-backed memory are
supported in this initial implementation;
* New member, vector of memory tiers, is added to class CacheAllocatorConfig.
* New test suite, chelib/allocator/tests/MemoryTiersTest.cpp,
demonstrates the usage of and tests extended config API.
Integrate Memory Tier config API with CacheAllocator.
Enabled memory tier config API for cachebench.
Assumes NUMA bindings support - this commit was done before
tiering support enabled.
fix memBind call
replaces Add MemoryTierCacheConfig::fromShm()
(commit 1c7c15d)
Move validation code for memory tiers to validate() method and convert
ratios to sizes lazily
Do not compensate for rounding error when calculating tier sizes (pmem#43)
Compensation results in ratios being different than originially specified.
Fixed total cache size in CacheMemoryStats (pmem#38)
Return a sum of sizes of each tier instead of just 1st tier's size.
Issue75 rebased (pmem#88)
* pmem#75: Use actual tier sizes (rounded down to slab size and decreased by header size) when creating new memory pools
* Added getPoolSize method to calculate combined pool size for all tiers; added pool size validation to tests
* Explicitly specified type for totalCacheSize to avoid overflow
* Minor test change
* Reworked tests
* Minor change
* Deleted redundant tests
* Deleted unused constant
* First set of changes to cache configuration API to enable multi-tier caches (facebook#138)
Summary:
These changes introduce per-tier cache configuration required to implement features discussed here: facebook#102. These specific changes enable single DRAM tier configs only which are compatible with the current version of cachelib. Configuration API will be expanded as multi-tier changes in other parts of the library are introduced.
Pull Request resolved: facebook#138
Reviewed By: therealgymmy
Differential Revision: D36189766
Pulled By: jiayuebao
fbshipit-source-id: 947aa0cd800ea6accffc1b7b6b0c9693aa7fc0a5
Co-authored-by: Victoria McGrath <victoria.mcgrath@intel.com>
byrnedj pushed a commit to byrnedj/CacheLib that referenced this pull request Jan 3, 2023
* New class MemoryTierCacheConfig allows to configure a memory tier.
Setting tier size and location of a file for file-backed memory are
supported in this initial implementation;
* New member, vector of memory tiers, is added to class CacheAllocatorConfig.
* New test suite, chelib/allocator/tests/MemoryTiersTest.cpp,
demonstrates the usage of and tests extended config API.
Integrate Memory Tier config API with CacheAllocator.
Enabled memory tier config API for cachebench.
Assumes NUMA bindings support - this commit was done before
tiering support enabled.
fix memBind call
replaces Add MemoryTierCacheConfig::fromShm()
(commit 1c7c15d)
Move validation code for memory tiers to validate() method and convert
ratios to sizes lazily
Do not compensate for rounding error when calculating tier sizes (pmem#43)
Compensation results in ratios being different than originially specified.
Fixed total cache size in CacheMemoryStats (pmem#38)
Return a sum of sizes of each tier instead of just 1st tier's size.
Issue75 rebased (pmem#88)
* pmem#75: Use actual tier sizes (rounded down to slab size and decreased by header size) when creating new memory pools
* Added getPoolSize method to calculate combined pool size for all tiers; added pool size validation to tests
* Explicitly specified type for totalCacheSize to avoid overflow
* Minor test change
* Reworked tests
* Minor change
* Deleted redundant tests
* Deleted unused constant
* First set of changes to cache configuration API to enable multi-tier caches (facebook#138)
Summary:
These changes introduce per-tier cache configuration required to implement features discussed here: facebook#102. These specific changes enable single DRAM tier configs only which are compatible with the current version of cachelib. Configuration API will be expanded as multi-tier changes in other parts of the library are introduced.
Pull Request resolved: facebook#138
Reviewed By: therealgymmy
Differential Revision: D36189766
Pulled By: jiayuebao
fbshipit-source-id: 947aa0cd800ea6accffc1b7b6b0c9693aa7fc0a5
Co-authored-by: Victoria McGrath <victoria.mcgrath@intel.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@igchor@byrnedj@victoria-mcgrath