Comments (1)
I added some additional instrumentation which gets us a little closer to when the pages are being updated. The umap library has been modified to check the consistency of the entire buffer of pages each time the thread returns from the userfaultfd poll() request. The consistency check looks at each page descriptor in the buffer and if the page is not marked as dirty
a SHA1 comparison is performed against the data that was originally read from the backing store.
The logfile below contains the results from running umapsort
in the following way:
$ time umapsort -p 100000 -b 1000 -f /mnt/intel/sortfile -t 128 -u 1 >& /tmp/logfile
This causes 128 application threads to perform a quicksort on the data that is in /mnt/intel/sortfile. One userfaultfd thread is present and the buffer is limited to just 1,000 pages.
As can be seen in the logfile, there were 7 pages in the buffer that got into an inconsistent state:
223973 0x7f7721c9e000 WARNING: Dirty page found that was not previously marked dirty!
223974 0x7f7721d01000 WARNING: Dirty page found that was not previously marked dirty!
223975 0x7f7721d03000 WARNING: Dirty page found that was not previously marked dirty!
223976 0x7f7721c91000 WARNING: Dirty page found that was not previously marked dirty!
223977 0x7f7721c8f000 WARNING: Dirty page found that was not previously marked dirty!
223978 0x7f7721c8d000 WARNING: Dirty page found that was not previously marked dirty!
223979 0x7f7721d16000 WARNING: Dirty page found that was not previously marked dirty!
The umap() library does not do anything about the inconsistency until one of the pages is actually EVICTED in order to make room for a new page becoming present as shown at the following lines of the end of the logfile:
226763 0x7f7721d16000 EVICT
226764 0x7f7721d16000 WARNING: Dirty page found that was not previously marked dirty!
226765 0x7f7721d16000 Dirty page found that was not previously marked dirty! Exiting
Looking at page 0x7f7721d16000
, you will see that it was brought in to the buffer at line number:
223623 0x7f7721d16000 NOT Present { 0 READ }
I believe that I am logging each message that I receive back from the poll() call to userfaultfd. Yet, I am not seeing any other messages for that particular page. It almost seems like the UFFCIO_COPY(UFFDIO_COPY_MODE_WP)
is not sticking and the page seems to be writeable?
from umap.
Related Issues (20)
- Add API to retrieve/reset umap stats HOT 1
- umap() does not appear to be handling residual pages for regions that are not block-aligned HOT 3
- Make umap() install from spack
- WP Workaround causes unnecessary SIGBUS errors HOT 3
- Implement test program that measures paging performance without I/O HOT 1
- Add API to flush umap buffer HOT 1
- Add macros to for umap stats collection
- Add regression test script for umap HOT 1
- Enable CI from bamboo HOT 1
- umap should support unaligned FITS data files HOT 1
- Investigate why link errors occur from cfitsio on maya6 CI node HOT 1
- Our-of-rang Error in Random Vector Median Calculation HOT 3
- Travis Build Status in README.md is pointing Umpire's result HOT 1
- Userfaultfd returns ENOMEM with > 900 active regision
- umap documetation has incorrect references to UMAP_PAGE_SIZE
- Freeze in page_already_present HOT 6
- Different page sizes for different regions HOT 6
- Logging: missing timestamp when timestamp logging is activated HOT 1
- madvise MADV_REMOVE with Umap
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from umap.