View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0004287 | ardour | bugs | public | 2011-08-23 18:40 | 2020-04-19 20:15 |
| Reporter | naptastic | Assigned To | paul | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | no change required | ||
| Target Version | 3.0-beta2 | ||||
| Summary | 0004287: Ardour is not processing audio in parallel. | ||||
| Description | I 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 Information | I 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.) | ||||
| Tags | No tags attached. | ||||
| Users sponsoring this issue | ||
| Sponsors List |
Total Sponsorship = US$ 100 2011-08-25 17:23: naptastic (US$ 100) |
|
|---|---|---|
|
|
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. |
|
|
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? |
|
|
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. |
|
|
It might help to tell us what OS and kernel you are running please naptastic! $100 bug fix!!! 80 |
|
|
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. ;-) |
|
|
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. |
|
|
This is without the cpuset stuff? |
|
|
Yeah, no mucking about with CPU binding. |
|
|
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. |
|
|
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. |
|
|
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. |
| 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 |