[Ardour-Users] High number of crashes

Paul Davis paul at linuxaudiosystems.com
Tue Aug 25 17:23:33 PDT 2015


One minor correction to Robin's otherwise spot-on explanation of why
sandboxing doesn't scale: unless he's thinking of something I'm
forgettting, JACK doesn't have any magic here. Moving from one client
to another still involves a context switch. The "magic" in JACK is
that it does not keep switching back to the server each time, but
instead goes directly from client to client, thus eliminating 1
context switch when compared to the scenario where it goes
server/client/server/client/server.



On Tue, Aug 25, 2015 at 7:46 PM, Lukas Pirl <ardour at lukas-pirl.de> wrote:
> On 08/26/2015 10:37 AM, jonetsu at teksavvy.com wrote:
>> What is the difference, in performance, between isolating a plugin in a
>> sandbox, and using what is called a plugin host ?
>
> Wasn't this some kind of answered by:
>
> On 08/17/2015 07:36 AM, Robin Gareus wrote:
>> On 08/16/2015 08:57 PM, jonetsu at teksavvy.com wrote:
>> [..]
>>
>>> I read recently that Bitwig uses "jails" of some sort (chroot or
>>> otherwise container-based) to ensure application stability regarding
>>> plugins.
>>
>> Process separation (no shared memory between the DAW and the plugin).
>> Various other DAWs do this too.
>>
>> It won't happen in Ardour because it does not scale:
>>
>> <details>
>>
>> http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-
>> make-context.html
>> (also has updated data for an i7 and Sandy Bridge).
>>
>> L1 cache and TLB design has not changed over the last years.
>> You can also measure it yourself using lmtools or rt-tools on your
>> machine.
>>
>>
>> Assuming 48kSPS / 64[fpp] -> 750 context switches/sec alone for the
>> process callback. Multiply that by track-count and by isolated
>> plugins/track.
>>
>> 128 tracks with an EQ, compressor and some other plugin: 512 extra
>> context switches per process cycle. That gets you 384K context
>> switches
>> per second.
>>
>> A context-switch is a fixed cost (register save/restore) and a
>> variable
>> cost (TLB shootdown, depends on touched memory). The impact is about
>> 10-100 usec.
>>
>> Now do the maths.. you'll get on the order of ~10ms alone for every
>> process cycle only for context-switching (sandboxing) and then you
>> have not done any processing nor any i/o.
>>
>>
>> It may work for 4 track Bitwig session with 12 VSTs or thereabouts but
>> it's not suitable for any large scale work.
>>
>> On a side note, this is why jack rocks. The jack process callback just
>> activates clients in the same thread without context-switch.
>>
>> </details>
>>
>> One option would be to only sandbox selected plugins,.. but still that
>> won't solve the actual problem.
>>
>> I really like your earlier suggestion: "paint with less colors".
>> If a plugin causes crashes: Don't use that plugin.
>>
>> On GNU systems we even have the liberty to fix those plugins and I
>> reject crippling a host in order to cope with badly written plugins.
>>
>> This is not an option with proprietary systems which are further
>> driven by marking.
>
> ?
>
> Lukas
> _______________________________________________
> Ardour-Users mailing list
> ardour-users at lists.ardour.org
> To unsubscribe  or change your mailing preferences please visit:
> http://lists.ardour.org/listinfo.cgi/ardour-users-ardour.org



More information about the Ardour-Users mailing list