Hi, Just checked the CPU usage again as running the AgsDrum sequencer, during playback the usage goes down to 80 %.
I think with a small patch we can fix this behavior. regards, Joël On Thu, Nov 28, 2019 at 4:26 AM Joël Krähemann <jkraehem...@gmail.com> wrote: > > Hi, > I take your complain about CPU usage serious. I intend to target it > in GSequencer v2.4.x > > The high CPU usage is due to AgsThreadPool providing non-blocking > calls to AgsTaskThread. > > But I don't see any way to provide it to buster. > > If you are interested in what is going on related to the thread API, > here are further informations: > > http://savannah.nongnu.org/forum/forum.php?forum_id=9601 > > sorry, > Joël > > On Thu, Nov 28, 2019 at 3:26 AM Joël Krähemann <jkraehem...@gmail.com> wrote: > > > > Hi, > > Yes, it is true. GSequencer consumes too much power as doing no audio > > processing. > > This was targeted with next major release v3.0.0 expected available > > within a half year. > > > > To change this behavior, I had to refactor the threading API of > > GSequencer. Currently > > it creates many threads without running any audio processing. > > > > The thread pool is the main cause for this, which is used by AgsTaskThread. > > > > In GSequencer v3.0.0 the AgsTask objects are launched in GMainContext. But > > for > > now they run asynchronous exclusive and are added by a non-blocking call. > > > > > > On Thu, Nov 28, 2019 at 2:00 AM westlake <westlake2...@videotron.ca> wrote: > > > > > > Here when I use gsequencer, (pasuspender not needed) > > > LADSPA_PATH="" DSSI_PATH="" LV2_PATH="" gsequencer > > > > > > I can run skipping the plugin-scan, I can get the graphical interface > > > within a second... > > > > > > dragging the window skimps as this app is not throttling it's cpu > > > utilization correctly.. > > > > > > When using "top", the app is using 300%... > > > > > > The limits setting /etc/security/limits.conf:: > > > (for security limits.conf, I comment-out everything in > > > /etc/security/limits.d/ to keep the configuration easier to read) > > > "" > > > * hard core 0 > > > * hard nofile 1048576 > > > * hard rtprio 95 > > > * - memlock unlimited > > > * - msgqueue 65536 > > > * - nice -19 > > > * - nice -20 > > > * - rttime 100000 > > > * soft core 0 > > > * soft nofile 1048576 > > > * soft rtprio 95 > > > @users - priority 0 > > > "" > > > > > > changed rtprio to 35, and "top"(command) still says gsequencer is using > > > 300% even after reboot. > > > "* hard rtprio 95 > > > * soft rtprio 95" > > > "* hard rtprio 35 > > > * soft rtprio 35" > > > > > > > > > The observation when rtprio is set at 95-> majority of threads go at > > > FIFO 95. [ screenshot provided ] > > > > > > The observation when rtprio is set at 35-> all threads are set to > > > SCHED_OTHER and only one gets set at FIFO with priority 20. > > > > > > 'jack' for both rtprio cases in ags' settings, 1 reboot with the > > > different rtprio settings. So the rtprio gets set aggressively with 95, > > > but barely nothing set with 35. << buggy. > > > > > > More buggy because with both rtprio settings the cpu is still at 300%. > > > > > > --> ags should be down at 2-5% when it is not doing any work. > > > > > > When I look at an RT-driven application such as ardour, while it runs it > > > does spike in cpu it immediately goes back down to 5%. > > > > > > ..also the rt-safe option in ags doesn't do anything. cpu% is still > > > spiked high.. > > > > The RT-safe option does reduce the calls to malloc(). > > > > > > > > Other observation: > > > When ags is set at alsa, the cpu% is lower but it is still very high at > > > 110%. > > > > > > The threads with the alsa setting show 0.3% cpu utilization instead of > > > 10% when ags is set to jack.. the "main" process I suppose is the one > > > that is always going 100+% for both alsa and jack cases. > > > > > > quick summary:: > > > Alsa (top without -H) --> 110% > > > Jack (top without -H) --> 300% > > > > > > When it says 100+%, ags is using more than 1 core.. > > > > > > With jack, 3 cores are now bogged down.. That tells me there is > > > something very wrong. > > > > > > I can now see what is happening... there's a bug because gsequencer is > > > doing no work but it polls the cpu at 100%-300%... > > > > There many threads running. Especially AgsThreadPoll creates some > > threads that might be used. > > > > > > > > The cpu% is still grabbed even when I change kernel.sched_rt_runtime_us > > > = 950000 to 500000 > > > > > > so there's a serious violation of scheduling policy happening here with > > > RT kernels for this software. > > > > What scheduling policy are you talking about? > > > > > > > > .. > > > I also don't know what makes you think pulseaudio is being used, here I > > > have it masked under ~/.config/systemd/user .. Jackdbus here is also > > > not handled by the dbus-auto-activation,... > > > > > > ~/.local/share/dbus-1/services/org.jackaudio.service > > > " > > > [D-BUS Service] > > > Name=org.jackaudio.service > > > > > > SystemdService=dbus-org.jackaudio.service > > > " > > > > > > ~/.config/systemd/user/dbus-org.jackaudio.service -- allows the user to > > > enable/disable jackdbus and whether to have it auto-start or not.. This > > > is user-defined startup unit file and is what I use here to stop jack as > > > needed. > > > > > > pulseaudio cannot be autostarted because it is masked.. > > > > > > ls ~/.config/systemd/user/ > > > pulseaudio.service -> /dev/null > > > pulseaudio.socket -> /dev/null > > > > > > things in ~/.config/systemd/user override things in /usr/lib/systemd/user/ > > > /usr/lib/systemd/user/pulseaudio.service > > > /usr/lib/systemd/user/pulseaudio.socket > > > > > > there may be a "pulse" entry in "aplay -L", but its a dormant entry as > > > "pgrep -fa pulseaudio" and "pacmd" do not show no pulseaudio ever gets > > > loaded... > > > > > > For security/audit team: > > > Ags-> 2 megabytes, uses 300% of the cpu cores. > > > Ardour-> a 100+ megabyte application uses just 5%. > > > > > > > What makes you think memory usage has anything to do with CPU > > consumption? > > > > > This package severely ignores scheduling restrictions. --- its' the only > > > RT audio application on debian that violates and ignores settings in > > > both /etc/security/limits.conf and /etc/sysctl.d/ for > > > kernel.sched_rt_runtime_us. > > > > So you think I should parse these files? > > > > > > > > This package may be better to have removed for now, as it seriously > > > violates scheduling of the kernel. Possibly more than just rt-kernels. > > > > > > > I see no reason for this. > > > > > thanks