Sponsored Content
Full Discussion: arecord, pdflush and bfr.
Top Forums UNIX for Advanced & Expert Users arecord, pdflush and bfr. Post 302590451 by bucksbell on Monday 16th of January 2012 09:16:28 AM
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!
 

We Also Found This Discussion For You

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
usb-devices(1)							Linux USB Utilities						    usb-devices(1)

NAME
usb-devices - print USB device details SYNOPSIS
usb-devices DESCRIPTION
usb-devices is a (bash) shell script that can be used to display details of USB buses in the system and the devices connected to them. The output of the script is similar to the usb/devices file available either under /proc/bus (if usbfs is mounted), or under /sys/ker- nel/debug (if debugfs is mounted there). The script is primarily intended to be used if the file is not available. In contrast to the usb/devices file, this script only lists active interfaces (those marked with a "*" in the usb/devices file) and their endpoints. Be advised that there can be differences in the way information is sorted, as well as in the format of the output. RETURN VALUE
If sysfs is not mounted, a non-zero exit code is returned. FILES
/sys/bus/usb/devices/usb* The part of the sysfs tree the script walks through to assemble the printed information. /proc/bus/usb/devices Location where the usb/devices file can normally be found for Linux kernels before 2.6.31, if usbfs is mounted. /sys/kernel/debug/usb/devices Location where the usb/devices file can normally be found for Linux kernel 2.6.31 and later, if debugfs is mounted. SEE ALSO
lsusb(8), usbview(8). AUTHORS
Greg Kroah-Hartman <greg@kroah.com> Randy Dunlap <rdunlap@xenotime.net> Frans Pop <elendil@planet.nl> usbutils-005 23 June 2009 usb-devices(1)
All times are GMT -4. The time now is 06:15 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy