Re: Why are sound ioctl calls so slow?

From: Mathew Kanner <mat_at_cnd.mcgill.ca>
Date: Wed, 10 Dec 2003 11:49:57 -0500
On Dec 10, Ian Freislich wrote:
> Mathew Kanner wrote:
> > >   3224 mpg123   0.000748 CALL  ioctl(0x3,SNDCTL_DSP_SETFMT,0xbfbff834)
> > >   3224 mpg123   0.026260 RET   ioctl 0
> > > 
> > > Can someone firstly tell me whether or not if it is reasonable to
> > > expect the ioctl call to be any faster.  Perhaps my reasoning is
> > > flawed, but I'd expect about 61000 instructions to be executed by
> > > the CPU (133MHz) in 23ms at an average of 50 clock cycles per
> > > instruction not taking cache misses into account.  I cannot concieve
> > > of any reason why it should take 61000 instructions to write the
> > > format, speed or stereo to the sound hardware.
> > > 
> > > Does each ioctl result in a context switch which means that the cpu
> > > spends time on other processes for each ioctl call?  I'm not sure
> > > that this is what happens because mpg123 uses 100% cpu for about
> > > 10 seconds and then settles down to about 40% once it actually
> > > starts decoding the mp3.
> > 
> > 	Ian,
> > 	Sounds like you understand the problem, maybe you should
> > investigate :)  
> 
> Hmm, I was hoping someone familiar with the sound stuff would be
> able to say whether I was smoking my socks or not.

	You aren't gonna find it.

>  This is very
> uncharted territory for me.  I'll try to have a look and see if I
> can figure out what gives this week end.
> 
> > 	My first guess would be the device is rebuilding feeder/mixer
> > chains every time mpg123 changes format.  I would run the test one
> > more time, disabling vchans and rate conversion.
> > 
> > 	sysctl hw.snd.report_soft_formats=0 hw.snd.maxautovchans=0
> 
> That didn't make a (noticeable) difference:
> 
>   4090 mpg123   0.000603 CALL  ioctl(0x3,SNDCTL_DSP_STEREO,0xbfbff864)
>   4090 mpg123   0.026047 RET   ioctl 0
>   4090 mpg123   0.000582 CALL  ioctl(0x3,SNDCTL_DSP_SPEED,0xbfbff864)
>   4090 mpg123   0.017735 RET   ioctl 0
>   4090 mpg123   0.000414 CALL  ioctl(0x3,SNDCTL_DSP_SETFMT,0xbfbff864)
>   4090 mpg123   0.026004 RET   ioctl 0

	You complained that mpg123 was doing hundered of system calls.
Did that remain constant aswell?

> 
> > 	I didn't notice which version of fbsd that you are using.
> 
> 5.2-CURRENT (2003-10-21 00:00:00 GMT) and 4.9-STABLE.

	--Mat

-- 
	The state has no business in the bedrooms of the
	nation.
			- Pierre Elliott Trudeau
Received on Wed Dec 10 2003 - 07:52:52 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:33 UTC