On Tue, Aug 06, 2013 at 05:18:44PM -0700, Davidlohr Bueso wrote: > On Mon, 2013-08-05 at 16:36 +0900, Joonsoo Kim wrote: > > > Any mapping that doesn't use the reserved pool, not just > > > MAP_NORESERVE. For example, if a process makes a MAP_PRIVATE mapping, > > > then fork()s then the mapping is instantiated in the child, that will > > > not draw from the reserved pool. > > > > > > > Should we ensure them to allocate the last hugepage? > > > > They map a region with MAP_NORESERVE, so don't assume that their requests > > > > always succeed. > > > > > > If the pages are available, people get cranky if it fails for no > > > apparent reason, MAP_NORESERVE or not. They get especially cranky if > > > it sometimes fails and sometimes doesn't due to a race condition. > > > > Hello, > > > > Hmm... Okay. I will try to implement another way to protect race condition. > > Maybe it is the best to use a table mutex :) > > Anyway, please give me a time, guys. > > So another option is to take the mutex table patchset for now as it > *does* improve things a great deal, then, when ready, get rid of the > instantiation lock all together. We still don't have a solid proposal for doing that. Joonsoo Kim's patchset misses cases (non reserved mappings). I'm also not certain there aren't a few edge cases which can lead to even reserved mappings failing, and if that happens the patches will lead to livelock. Getting rid of the instantiation mutex is a lot harder than it appears. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
pgpkRWgYi4_Th.pgp
Description: PGP signature