[alsa-devel] Which project to choose?

Raymond Yau superquad.vortex2 at gmail.com
Thu Jul 22 02:33:50 CEST 2010


2010/7/22 Chris <cpollock at embarqmail.com>

> On Wed, 2010-07-21 at 16:17 +0800, Raymond Yau wrote:
> > 2010/7/21 Chris <cpollock at embarqmail.com>
> >
> > > Before I try the above Raymond, what would cause the below when the
> > > system is sitting here basically idle? I'm not even home to do anything
> > > when this happened?
> >
> >
> > > Jul 20 11:32:43 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: ratelimit.c: 240 events
> > > suppressed
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > > Jul 20 11:32:45 localhost pulseaudio[28711]: asyncq.c: q overrun,
> > > queuing locally
> > >
> > >
> > I don't think the system is idle , you still have the
> > gnome-volume-mixer-applet / kmix connected to PA server using pulse api
> >
> > pactl stat
> >
> > pactl list
> >
> > you have to ask PA developers because I cannot reproduce "asyncq.c: q
> > overrun," in the virtualbox
>
> Raymond, outputs of above are here:
>
> http://pastebin.com/db20pXi9
>
>
>
you only have three PA clients when your system is idle,



   1. Client #0
   2.         Driver: module-console-kit.c
   3.         Properties:
   4.                 application.name = "ConsoleKit Session
   /org/freedesktop/ConsoleKit/Session9"
   5.                 console-kit.session =
   "/org/freedesktop/ConsoleKit/Session9"
   6.
   7. Client #1
   8.         Driver: protocol-native.c
   9.                 application.name = "GNOME Volume Control Media Keys"
   10.                 native-protocol.peer = "UNIX socket client"
   11.                 native-protocol.version = "16"
   12.                 application.id = "org.gnome.VolumeControl"
   13.                 application.icon_name = "multimedia-volume-control"
   14.                 application.version = "2.30.2"
   15.                 application.process.id = "30012"
   16.                 application.process.user = "chris"
   17.                 application.process.host = "localhost"
   18.                 application.process.binary = "gnome-settings-daemon"
   19.                 application.language = "en_US.utf8"
   20.                 window.x11.display = ":0.0"
   21.
   22. Client #2
   23.         Driver: protocol-native.c
   24.                 application.name = "GNOME Volume Control Applet"
   25.                 native-protocol.peer = "UNIX socket client"
   26.                 native-protocol.version = "16"
   27.                 application.id = "org.gnome.VolumeControl"
   28.                 application.icon_name = "multimedia-volume-control"
   29.                 application.version = "2.30.0"
   30.                 application.process.id = "30031"
   31.                 application.process.user = "chris"
   32.                 application.process.host = "localhost"
   33.                 application.process.binary =
   "gnome-volume-control-applet"
   34.                 application.language = "en_US.utf8"
   35.                 window.x11.display = ":0.0"


on Fedora 10 , there are 17 PA clients when I just open gnome-terminal to
run pactl

consolekit, x11-xsmp, nm-applet, imsetting-applet, gnome-panel, trashapplet,
wnckapplet, nautilus, clock-applet, mixer2-applet, gdm-user-switch-applet,
notification-area-applet, mono, meta-city, gnome-terminal, gpk-update-icon
and pactl


Just look at the driver modules, they only post
PA_CORE_MESSAGE_UNLOAD_MODULE and PA_MESSAGE_SHUTDOWN , and wait for
PA_MESSAGE_SHUTDOWN

i.e. the driver modules are unlikely to cause "asyncq overrun"


