I'm using arecord to record directly to a USB key:
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:
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.
This should from what I understand provide a 5 meg non blocking pipe buffer to decouple the read and write.
I still get overruns !
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!
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)