On 2014-04-29 15:30, Peter Meerwald wrote: > Hello, > >> Okay, so second iteration. The patch is no longer a draft, and numbers >> look good; Peter Meerwald has confirmed my numbers of 15 - 25% less CPU in >> low latency scenarios (right)? > > here are the benchmark results (have been in private email to David so far > only): > > measured with 'htop -d 50', accuracy +/- 0.7 probably, on beaglebaord-xm > (ARM Cortex-A8, TI OMAP3 @ 1GHz), gcc 4.8, kernel 3.14 > > srchannel iochannel > XXX PA ALSA paplay PA ALSA paplay > 20 25.8 19.8 5.8 28.3 19.1 9.4 Total: 51.4 (srchannel) - 56.8 (iochannel) ~ 10% improvement > 40 13.5 9.2 4.6 16.3 10.1 7.3 Total: 27.3 (srchannel) - 33.7 (iochannel) ~ 19% improvement But as we can see, most of the improvement is actually on the client side. And almost as much in absolute terms on the PA main thread side. > 60 11.8 7.3 3.8 12.7 7.6 6.2 > 80 6.4 4.1 3.0 7.4 4.4 4.2 > 100 5.3 3.2 2.7 5.8 3.3 3.9 > 150 3.2 1.8 2.1 3.7 1.9 3.0 > 200 3.0 1.7 2.0 3.5 1.8 2.8 > > perf on ALSA thread with 20 msec (srchannel) The ALSA thread logic should remain unchanged, regardless of protocol mechanism. So maybe this is mostly a measure of the general accuracy :-) I guess a perf on the client would show bigger differences. > 5.57% pulseaudio [kernel.kallsyms] [k] snd_pcm_hwsync > 2.25% pulseaudio [kernel.kallsyms] [k] finish_task_switch.isra.93 > 2.18% pulseaudio [kernel.kallsyms] [k] eventfd_write > 1.71% pulseaudio libalsa-util.so [.] thread_func > 1.69% pulseaudio [kernel.kallsyms] [k] __hrtimer_start_range_ns > 1.56% pulseaudio [kernel.kallsyms] [k] vector_swi > 1.45% pulseaudio [kernel.kallsyms] [k] do_sys_poll > 1.42% pulseaudio [kernel.kallsyms] [k] snd_pcm_status > 1.20% pulseaudio libpulsecommon-5.0.so [.] __udivsi3 > 1.10% pulseaudio [kernel.kallsyms] [k] clocksource_mmio_readl_up > 1.06% pulseaudio libpulsecommon-5.0.so [.] stack_pop > 0.99% pulseaudio [kernel.kallsyms] [k] __fget > 0.93% pulseaudio libpulsecommon-5.0.so [.] stack_push > 0.83% pulseaudio libpulsecommon-5.0.so [.] pa_memblock_unref > 0.80% pulseaudio libpulsecore-5.0.so [.] pa_rtpoll_run > 0.77% pulseaudio libc-2.18.so [.] memcpy > 0.76% pulseaudio [kernel.kallsyms] [k] snd_pcm_sync_ptr > 0.72% pulseaudio libpulsecore-5.0.so [.] pa_sink_input_peek > 0.69% pulseaudio [kernel.kallsyms] [k] __copy_from_user > 0.65% pulseaudio libpulsecommon-5.0.so [.] __udivdi3 > 0.63% pulseaudio libpulsecommon-5.0.so [.] do_write > > perf on ALSA thread with 20 msec (iochannel) > 4.89% pulseaudio [kernel.kallsyms] [k] snd_pcm_hwsync > 2.43% pulseaudio [kernel.kallsyms] [k] finish_task_switch.isra.93 > 1.67% pulseaudio [kernel.kallsyms] [k] vector_swi > 1.65% pulseaudio [kernel.kallsyms] [k] clocksource_mmio_readl_up > 1.55% pulseaudio libalsa-util.so [.] thread_func > 1.39% pulseaudio [kernel.kallsyms] [k] eventfd_write > 1.25% pulseaudio [kernel.kallsyms] [k] do_sys_poll > 1.25% pulseaudio libpulsecommon-5.0.so [.] __udivsi3 > 1.20% pulseaudio [kernel.kallsyms] [k] snd_pcm_status > 1.19% pulseaudio [kernel.kallsyms] [k] __wake_up_sync_key > 1.13% pulseaudio [kernel.kallsyms] [k] __hrtimer_start_range_ns > 1.02% pulseaudio libpulsecommon-5.0.so [.] stack_pop > 0.99% pulseaudio libpulsecommon-5.0.so [.] stack_push > 0.97% pulseaudio libpulsecommon-5.0.so [.] do_pstream_read_write > 0.92% pulseaudio [kernel.kallsyms] [k] __fget > 0.77% pulseaudio libpulsecommon-5.0.so [.] pa_memblock_unref > 0.69% pulseaudio libpulsecore-5.0.so [.] pa_rtpoll_run > 0.68% pulseaudio [kernel.kallsyms] [k] __copy_from_user > 0.68% pulseaudio libc-2.18.so [.] memcpy > > regards, p. > -- David Henningsson, Canonical Ltd. https://launchpad.net/~diwic