On Fri, 8 May 2015 16:06:10 -0400 Eric B Munson <emunson@xxxxxxxxxx> wrote: > On Fri, 08 May 2015, Andrew Morton wrote: > > > On Fri, 8 May 2015 15:33:43 -0400 Eric B Munson <emunson@xxxxxxxxxx> wrote: > > > > > mlock() allows a user to control page out of program memory, but this > > > comes at the cost of faulting in the entire mapping when it is > > > allocated. For large mappings where the entire area is not necessary > > > this is not ideal. > > > > > > This series introduces new flags for mmap() and mlockall() that allow a > > > user to specify that the covered are should not be paged out, but only > > > after the memory has been used the first time. > > > > Please tell us much much more about the value of these changes: the use > > cases, the behavioural improvements and performance results which the > > patchset brings to those use cases, etc. > > > > The primary use case is for mmaping large files read only. The process > knows that some of the data is necessary, but it is unlikely that the > entire file will be needed. The developer only wants to pay the cost to > read the data in once. Unfortunately developer must choose between > allowing the kernel to page in the memory as needed and guaranteeing > that the data will only be read from disk once. The first option runs > the risk of having the memory reclaimed if the system is under memory > pressure, the second forces the memory usage and startup delay when > faulting in the entire file. Why can't the application mmap only those parts of the file which it wants and mlock those? > I am working on getting startup times with and without this change for > an application, I will post them as soon as I have them.