Running the reading and decoding processes in parallel?
I would imagine reading and writing to the same mechanical disk would be the culprit.
If I read correctly:
I don't suppose using less concurrent threads would improve the performance of FLAC -d but it might be worth checking.
I should also have mentioned I thought an instance of STDIO was limited to one thread per file, but this may be a bad assumption on my part.
I tested this on my machine with mostly insignificant differences.
On a 171MB FLAC -8 encoded file.
I ran one decode to allow Linux to cache the FLAC file in RAM and then discarded the results.
A proper process efficient redirection to standard input:flac -o test.wav -d - < 01-A\ Change\ Of\ Seasons.flac
Given this admittedly abysmally inadequate sample size
You let your OS cache your file on purpose, so it was decoded from RAM. Why? I'm talking about hard drive access. Do you even understand what I'm talking about?
Quote from: yourlord on 26 November, 2012, 05:28:53 PMA proper process efficient redirection to standard input:flac -o test.wav -d - < 01-A\ Change\ Of\ Seasons.flacActually, I tried that, and it's a lot less efficient in my experiments than piping cat's output: my test, using that method, completes in 40 seconds (versus 25) off my HDD.
Then there is something else terribly wrong. Shell native redirection should ALWAYS be faster than piping the data from cat. There's an entire process that no longer needs to be spawned and managed (cat) for every single decode operation.
You might try `blockdev --setra 65536 --setfra 65536 <device>` to set blockdev/fs readahead to ridiculously high values.
I'm rather curious as to if you can improve performance at the default readahead values by instead tuning CFQ params.
Quote from: Axon on 27 November, 2012, 01:59:02 PMI'm rather curious as to if you can improve performance at the default readahead values by instead tuning CFQ params.Yes: 23 seconds with CFQ/readahead at 256 (vs. 40 seconds with deadline), 17 seconds with CFQ/readahead at 16384.I completely forgot that I changed the scheduler to deadline years ago.