tech-userlevel archive

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

Re: Kernel VS application file caching



On Thursday 21 January 2010 14:52:04 Steven Bellovin wrote:
> On Jan 21, 2010, at 9:25 AM, Sad Clouds wrote:
> > As far as I know Unix kernels will transparently cache files into any
> > available memory to speed up future I/O on those files.
> >
> > For applications like Internet servers, which serve many static files
> > from disk, is there any point in implementing file caching at application
> > level? It seems like you would end up with 2 copies of the same data -
> > one copy cached by kernel, another copy cached by application.
> 
> To avoid kernel-to-userland copies?
> 
> What is your real performance limit?  CPU?  RAM?  I/O bandwidth?  Network
>  bandwidth?

Well the idea is to keep frequently accessed data in RAM. If you have a 
machine with 1 Gig of RAM, you can load up a lot of small files. But if 
someone occasionally decides to download say a 2 Gig .iso file, the data 
cached just from that one file can evict all other files from RAM.

Ideally there would be a way to tell kernel the maximum amount of data to load 
into system cache when opening a file. I've looked at madvise(), but it seems 
to only provide hints to the system after you mmap() a file. It would be 
useful to set hard limits before loading a file, to avoid cache "pollution".


Home | Main Index | Thread Index | Old Index