Re: fadvise syscall?

Ken Hirsch
2002-03-17T20:20:54Z

Anton Altaparmakov writes:
> Last time I heard serious databases use their own memmory
> management/caching in combination with O_DIRECT, i.e. they bypass the
> kernel's buffering system completely. Hence I would deem them irrelevant
to
> the problem at hand...
>
> If a database were not to use O_DIRECT I would think it would be using
mmap
> so it would have madvise already... but I am not a database expert so take
> this with a pinch of salt...
>

I don't think that either MySQL or PostgreSQL use O_DIRECT; I just grepped
the source and didn't find it. They can't use mmap() because it uses up too
much process address space.

It's true that commercial databases mostly do their own scheduling and
caching, and if they are the only thing running on your system and you tune
them right, that works. But it's not necessarily a good thing. If there
are other processes on your system, there would be a benefit if the DBMS
could inform the operating system of its intentions.

A posix_fadvise() call would be a start, but you could potentially go beyond
that. For some interesting ideas, see
Seltzer, M., Small, C., Smith, K., "The Case for Extensible Operating
Systems",
Harvard University Center for Research in Computing Technology TR16 -95
(July 1995).
http://citeseer.nj.nec.com/article/seltzer95case.html

Ken Hirsch