/srv/irclogs.ubuntu.com/2011/01/30/#ubuntustudio-devel.txt

ailopersia: We will use puredata for the system load, so we should quite easily be able to scale the system load for any specific machine. I'm sure we could use our own program for that, but puredata makes things easier at least at this early stage.07:32
ailoMy first idea was just to have two system loads, one low and one high. We can turn that into a latter.07:33
ailoScottL: I made this hierarchy for the test results, device - kernel - test, and for each device, test all kernels07:34
ailoWhen we post the results of our tests, we just need to post for the same device, but different kernels.07:36
=== ScottL_ is now known as ScottL
persiaailo, Does puredata support arbitrary numbers of threads/processes?  The key load issue isn't usually raw CPU cycles, but context switches.18:20
ailopersia: I need to find out more about that. I know you can have some sort of separation of processes, but I need to find out how exactly.18:39
ailopersia: Could you give me an example of what would be desirable.18:41
persiaailo, Basically, the goal would be to mimic someone running multiple JACK clients simultaneously.  Consider a recording session with lots of effects, or a polyphonic synthesizer (using different engines), or similar.19:02
persiaUnfortunately, context switches are expensive, and are one of the major causes of missing scheduling deadlines.  Hard RT forces deadlines to be met, but may drop processes to achieve this.  Soft RT maintains all the processes, but may drop deadlines to achieve this.19:03
persiaSo it would be interesting to find the failure points for both soft- and hard- strategies on a variety of hardware.19:03
persiaSimilarly, it becomes interesting to compare soft RT handling of failures from -generic, -server, and -lowlatency19:04
persiaForcing the failure is a matter of increasing the demand for scheduled events under processor load/context switch pressure.19:07
persiaThis can be because you have a lot of different things happening at the same time, or something happening exceedingly often.19:07
persiaSo, latency measurement affects this: lower latency requires more demand events, which then limits the system's ability to handle multiple simultaneous event generators within the scheudle (considering the cost of context switches)19:08
ailopersia: Puredata can have subprocesses, which are created manually. I guess that is what we need.19:10
persiaThat works fine then, and gains the benefits of scriptability.19:12
ailoI don't know how that compares with having different actual programs running, since they may have different jack coding too. 19:15
ailoAnd what about multiple cores, won't that affect how many processes need to be started?19:16
ailopersia: thanks for the info. I will look it over and try to put all that into the puredata patch19:20
persiaMultiple cores do affect it, but in a complex way.  You can run more threads on more cores simultanseously, which helps scheduling, but if you're running the kernel, JACK, and a few generators/effects, you can run out of cores quickly.19:55
persiaFor that matter, the kernel ends up being something like 25 threads these days.19:55
rlameirohey evryone22:56
rlameirothe last iso build isnt installing....22:57
ailorlameiro: http://irclogs.ubuntu.com/2011/01/30/%23ubuntustudio-devel.html22:58
rlameiroailo: well, you could open diferent instances of pd...23:00
ailorlameiro: That's true. Don't know which is better, but that would work.23:01
rlameiroalso if you use [pd~] you open a pd grapher inside other, making another process23:01
rlameiromutlithread sort of speak23:01
ailoYes, that is what I was thinking about23:02
rlameirobut i think persia was talking about switching of diferent process23:03
rlameiroeven connectin in jack etc23:03
persiarlameiro, Precisely.  Mind you, this could be several pd instances23:03
rlameirolike that, we could make some internal midi latency test also between pd instances23:03
ailoI don't understand, switching between processes?23:05
persiaYes.  This is an expensive operation for most hardware, which makes it prone to causing issues with meeting timing contracts.23:05
ailoOpening pd will likely cause xruns. Don't think we have that problem when switching between different pd~ objects (pd~being an object that creates a new sub-process)23:07
rlameiroailo, in a nutshell, each pprocess or PID has a schedulling timer on the kernel23:07
rlameiroThe more demanding process are active the more is the CPU / RAM and system buses are pushed23:08
persiaailo, Precisely.  Opening processes causes xruns for low-latency environments.  Switching between processes causes xruns.  The key is that if we discover that if we're only running one process in some environment and can get latencies of 2ms at sampling rates of 192kHz, it doesn't apply well to real-world usage.23:08
rlameiroif you have less demanding process the scheduler simply gives more time to that process23:09
persiaWell, not always.  If all current contracts are met, and all current non-RT processes have no pending processing, and all buffers are populated, the processor will idle.23:11
persia(a frequent cause of "no pending processing" is waiting on I/O, which can be dealing with a slow 44100 input feed, or reading off disk, or slowest, waiting for network content)23:12
ailoI didn't realize pd~ opened a new instance of pd. 23:12
rlameiropersia: or even Firewire overhead...23:12
persiarlameiro, Or USB :)  Indeed, any sort of I/O.23:12
rlameiroailo: yes on the back23:12
ailobtw, I'm not believing the performance I'm getting from the latest -generic. 23:12
ailoInteresting to find out in more detail23:13
rlameiroI remebr having to change my bluetooth dongle because it was messing with my audio interface23:13
rlameirosame hub channe;l23:13
rlameiropersia: thats aanother problem people seem to disregard23:14
rlameirowe focuss to much on CPU.... i think its a legacy thing23:14
persiaYeah, IO optimisation is mostly considered a "server thing", sadly.23:15
rlameirofor composing on a DAW and lot of synts /sampler the most needed stuff is Memory and Fast I/o23:15
rlameirofor instance using RAID 023:15
rlameirofor data 23:15
persiaHow does the -server kernel compete?23:15
rlameiroand having the OS on a SSD23:15
rlameiroin audio persia ?23:16
persiaYes.23:16
rlameirogood question23:16
rlameironever tried it out...23:16
persiaOS on SSD doesn't always help: the path of the SSD is important, and the speed of the SSD (some aren't actually that fast)23:16
rlameirowelll, The RAID0 disk i mentioned werent 5400 rpm either :D23:17
rlameiroi was talking 10krpm23:17
persia-server is supposed to be optimised for IO and fair scheduling under resource constraint, as opposed to the "Ooh, shiny, the user moved the mouse, let's update the screen!!!!!" focus of the -generic kernels23:17
rlameiroat least 7200rpm23:17
rlameiropersia: I wonder how is that diferentiated...23:18
rlameiroaudio could be considered shiny...23:18
persiaI don't know the details.  My limited understanding is that it's something like the -generic kernel giving priority to new processes, redraws, and similar, whereas the -server kernel gives priority to ensuring that IO isn't waiting on the processor.23:20
rlameirohummm23:20
persiaSo for -generic, foreground vs, background is more important, etc.23:20
rlameiroRT kernels were made for that stuff....23:21
persiaBut I don't understand the details.23:21
rlameirostock market and stuff23:21
persiaRT kernels are about ensuring the scheduling contracts are met, not about optimising performance one way or another.23:21
rlameiroyeap, on the stock market they need big I/o and Strict scheduling23:22
persiaThis ends up looking like optimised performance, but it's kinda by accident, because the RT-using applications are meeting their contracts, although the rest of the system may be resource-starved.23:22
persia22 seconds :)23:22
rlameirowell, a wrong app with RT permission can make a computer unusable for some time :D23:23
persiaAny app with RT permission can, it's just a matter of the contract requirements vs. the capacity of the system.23:23
persiaPersonally, I'm of the view that RT is only required when either pushing the system beyond normal limits *OR* dealing with a system that has unpredictable resource requirements due to non-essential processes.23:24
persiaThat said, it's not very hard to push a current-tech system beyond it's limits, if one tries :)23:24
rlameiroyeap23:25
rlameiroon my case Firewire with a suboptimal FW chipset from ricoh23:25
persiaThe driver is so bad you need RT constraints to be able to stream audio?23:26
rlameiroat low latencies 23:32
rlameiroits a chipset problem too23:33

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!