arecord, pdflush and bfr.


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users arecord, pdflush and bfr.
# 1  
Old 01-16-2012
Question arecord, pdflush and bfr.

Hi All

I'm using arecord to record directly to a USB key:

Code:
arecord -f cd > /mnt/usb/myfile.wav

But I see buffer overruns at 30 second intervals, which correspond with short bursts of USB write activity.

I'm assuming this is related to:

Code:
/proc/sys/vm/dirty_expire_centiseconds

And the > is actually writing to the page cache until the above expires.

When I tune this down I get a buffer overrun at what ever the dirty_expire_centiseconds is set to, so I think the pdflush is locking the cache while it writes to USB.

So I started looking for a non blocking pipe buffer and found "bfr" which I've inserted in between the record and the output file.
Code:
arecord -f cd | bfr -b5m > /mnt/usb/myfile.wav

This should from what I understand provide a 5 meg non blocking pipe buffer to decouple the read and write.

I still get overruns ! Smilie

After putting a load of trace in bfr.c and running in debug mode, I still see the write operation blocking, even though O_NONBLOCK is set. This stalls the read side of the pipe and arecord still overflows.

I've also tried running bfr forked, which should separate the read and write into 2 pids, and both processes appear to stall during the pdflush.

Can anyone tell me what pdflush blocks / locks out during a fs sync ?

Also if anyone can suggest a good way of buffering an arecord stream smoothly to USB key with pdflush firing I'd be much appreciative.

Tia.

Andy.

Last edited by radoulov; 01-16-2012 at 11:44 AM.. Reason: Code tags!
Login or Register to Ask a Question

Previous Thread | Next Thread

1 More Discussions You Might Find Interesting

1. UNIX Desktop Questions & Answers

arecord not interrupted after specified duration

I have used the arecord command like this arecord -d 1 test.wav It is keep on waiting. I need to manually interrupt it by ctrl-c. Why it is not interrupting after one second? The arecord version which I am using is : arecord: version 1.0.23 by Jaroslav Kysela (3 Replies)
Discussion started by: thillai_selvan
3 Replies
Login or Register to Ask a Question