grep -ir "pa_asyncmsgq" *
alsa/alsa-sink.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
alsa/alsa-sink.c:    pa_asyncmsgq_wait_for(u->thread_mq.inq,
PA_MESSAGE_SHUTDOWN);
alsa/alsa-sink.c:        pa_asyncmsgq_send(u->thread_mq.inq, NULL,
PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);
alsa/alsa-source.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
alsa/alsa-source.c:    pa_asyncmsgq_wait_for(u->thread_mq.inq,
PA_MESSAGE_SHUTDOWN);
alsa/alsa-source.c:        pa_asyncmsgq_send(u->thread_mq.inq, NULL,
PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);
bluetooth/module-bluetooth-device.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
bluetooth/module-bluetooth-device.c:
pa_asyncmsgq_wait_for(u->thread_mq.inq, PA_MESSAGE_SHUTDOWN);
bluetooth/module-bluetooth-device.c:
pa_asyncmsgq_send(u->thread_mq.inq, NULL, PA_MESSAGE_SHUTDOWN, NULL, 0,
NULL);
coreaudio/module-coreaudio-device.c:    pa_asyncmsgq *async_msgq;
coreaudio/module-coreaudio-device.c:
pa_assert_se(pa_asyncmsgq_send(u->async_msgq,
PA_MSGOBJECT(u->sinks->pa_sink),
coreaudio/module-coreaudio-device.c:
pa_assert_se(pa_asyncmsgq_send(u->async_msgq,
PA_MSGOBJECT(u->sources->pa_source),
coreaudio/module-coreaudio-device.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->module->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0,
NULL, NULL);
coreaudio/module-coreaudio-device.c:
pa_asyncmsgq_wait_for(u->thread_mq.inq, PA_MESSAGE_SHUTDOWN);
coreaudio/module-coreaudio-device.c:    u->async_msgq = pa_asyncmsgq_new(0);
coreaudio/module-coreaudio-device.c:
pa_asyncmsgq_send(u->thread_mq.inq, NULL, PA_MESSAGE_SHUTDOWN, NULL, 0,
NULL);
coreaudio/module-coreaudio-device.c:
pa_asyncmsgq_unref(u->async_msgq);
jack/module-jack-source.c:    pa_asyncmsgq *jack_msgq;
jack/module-jack-source.c:            pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
jack/module-jack-source.c:    pa_asyncmsgq_post(u->jack_msgq,
PA_MSGOBJECT(u->source), SOURCE_MESSAGE_POST, NULL, frame_time, &chunk,
NULL);
jack/module-jack-source.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
jack/module-jack-source.c:    pa_asyncmsgq_wait_for(u->thread_mq.inq,
PA_MESSAGE_SHUTDOWN);
jack/module-jack-source.c:    pa_asyncmsgq_post(u->jack_msgq,
PA_MSGOBJECT(u->source), SOURCE_MESSAGE_ON_SHUTDOWN, NULL, 0, NULL, NULL);
jack/module-jack-source.c:    u->jack_msgq = pa_asyncmsgq_new(0);
jack/module-jack-source.c:        pa_asyncmsgq_send(u->thread_mq.inq, NULL,
PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);
jack/module-jack-source.c:        pa_asyncmsgq_unref(u->jack_msgq);
jack/module-jack-sink.c: * via pa_asyncmsgq. The cost is an additional
context switch which
jack/module-jack-sink.c:    pa_asyncmsgq *jack_msgq;
jack/module-jack-sink.c:            pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
jack/module-jack-sink.c:    pa_assert_se(pa_asyncmsgq_send(u->jack_msgq,
PA_MSGOBJECT(u->sink), SINK_MESSAGE_RENDER, &frame_time, nframes, NULL) ==
0);
jack/module-jack-sink.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
jack/module-jack-sink.c:    pa_asyncmsgq_wait_for(u->thread_mq.inq,
PA_MESSAGE_SHUTDOWN);
jack/module-jack-sink.c:    pa_asyncmsgq_post(u->jack_msgq,
PA_MSGOBJECT(u->sink), SINK_MESSAGE_ON_SHUTDOWN, NULL, 0, NULL, NULL);
jack/module-jack-sink.c:    pa_asyncmsgq_post(u->jack_msgq,
PA_MSGOBJECT(u->sink), SINK_MESSAGE_BUFFER_SIZE, NULL, nframes, NULL, NULL);
jack/module-jack-sink.c:    u->jack_msgq = pa_asyncmsgq_new(0);
jack/module-jack-sink.c:        pa_asyncmsgq_send(u->thread_mq.inq, NULL,
PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);
jack/module-jack-sink.c:        pa_asyncmsgq_unref(u->jack_msgq);

module-solaris.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
module-solaris.c:    pa_asyncmsgq_wait_for(u->thread_mq.inq,
PA_MESSAGE_SHUTDOWN);
module-solaris.c:        pa_asyncmsgq_send(u->thread_mq.inq, NULL,
PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);
oss/module-oss.c:    pa_asyncmsgq_post(u->thread_mq.outq,
PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL,
NULL);
oss/module-oss.c:    pa_asyncmsgq_wait_for(u->thread_mq.inq,
PA_MESSAGE_SHUTDOWN);
oss/module-oss.c:        pa_asyncmsgq_send(u->thread_mq.inq, NULL,
PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);


More information about the Alsa-devel mailing list