linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Willy Tarreau <willy@w.ods.org>
To: Anthony DiSante <orders@nodivisions.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Audio skips when RAM is ~full
Date: Sat, 1 Nov 2003 08:19:07 +0100	[thread overview]
Message-ID: <20031101071907.GA6300@alpha.home.local> (raw)
In-Reply-To: <3FA353E4.60906@nodivisions.com>

On Sat, Nov 01, 2003 at 01:34:12AM -0500, Anthony DiSante wrote:
> >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.)

It's different because you need to reserve a fixed amount of ram for the
ramdisk while I was only using the caching features of the kernel as a
fast read-ahead mechanism. But I agree with you that the result should be
the same.

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

OK, so it's not a disk IO problem at all. It's really related to the sound
driver it seems. Now that you say it, I remember having noticed skips on
my laptop with a via 82cxxx chip after tens of minutes playing. At first
I thought it was related to other activity on the system, but it did exactly
what you describe, play seconds 1, 2, then 5 without a hole between them.
There may be a problem with the way the audio buffer gets allocated or freed.

> So I'm guessing that there isn't actually a way to manually move 
> buffer-data out of RAM?

Yes, there is. I have a quick'n'dirty program which does exactly that.
Basically, you tell it how many kB you want to free, then it allocates
and uses that amount of memory, frees it and exits. Buffered data gets
flushed very quickly. I sometimes give it a try before starting to work
on large kernel trees, because it helps the entire directories to fit in
cache.

Here it is if you're interested. Don't start it without an argument, it
will try to allocate 4G !

Regards,
Willy

---
#include <stdio.h>

main(int argc, char **argv) {
  unsigned long int i,k=0, max;
  char *p;

  if (argc>1)
      max=atol(argv[1]);
  else
      max=0xffffffff;

  printf("Freeing %lu kB ram\n",max);
  while (((p=(char *)malloc(1048576))!=NULL) && (k+1024<=max)) {
    for (i=0;i<256;p[4096*i++]=0);
    k+=1024;
    fprintf(stderr,"\r%d kB allocated",k);
  }
  while (((p=(char *)malloc(65536))!=NULL) && (k+64<=max)) {
    for (i=0;i<16;p[4096*i++]=0);
    k+=64;
    fprintf(stderr,"\r%d kB allocated",k);
  }
  while (((p=(char *)malloc(1024))!=NULL) && (k+1<=max)) {
    for (i=0;i<16;p[64*i++]=0);
    k+=1;
    fprintf(stderr,"\r%d kB allocated",k);
  }
  fprintf(stderr,"\nMemory freed.\n");
  exit(0);
}


  reply	other threads:[~2003-11-01  7:19 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-01  5:31 Audio skips when RAM is ~full Anthony DiSante
2003-11-01  6:20 ` Willy Tarreau
2003-11-01  6:34   ` Anthony DiSante
2003-11-01  7:19     ` Willy Tarreau [this message]
2003-11-01 12:48       ` Anthony DiSante
2003-11-01 14:57         ` Jaroslav Kysela
2003-11-01  9:43     ` Maciej Zenczykowski
2003-11-01 18:08 ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031101071907.GA6300@alpha.home.local \
    --to=willy@w.ods.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=orders@nodivisions.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).