[lkml]   [2001]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Swap
> Uhhhh, read his original mail.  When using mmap() he had
> problems with the VM doing bad page replacement, while
> read() was smooth.

I should add that I did experiment with madvise(MADV_SEQUENTIAL) on the
mapping, and with madvise(MADV_WILLNEED) on pages about to be needed. These
had no effect. What *did* help with underruns was pre-touching each page in
a large block (120KB), before sending that block to the output device. At
that point I thought the mmap() code was getting to be more complicated that
it was worth so I just dropped back to read()...

The other day I recorded and played a seven-minute animation (1.6GB) on my
512MB machine, with only 240KB of buffering. Much to my surprise and
delight, there were no underruns, and the large sequential passes through
the file hadn't pushed anything else out of RAM.

BTW, all of the above pertains to one large mapping of the entire file to be
played. I didn't try mmap()/munmap() on a sliding window... I seem to
remember an MP3 player doing that. (I just tried looking at XMMS and
Freeamp - I *think* they are using read(), but strace seems to do bad things
with threaded programs, argh...)


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:13    [W:0.077 / U:0.316 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site