[alsa-devel] 1010lt (ice1712) asoundrc for 6 virtual mono cards question

Giovanni Maruzzelli gmaruzz.lists at gmail.com
Fri Apr 13 16:34:55 CEST 2007


btw, I tried the latency.c app in polling mode too (./latency -P
plughw:0 -C plughw:0 -f S16_LE -c 1 -r 8000  -m 320  -M 960 -s 600 -p)
with same "spiking" results.

Further hints?

On 4/13/07, Giovanni Maruzzelli <gmaruzz.lists at gmail.com> wrote:
> I applied the first hint from Jaroslav (at the end of this post the
> new asound.conf), but the problem seems not gone: one time each 256
> seconds I get a very strong cpu load spike, that is maybe related (my
> guess) to the usage of plugin (maybe periodic cleaning each 256
> secs?). When there is no spike, the cpu load is 0.0% with occasional
> 0.1% any 60-90 secs.
>
> I ran the latency test code with plughw:0 (I can't use latency.c with
> my virtual cards because they can't link the in and out togheter)
> using the blocking mode, real time, no poll. Any 256 secs, spike! (a
> cpu load for latency.c of 45.00%, for roughly a sec, with the
> cumulated cpu time of the latency.c app reported from top -d 1.0
> passing from:
> 0:00.01
> to:
> 0:00.64
> to:
> 0:01.26
> etc, any 256 seconds.
>
>
> latency.c output:
>
>  ./latency -P plughw:0 -C plughw:0 -f S16_LE -c 1 -r 8000  -m 320  -M
> 960 -s 600 -b
> Playback device is plughw:0
> Capture device is plughw:0
> Parameters are 8000Hz, S16_LE, 1 channels, blocking mode
> Wanted tick time: 0us, poll mode: no
> Loop limit is 4800000 frames, minimum latency = 320, maximum latency = 960
> Plug PCM: Route conversion PCM (sformat=S32_LE)
>   Transformation table:
>     0 <- 0
>     1 <- 0
>     2 <- 0
>     3 <- 0
>     4 <- 0
>     5 <- 0
>     6 <- 0
>     7 <- 0
>     8 <- 0
>     9 <- 0
> Its setup is:
>   stream       : PLAYBACK
>   access       : RW_INTERLEAVED
>   format       : S16_LE
>   subformat    : STD
>   channels     : 1
>   rate         : 8000
>   exact rate   : 8000 (8000/1)
>   msbits       : 16
>   buffer_size  : 320
>   period_size  : 160
>   period_time  : 20000
>   tick_time    : 10000
>   tstamp_mode  : NONE
>   period_step  : 1
>   sleep_min    : 0
>   avail_min    : 160
>   xfer_align   : 1
>   start_threshold  : 2147483647
>   stop_threshold   : 320
>   silence_threshold: 0
>   silence_size : 0
>   boundary     : 1342177280
> Slave: Hardware PCM card 0 'M Audio Delta 1010LT' device 0 subdevice 0
> Its setup is:
>   stream       : PLAYBACK
>   access       : MMAP_INTERLEAVED
>   format       : S32_LE
>   subformat    : STD
>   channels     : 10
>   rate         : 8000
>   exact rate   : 8000 (8000/1)
>   msbits       : 24
>   buffer_size  : 320
>   period_size  : 160
>   period_time  : 20000
>   tick_time    : 10000
>   tstamp_mode  : NONE
>   period_step  : 1
>   sleep_min    : 0
>   avail_min    : 160
>   xfer_align   : 1
>   start_threshold  : 2147483647
>   stop_threshold   : 320
>   silence_threshold: 0
>   silence_size : 0
>   boundary     : 1342177280
> Plug PCM: Route conversion PCM (sformat=S32_LE)
>   Transformation table:
>     0 <- 0*0.0833333 + 1*0.0833333 + 2*0.0833333 + 3*0.0833333 +
> 4*0.0833333 + 5*0.0833333 + 6*0.0833333 + 7*0.0833333 + 8*0.0833333 +
> 9*0.0833333 + 10*0.0833333 + 11*0.0833333
> Its setup is:
>   stream       : CAPTURE
>   access       : RW_INTERLEAVED
>   format       : S16_LE
>   subformat    : STD
>   channels     : 1
>   rate         : 8000
>   exact rate   : 8000 (8000/1)
>   msbits       : 16
>   buffer_size  : 320
>   period_size  : 160
>   period_time  : 20000
>   tick_time    : 10000
>   tstamp_mode  : NONE
>   period_step  : 1
>   sleep_min    : 0
>   avail_min    : 160
>   xfer_align   : 1
>   start_threshold  : 2147483647
>   stop_threshold   : 320
>   silence_threshold: 0
>   silence_size : 0
>   boundary     : 1342177280
> Slave: Hardware PCM card 0 'M Audio Delta 1010LT' device 0 subdevice 0
> Its setup is:
>   stream       : CAPTURE
>   access       : MMAP_INTERLEAVED
>   format       : S32_LE
>   subformat    : STD
>   channels     : 12
>   rate         : 8000
>   exact rate   : 8000 (8000/1)
>   msbits       : 24
>   buffer_size  : 320
>   period_size  : 160
>   period_time  : 20000
>   tick_time    : 10000
>   tstamp_mode  : NONE
>   period_step  : 1
>   sleep_min    : 0
>   avail_min    : 160
>   xfer_align   : 1
>   start_threshold  : 2147483647
>   stop_threshold   : 320
>   silence_threshold: 0
>   silence_size : 0
>   boundary     : 1342177280
> Trying latency 320 frames, 40000.000us, 40.000000ms (25.0000Hz)
> Success
> Playback:
> *** frames = 4800320 ***
>   state       : RUNNING
>   trigger_time: 1176471431.639255951
>   tstamp      : 1176472031.482713139
>   delay       : 317
>   avail       : 3
>   avail_max   : 192
> Capture:
> *** frames = 4800000 ***
>   state       : RUNNING
>   trigger_time: 1176471431.639255951
>   tstamp      : 1176472031.482757926
>   delay       : 1
>   avail       : 1
>   avail_max   : 189
> Maximum read: 160 frames
> Maximum read latency: 20000.000us, 20.000000ms (50.0000Hz)
> Hardware sync
> Playback time = 1176471431.639255, Record time = 1176471431.639255, diff = 0
>
> new asound.conf:
>
> pcm.c3 {
>     type dsnoop
>     ipc_key 56789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 12
>         format S32_LE
>     }
>     bindings {
>         0 2
>     }
> }
> pcm.capt3 {
>     type plug
>         slave.pcm c3
> }
>
> pcm.c4 {
>     type dsnoop
>     ipc_key 56789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 12
>         format S32_LE
>     }
>     bindings {
>         0 3
>     }
> }
> pcm.capt4 {
>     type plug
>         slave.pcm c4
> }
>
>
> pcm.c5 {
>     type dsnoop
>     ipc_key 56789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 12
>         format S32_LE
>     }
>     bindings {
>         0 4
>     }
> }
> pcm.capt5 {
>     type plug
>         slave.pcm c5
> }
>
>
> pcm.c6 {
>     type dsnoop
>     ipc_key 56789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 12
>         format S32_LE
>     }
>     bindings {
>         0 5
>     }
> }
> pcm.capt6 {
>     type plug
>         slave.pcm c6
> }
>
> pcm.c7 {
>     type dsnoop
>     ipc_key 56789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 12
>         format S32_LE
>     }
>     bindings {
>         0 6
>     }
> }
> pcm.capt7 {
>     type plug
>         slave.pcm c7
> }
>
>
> pcm.c8 {
>     type dsnoop
>     ipc_key 56789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 12
>         format S32_LE
>     }
>     bindings {
>         0 7
>     }
> }
> pcm.capt8 {
>     type plug
>         slave.pcm c8
> }
>
> #############################
> #############################
>
> pcm.s3 {
>     type dshare
>     ipc_key 123456789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 10
>         format S32_LE
>     }
>     bindings {
>         0 2
>     }
> }
> pcm.play3 {
>     type plug
>         slave.pcm s3
> }
>
> pcm.s4 {
>     type dshare
>     ipc_key 123456789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 10
>         format S32_LE
>     }
>     bindings {
>         0 3
>     }
> }
> pcm.play4 {
>     type plug
>         slave.pcm s4
> }
>
> pcm.s5 {
>     type dshare
>     ipc_key 123456789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 10
>         format S32_LE
>     }
>     bindings {
>         0 4
>     }
> }
> pcm.play5 {
>     type plug
>         slave.pcm s5
> }
>
> pcm.s6 {
>     type dshare
>     ipc_key 123456789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 10
>         format S32_LE
>     }
>     bindings {
>         0 5
>     }
> }
> pcm.play6 {
>     type plug
>         slave.pcm s6
> }
>
> pcm.s7 {
>     type dshare
>     ipc_key 123456789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 10
>         format S32_LE
>     }
>     bindings {
>         0 6
>     }
> }
> pcm.play7 {
>     type plug
>         slave.pcm s7
> }
>
>
> pcm.s8 {
>     type dshare
>     ipc_key 123456789
>     slave {
>         pcm "hw:0,0"
>         rate 8000
>         period_time 0
>         period_size 320
>         channels 10
>         format S32_LE
>     }
>     bindings {
>         0 7
>     }
> }
> pcm.play8 {
>     type plug
>         slave.pcm s8
> }
>
>
>
>
>
>
>
>
>
> On 4/13/07, Giovanni Maruzzelli <gmaruzz.lists at gmail.com> wrote:
> > Thanks a lot Jaroslav, I'll apply your suggestions and I'll report here
> >
> > On 4/13/07, Jaroslav Kysela <perex at suse.cz> wrote:
> > > On Fri, 13 Apr 2007, Giovanni Maruzzelli wrote:
> > >
> > > > Dear Alsa developers,
> > > >
> > > > I want to use a 1010lt (ice1712 driver) as 6 analog mono duplex cards.
> > > >
> > > > I want to use the /etc/asound.conf (.asoundrc) to split the card (that
> > > > has 8 in and 8 out - but I use just 6 in/out), with minimal latency.
> > > >
> > > > I mean, I want to record and play (duplex) from/to each virtual card
> > > > concurrently and from separate application instances.
> > > >
> > > > My app works with S16_LE, 8000, mono.
> > > >
> > > > Is the following asound.conf (.asoundrc) correct and efficient for this?
> > >
> > > Use dsnoop bindings rather than routing (ttable) for capture too,
> > > otherwise alsa-lib works with all channels internally.
> > >
> > > > I got spikes of cpu load (at 5-6%) on each virtual card any roughly
> > > > 256 seconds when using a(play|record) to record or play from/to any
> > >
> > > aplay|arecord is not very good test. Use latency test code - available in
> > > alsa-lib/test directory.
> > >
> > >                                                 Jaroslav
> > >
> > > -----
> > > Jaroslav Kysela <perex at suse.cz>
> > > Linux Kernel Sound Maintainer
> > > ALSA Project, SUSE Labs
> > >
> >
>


More information about the Alsa-devel mailing list