Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failure-atomic Problems #8

Open
saltway opened this issue Feb 27, 2022 · 0 comments
Open

Failure-atomic Problems #8

saltway opened this issue Feb 27, 2022 · 0 comments

Comments

@saltway
Copy link

saltway commented Feb 27, 2022

Hi, Prof. Chen
Sorry to bother you with some trivial questions:

  1. With some experiments on Optane DC, we find that when invoking mmap() with a dax-enabled file, the first store on each page (4 KB) will always abort the RTM transaction. With strace and perf, we find that the store will incur one page-fault (sometimes two) and no system call. We guess it is the page-fault aborting the RTM transaction. This effect will not bother a newly allocated node (smaller than 4 KB) as something has already been updated (e,g, sibling pointer). However, when we perform a restart, all nodes on persistent memory can't be modified (the lock bit can's be set) due to the RTM abort (read is available after restart).
  2. We think maybe in your allocation/deallocation code on persistent memory, some persistent primitives are also needed.
  3. We find that you initial the NVM pool with zero (map a zero-ed file), however, we think the newly allocated node still needs to be initialized as the memory may be a recycled one (deallocations also do not clear that memory).
  4. Can you provide some references for adapting the persistent order to the store order inside one cache line on a platform without eADR (or maybe it's already guaranteed by the hardware)?
    I hope you can get me out of these confusions.
    Best wishes!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant