Messages in this thread | | | Subject | Re: differences between MADV_FREE and MADV_DONTNEED | From | Nicholas Miell <> | Date | Mon, 16 Jan 2006 17:04:07 -0800 |
| |
On Mon, 2006-01-16 at 16:24 -0800, Suleiman Souhlal wrote: > Eric W. Biederman wrote: > > As I recall the logic with DONTNEED was to mark the mapping of > > the page clean so the page didn't need to be swapped out, it could > > just be dropped. > > > > That is why they anonymous and the file backed cases differ. > > > > Part of the point is to avoid the case of swapping the pages out if > > the application doesn't care what is on them anymore. > > Well, imho, MADV_DONTNEED should mean "I won't need this anytime soon", > and MADV_FREE "I will never need this again". >
POSIX doesn't have a madvise(), but it does have a posix_madvise(), with flags defined as follows:
POSIX_MADV_NORMAL Specifies that the application has no advice to give on its behavior with respect to the specified range. It is the default characteristic if no advice is given for a range of memory. POSIX_MADV_SEQUENTIAL Specifies that the application expects to access the specified range sequentially from lower addresses to higher addresses. POSIX_MADV_RANDOM Specifies that the application expects to access the specified range in a random order. POSIX_MADV_WILLNEED Specifies that the application expects to access the specified range in the near future. POSIX_MADV_DONTNEED Specifies that the application expects that it will not access the specified range in the near future.
Note that glibc forwards posix_madvise() directly to madvise(2), which means that right now, POSIX conformant apps which use posix_madvise(addr, len, POSIX_MADV_DONTNEED) are silently corrupting data on Linux systems.
-- Nicholas Miell <nmiell@comcast.net>
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |