View Issue Details

IDProjectCategoryView StatusLast Update
0004287ardourbugspublic2020-04-19 20:15
Reporternaptastic Assigned Topaul  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionno change required 
Target Version3.0-beta2 
Summary0004287: Ardour is not processing audio in parallel.
DescriptionI created a session with 16 tracks and put nedko's 4-band parametric equalizer LV2 plugin on each track. Each track's input signal is a different physical input and its output is a different physical output. (So there are 16 in -> track -> out paths with no crossing or dependencies.)

In preferences, I've told Ardour to use 4 processors, and I've restarted, but looking at top and gnome-system-monitor, I can see that Ardour is doing everything on a single processor.
Additional InformationI am using cpusets and IRQ shielding to restrict all non-audio tasks to two of my six processors, and to restrict audio-related things to the other 4 processors. Specifically, they are the real-time clock, the i8042 timers, the hdsp driver, the relevant IRQ lines to the above; jackd, a2jmidid, ardour3 and the terminal it's running in. (Side note: Ardour refuses to migrate from one CPU to another once it's started, so I have to assign a terminal to the right cpuset and then start ardour3 withing that terminal.)
TagsNo tags attached.

  Users sponsoring this issue
Sponsors List Total Sponsorship = US$ 100

2011-08-25 17:23: naptastic (US$ 100)
  Users sponsoring this issue (Total Sponsorship = US$ 100)

Activities

naptastic

2011-08-23 19:11

reporter   ~0011399

Las suggested I study the graph and process debug output. I ran:

ardour3 -D procesthreads,graph

and it produced 115,734 lines of debug output. I, uh... yeah. tl;dr.

naptastic

2011-08-23 19:16

reporter   ~0011400

Good God, processthreads is even worse! It dumps a page of information for every period of audio processed! Here's a typical section:

DEBUG::ProcessThreads: no-roll graph execution from 0 to 64 = 64
DEBUG::ProcessThreads: wake graph for no-roll process
DEBUG::ProcessThreads: 140494701713152 goes to sleep
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 2
DEBUG::ProcessThreads: 140494702241536 runs route Audio 16
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 15
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 14
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 13
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 12
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 11
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 10
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 9
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 8
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 7
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 6
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 5
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 4
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 3
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 2
DEBUG::ProcessThreads: 140494702241536 has finished run_one()
DEBUG::ProcessThreads: 140494702241536 signals 0
DEBUG::ProcessThreads: 140494702241536 runs route Audio 1
DEBUG::ProcessThreads: 140494701184768 goes to sleep
DEBUG::ProcessThreads: 140494701184768 is awake
DEBUG::ProcessThreads: 140494701184768 goes to sleep
DEBUG::ProcessThreads: 140494701184768 is awake
DEBUG::ProcessThreads: 140494701184768 goes to sleep
DEBUG::ProcessThreads: calling graph/no-roll

I notice that the Very Large number related to each audio channel stays the same--does that mean it's being done by the same thread?

cth103

2011-10-18 10:43

administrator   ~0011707

This seems to work for me, so I'm guessing it might be something to do with your cpusets setup. The output above does seem to suggest that all tracks are being run by the same thread.

danboid

2011-10-18 17:00

reporter   ~0011708

It might help to tell us what OS and kernel you are running please naptastic!

$100 bug fix!!!

80

naptastic

2011-10-19 14:08

reporter   ~0011712

Hi,

When I tried this before, I was running Linux 3.0.0-rc3, if I remember correctly, on Ubuntu 10.10. I compile almost the whole audio stack myself from source, and I've got instructions on how I do it if that's needed.

My studio has been pure chaos the last month as I just moved cross-country and I'm still putting things back together. I will have this bug reproduced in the next day or two at the latest.

cth103, I will try it both with and without the cpuset setup and report on the results. I'm hoping that's not the culprit: I'm scared of taking an issue like that to kernel devs. ;-)

naptastic

2011-10-20 01:58

reporter   ~0011723

Update: I have Ardour running, and I reloaded the session. I can't confirm for 100% certain but it still looks like everything's being handled on one CPU.

If there were a friendlier debug interface for this, or an LV2 plugin that calculates a configurable number of digits of pi during every period, it would be very helpful.

/me goes to google thread information stuff.

cth103

2011-11-02 00:14

administrator   ~0011869

This is without the cpuset stuff?

naptastic

2011-11-02 03:45

reporter   ~0011873

Yeah, no mucking about with CPU binding.

naptastic

2011-11-03 04:07

reporter   ~0011888

Okay, now that I can have an arbitrary number of ir.lv2's XD

I can confirm, without the cpuset policies, Ardour3 *IS* processing audio in parallel. I will set up my cpuset policies another time to see if I can reproduce the bug.

paul

2011-12-04 19:35

administrator   ~0012296

ardour doesn't attempt to reserve CPUs. it only controls the number of threads it creates. if the kernel isn't scheduling them all as many CPUs as you expect, that's an issue with your kernel configuration and/or the kernel.

system

2020-04-19 20:15

developer   ~0022728

Issue has been closed automatically, by Trigger Close Plugin.
Feel free to re-open with additional information if you think the issue is not resolved.

Issue History

Date Modified Username Field Change
2011-08-23 18:40 naptastic New Issue
2011-08-23 19:11 naptastic Note Added: 0011399
2011-08-23 19:16 naptastic Note Added: 0011400
2011-08-25 17:23 naptastic Sponsorship Added naptastic: US$ 25
2011-08-25 17:23 naptastic Sponsorship Total 0 => 25
2011-08-26 01:09 cth103 cost => 0.00
2011-08-26 01:09 cth103 Target Version => 3.0-beta1
2011-10-18 00:47 naptastic Sponsorship Updated naptastic: US$ 75
2011-10-18 00:47 naptastic Sponsorship Total 25 => 75
2011-10-18 00:47 naptastic Sponsorship Updated naptastic: US$ 100
2011-10-18 00:47 naptastic Sponsorship Total 75 => 100
2011-10-18 10:43 cth103 Note Added: 0011707
2011-10-18 17:00 danboid Note Added: 0011708
2011-10-19 14:08 naptastic Note Added: 0011712
2011-10-20 01:58 naptastic Note Added: 0011723
2011-11-02 00:14 cth103 Note Added: 0011869
2011-11-02 03:45 naptastic Note Added: 0011873
2011-11-03 04:07 naptastic Note Added: 0011888
2011-11-03 04:07 naptastic Status new => feedback
2011-11-15 15:49 cth103 Target Version 3.0-beta1 => 3.0-beta2
2011-12-04 19:35 paul Note Added: 0012296
2011-12-04 19:35 paul Status feedback => resolved
2011-12-04 19:35 paul Resolution open => no change required
2011-12-04 19:35 paul Assigned To => paul
2020-04-19 20:15 system Note Added: 0022728
2020-04-19 20:15 system Status resolved => closed