[pulseaudio-discuss] Daemon gets terminated

Lennart Poettering lennart at poettering.net
Wed Sep 12 04:02:38 PDT 2007


On Tue, 11.09.07 19:28, DSK (dsk.in.2007 at gmail.com) wrote:

> Each sample counts as 0.01 seconds.
>   %   cumulative   self              self     total
>  time   seconds   seconds    calls  us/call  us/call  name
>  12.18      0.19     0.19    20503     9.27           pa_mainloop_dispatch
>  10.26      0.35     0.16   440486     0.36          AO_compare_and_swap_emulation

Hmm, apparently libatomic_ops doesn't know your architecture (which
is ARM, if I remember?), and is emulating cmpxchg wiht mutexes. This
is a huge hit on perfomance (but probably not the only problem you're
experiencing.) Fixing this should be a top priority for getting PA
working properly on ARM. 

To fix this, you need to add native atomic operation support to PA for
your architecture. For that you should add a new arch-specific block
to src/pulsecore/atomic.h, starting like this:

#elif defined(__GNUC__) && defined(__arm__)

/* ... */

#endif

Inspiration for the needed assembly could be glib, or glibc, or even
the kernel (the kernel however is problematic, since the kernel
doesn't do a memory barrier for atomic ops, but otoh there's no smp
for arm, is there? so this doesn't really matter).

Since I have no access to ARM I unfortunately cannot help you much on
implementing this.

>   5.77      0.44     0.09    20503     4.39           pa_mainloop_prepare
>   5.77      0.53     0.09        0     0.00           mainloop_io_enable
>   3.85      0.59     0.06    79847     0.75           AO_store_full_emulation
>   3.85      0.65     0.06        0     0.00           mainloop_defer_enable
>   3.21      0.70     0.05    20503     2.44           pa_mainloop_iterate
>   3.21      0.75     0.05    13920     3.59           pa_asyncq_pop
>   3.21      0.80     0.05        0     0.00           __udivdi3
>   2.56      0.84     0.04    31016     1.29           pa_mainloop_wakeup
>   2.56      0.88     0.04    29323     1.36           pa_flist_push
>   2.56      0.92     0.04    20503     1.95           pa_mainloop_poll
>   2.56      0.96     0.04    14476     2.76           pa_queue_pop
>   1.92      0.99     0.03    64321     0.47           pa_run_once
>   1.92      1.02     0.03    49234     0.61           pa_timeval_cmp
>   1.92      1.05     0.03    32862     0.91           pa_gettimeofday
>   1.92      1.08     0.03    16398     1.83           pa_timeval_diff
>   1.92      1.11     0.03     8515     3.52           pa_asyncq_push
>   1.92      1.14     0.03     8502     3.53           pa_asyncmsgq_post
>   1.92      1.17     0.03     8484     3.54           pa_asyncmsgq_done
>   1.92      1.20     0.03     3055     9.82           pa_memimport_get
>   1.28      1.22     0.02   150456     0.13           pa_msgobject_check_type
>   1.28      1.24     0.02    29575     0.68           pa_flist_pop
>   1.28      1.26     0.02    17000     1.18           pa_fdsem_post
>   1.28      1.28     0.02    14697     1.36           pa_mutex_unlock
>   1.28      1.30     0.02    13918     1.44           pa_asyncmsgq_get
>   1.28      1.32     0.02     7873     2.54           pa_write
>   1.28      1.34     0.02     7611     2.63           pa_xfree
>   1.28      1.36     0.02     5414     3.69           pa_queue_push

Lennart

-- 
Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net         ICQ# 11060553
http://0pointer.net/lennart/           GnuPG 0x1A015CC4



More information about the pulseaudio-discuss mailing list