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/