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
bup-margin(1)						      General Commands Manual						     bup-margin(1)

NAME
bup-margin - figure out your deduplication safety margin SYNOPSIS
bup margin [options...] DESCRIPTION
bup margin iterates through all objects in your bup repository, calculating the largest number of prefix bits shared between any two entries. This number, n, identifies the longest subset of SHA-1 you could use and still encounter a collision between your object ids. For example, one system that was tested had a collection of 11 million objects (70 GB), and bup margin returned 45. That means a 46-bit hash would be sufficient to avoid all collisions among that set of objects; each object in that repository could be uniquely identified by its first 46 bits. The number of bits needed seems to increase by about 1 or 2 for every doubling of the number of objects. Since SHA-1 hashes have 160 bits, that leaves 115 bits of margin. Of course, because SHA-1 hashes are essentially random, it's theoretically possible to use many more bits with far fewer objects. If you're paranoid about the possibility of SHA-1 collisions, you can monitor your repository by running bup margin occasionally to see if you're getting dangerously close to 160 bits. OPTIONS
--predict Guess the offset into each index file where a particular object will appear, and report the maximum deviation of the correct answer from the guess. This is potentially useful for tuning an interpolation search algorithm. --ignore-midx don't use .midx files, use only .idx files. This is only really useful when used with --predict. EXAMPLE
$ bup margin Reading indexes: 100.00% (1612581/1612581), done. 40 40 matching prefix bits 1.94 bits per doubling 120 bits (61.86 doublings) remaining 4.19338e+18 times larger is possible Everyone on earth could have 625878182 data sets like yours, all in one repository, and we would expect 1 object collision. $ bup margin --predict PackIdxList: using 1 index. Reading indexes: 100.00% (1612581/1612581), done. 915 of 1612581 (0.057%) SEE ALSO
bup-midx(1), bup-save(1) BUP
Part of the bup(1) suite. AUTHORS
Avery Pennarun <apenwarr@gmail.com>. Bup unknown- bup-margin(1)
All times are GMT -4. The time now is 07:14 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy