Date: Wed, 10 Dec 2003 10:12:19 +0200 From: Ian Freislich <ianf@za.uu.net> To: Mathew Kanner <mat@cnd.mcgill.ca> Cc: freebsd-current@freebsd.org Subject: Re: Why are sound ioctl calls so slow? Message-ID: <49687.1071043939@za.uu.net> In-Reply-To: Your message of "Tue, 09 Dec 2003 14:25:57 EST." <20031209192557.GE11072@cnd.mcgill.ca> References: <20031209192557.GE11072@cnd.mcgill.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
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. 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 > 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. Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49687.1071043939>