Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Apr 2014 15:27:59 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Dmitry Sivachenko <trtrmitya@gmail.com>
Cc:        freebsd-hackers@freebsd.org, Ian Lepore <ian@freebsd.org>, Trond =?iso-8859-1?q?Endrest=F8l?= <Trond.Endrestol@fagskolen.gjovik.no>
Subject:   Re: madvise() vs posix_fadvise()
Message-ID:  <201404031527.59901.jhb@freebsd.org>
In-Reply-To: <2CB392D0-5198-41EB-8191-8B02FE432334@gmail.com>
References:  <D6BD48AF-9522-495D-8D54-37854E53C272@gmail.com> <201404031230.40380.jhb@freebsd.org> <2CB392D0-5198-41EB-8191-8B02FE432334@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, April 03, 2014 3:10:49 pm Dmitry Sivachenko wrote:
>=20
> On 03 =C1=D0=D2. 2014 =C7., at 20:30, John Baldwin <jhb@FreeBSD.org> wrot=
e:
>=20
> >=20
> > The latter.  It's sort of like a lazy O_DIRECT.  Each time you call wri=
te(2),
> > it tries to move any clean pages from your current sequentially written
> > stream from inactive to cache, so the pages won't move until a subseque=
nt
> > write(2) after bufdaemon or the syncer actually forces them to be writt=
en.
> > Unfortunately, it is currently implemented by doing an internal
> > FADV_DONTNEED after each read() or write().  It would be better if it w=
as
> > implemented as a callback when buffers are completed.
>=20
>=20
>=20
> Sounds like FADV_NOREUSE should be befeficial for any log-writing program?
> (syslogd, apache, nginx, .....)

Well, it depends.  If you plan on reading the log files, then using NOREUSE
can potentially make that more expensive as the logs are more likely to be
out of RAM when you go to read them (even if you have free memory, mostly
because "cache" isn't perfect, at least in my experience).  OTOH, pagedaemon
(a part of the VM system) should generally pick the log pages to evict when
needed (and I believe it might do a better job of that in 10 than it did
previously).  I think if you know that the log files are kicking more useful
things out of RAM and you don't generally plan on reading them (note that
things like compressing them with gzip counts as reading), then FADV_NOREUSE
can work fine.

=2D-=20
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404031527.59901.jhb>