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

umap() does not appear to be handling residual pages for regions that are not block-aligned #29

Closed
mcfadden8 opened this issue Jun 6, 2018 · 3 comments
Assignees

Comments

@mcfadden8
Copy link
Collaborator

umap() divides a given region into fixed sized blocks of size pages_per_block=min(pages_in_region, UMAP_PAGES_PER_BLOCK).

If the number of pages in the region are not aligned to the pages_per_block boundary, there will be a residual set of pages that need to be added to the last block of the region and managed by the last worker thread.

While running umapsort() and examining the statistics, it was noticed that when running with a range of size 2049 pages, only 2048 pages were being properly handled:

$ umapsort --initonly -p 2049 -b 10000000 -f /mnt/intel/test --directio -t 1
2049 pages, 8392704 bytes, 1 threads
initdata: 0x7f6a093d0000, 1049088
Init took 73.089566 us
2048 Faults
0 READ Faults
2048 WRITE Faults
0 WP Messages
2048 Dirty Evictions
0 Clean Evictions
0 SIGBUS Errors
0 Stuck WP Workarounds
0 Dropped Duplicates
@mcfadden8 mcfadden8 self-assigned this Jun 6, 2018
@mcfadden8
Copy link
Collaborator Author

mcfadden8 commented Jun 6, 2018

This was indeed a bug and a fix is currently being tested.

We had noticed another flavor of this bug and an (insufficient) fix was made (see umap code change). The other bug had to do with how the blocks were divided up to the different num_workers worker threads. The fix for this took into account a residual number of blocks that it needed to assign to the last worker thread.

@mcfadden8
Copy link
Collaborator Author

Fixed by #30

1 similar comment
@mcfadden8
Copy link
Collaborator Author

Fixed by #30

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