Re: Audio skips when RAM is ~full
From: Anthony DiSante
Date: Sat Nov 01 2003 - 01:36:20 EST
Willy Tarreau wrote:
Hello !
On Sat, Nov 01, 2003 at 12:31:15AM -0500, Anthony DiSante wrote:
The kernel is buffering the contents of each directory (album) that it
reads (and also, mpg321 copies each mp3 file into RAM before playing it?).
I understand that the idea is to stuff as much into RAM as possible to
reduce pagefile usage, and that the kernel will reclaim memory utilized by
buffers if/when it needs to. But apparently that isn't happening fast
enough to allow a realtime process like music-playing to work skip-free on
this system with this soundcard. I think that if I could regularly
forcibly dump the buffered stuff out of the RAM (dropping the used-RAM
percentage down to, say, 10%, like at boot time) then this would make the
skipping stop.
1) are you certain that none of your programs (including mpg321) leaks
memory ? As I understand it, it's really the cache which fills memory.
No, I'm not certain that mpg321 (or any other app, though there's
next-to-nothing else running) is leak-free.
2) you can try to preload your file into the cache just before playing it :
cp $file /dev/null ; mpg321 $file
But wouldn't "cp $file /tmp/ramdisk0; mpg321 /tmp/ramdisk0/$file" accomplish
the same thing? (I've done that.)
So... do I have a correct understanding of the problem, and a correct
analysis of the kernel/mem issues that are related to it? Is it possible
to clear some of the RAM; if so, would that help?
Unless a leak happens somewhere in the kernel, sound driver, etc..., memory
consumed by programs is restored when your programs exit. The only part which
is not restored immediately is the cache.
BTW, there may be one other reason for your problem. Considering that you
scan your disk to find random albums, I think that the system updates all
directories access time after 5s, thus preventing your player from reading
an uncached file fast enough. You might be interested in mounting it with
the 'noatime,nodiratime' options in /etc/fstab.
Actually, I don't scan the disk to find random albums; I have a text file
that contains a list of every album's full path, and I pick a random line
from that file. So only the selected album's directory gets scanned. And
the mp3 partition is mounted read-only (I should have mentioned that
before), so the atimes shouldn't be getting written as it is.
You might also want to try 2.4.23pre9 which includes VM changes compared to
2.4.22, and seems quite stable to me.
Maybe I will give that a try.
So I'm guessing that there isn't actually a way to manually move buffer-data
out of RAM?
-Anthony
http://nodivisions.com/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/