Re: Swap

From: Dan Maas (dmaas@dcine.com)
Date: Tue Nov 20 2001 - 17:34:28 EST


> 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...)

Regards,
Dan

-
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/



This archive was generated by hypermail 2b29 : Fri Nov 23 2001 - 21:00:25 EST