On 1/13/20 1:03 PM, Mina Almasry wrote:
On Mon, Jan 13, 2020 at 10:44 AM Mike Kravetz mike.kravetz@oracle.com wrote:
On 12/17/19 3:16 PM, Mina Almasry wrote:
- While usage_in_bytes tracks all *faulted* hugetlb memory,
reservation_usage_in_bytes tracks all *reserved* hugetlb memory and hugetlb memory faulted in without a prior reservation.
To me, this implies that 'faults without reservations' could cause reservation usage to exceed reservation limit? Or, does the faulting process get a SIGBUS because of the reservation limit even though it is not using reservations?
We shall see in subsequent patches.
The design we went with based on previous discussions is as follows: hugetlb pages faulted without a prior reservation get accounted at fault time, rather than reservation time, and if the fault causes the counter to cross the limit, the charge fails, hence the fault fails, hence the process gets sigbus'd.
Ok, sorry I did not recall the design discussion.
This means that one counter I'm adding here can cover both use cases: if the userspace uses MAP_NORESERVE, then their memory is accounted at fault time and they may get sigbus'd.
Let's make sure this is clearly documented. Someone could be surprised if their application not using reserves gets a SIGBUS because there is a reserve limit.