Re: [PATCH] make MADV_FREE lazily free memory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Eric Dumazet wrote:
Rik van Riel a écrit :

Eric Dumazet wrote:

Rik van Riel a écrit :

Make it possible for applications to have the kernel free memory
lazily.  This reduces a repeated free/malloc cycle from freeing
pages and allocating them, to just marking them freeable.  If the
application wants to reuse them before the kernel needs the memory,
not even a page fault will happen.


I dont understand this last sentence. If not even a page fault happens, how the kernel knows that the page was eventually reused by the application, and should not be freed in case of memory pressure ?


Before maybe freeing the page, the kernel checks the referenced
and dirty bits of the page table entries mapping that page.

ptr = mmap(some space);
madvise(ptr, length, MADV_FREE);
/* kernel may free the pages */


All this call does is:
- clear the accessed and dirty bits
- move the page to the far end of the inactive list,
  where it will be the first to be reclaimed

sleep(10);

/* what the application must do know before reusing space ? */
memset(ptr, data, 10000);
/* kernel should not free ptr[0..10000] now */


Two things can happen here.

If this program used the pages before the kernel needed
them, the program will be reusing its old pages.


ah ok, this is because accessed/dirty bits are set by hardware and not a page fault.

No it isn't.

Is it true for all architectures ?

No.

--
SUSE Labs, Novell Inc.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux