[wdmaudiodev] Re: Heavy system load while many subdevices created

  • From: "Jeff Pages" <barefeet@xxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Sat, 6 May 2006 18:11:54 +1000

Eugene,

I've noticed the same thing with the startup time growing with the number of subdevices. When our 24-channel radio capture card is starting up you go away and make a cup of coffee! Everything works fine once it's finished initialising, so I've never investigated what was behind it. I just assumed it was one of those quirky Windows things.

Jeff Pages
Innes Corporation Pty Ltd

----- Original Message ----- From: "Eugene Muzychenko" <emuzychenko@xxxxxxxxx>
To: <wdmaudiodev@xxxxxxxxxxxxx>
Sent: Saturday, May 06, 2006 1:05 PM
Subject: [wdmaudiodev] Heavy system load while many subdevices created



Hello!

I have written a WavePci miniport driver that creates several
subdevice pairs of the same type (Wave/Topology) using a standard method
(PcNewPort/PcRegisterSubdevice). I noticed that a system load
after driver startup/shutdown grows
very fast if I increase number of subdevices. If there are 1..4
subdevice pairs, the driver starts quickly and the system becomes idle
immediately. With 8 pairs, the system consumes almost 100% CPU (the "system"
process) about one minute after the driver is loaded or unloaded. With
16 pairs, it continues up to 5 minutes.


Debugging output in my driver shows that several threads from the
"system" process (I think they are SysAudio threads) continuously
perform many open/close operations for each Topology subdevice,
querying them for volume/mute parameters and modify these parameters.
Each subdevice is processed many times. But Wave subdevices are almost
never touched.

My driver accepts a registry parameter specifying how many subdevice
pairs to create. If I lower this amount and restart the driver,
system threads try to open non-existent subdevices. For example, if
the amount was 10 and I lowered it to 5, system threads try to open
subdevices 5..10, in spite of they were not created in current
session. Seems like SysAudio remembers how many subdevices were
created earlier.

I tested the driver under w2k SP4 and XP SP2, there was no difference.

It is normal or maybe I'm doing something wrong? Each Topology
subdevice is responsible for a corresponding Wave subdevice; if I will
create a single Topology subdevice responsible for all Wave
subdevices, will it be more correct and fast?

Regards,
Eugene

******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/


******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: