llnl / llnl/umap

Userfaultfd returns ENOMEM with > 900 active regision

Open
#91 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
115
Forks
29
PR merge metrics
No merged PRs in 30d

Description

We are seeing the following error when attempting to register more than 900 regions with userfaultfd:

```
Tue Aug 27 13:57:55 PDT 2019
./db_bench --benchmarks=fillseq --num=40000000 --threads=24
LevelDB: version 1.22
Date: Tue Aug 27 13:57:55 2019
CPU: 96 * AMD EPYC 7401 24-Core Processor
CPUCache: 512 KB
Values: 100 bytes each (50 bytes after compression)
Entries: 40000000
RawSize: 4425.0 MB (estimated)
FileSize: 2517.7 MB (estimated)
WARNING: Snappy compression is not enabled
------------------------------------------------
100869:100900 [ERROR][/home/martymcf/.sessions/altus/src/umap/src/umap/Uffd.cpp:266]: register_region ioctl(UFFDIO_REGISTER) failed: Cannot allocate memoryNumber of regions is: 950
terminate called after throwing an instance of 'Umap::Exception'
what(): ! UMAP Exception [/home/martymcf/.sessions/altus/src/umap/src/umap/Uffd.cpp:266]: register_region ioctl(UFFDIO_REGISTER) failed: Cannot allocate memoryNumber of regions is: 950
/home/martymcf/run_db_bench.sh: line 39: 100869 Aborted (core dumped) ./db_bench --benchmarks=fillseq --num=$blocks --threads=$threads
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the failure with the provided db_bench command and inspect umap/Uffd.cpp around line 266, where UFFDIO_REGISTER reports ENOMEM. Trace how register_region handles multiple regions and determine the expected behavior when registration exceeds the observed limit. Done means the cause is understood and the issue has a verified resolution or clearly documented constraint.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.