Hi,
I am currently researching KMDF to determine whether it is applicable to our
product kernel drivers.
As a first step, I ordered the OSR book, and then began checking the
whitepapers.
My question is how KMDF “behaves” in scalable environments in which
thousands of I/Os IRP can be handled in the same time, and in which there
might be thousands of storage stacks.
As I understand, KMDF allocates extra memory for each WDM kernel object. For
example, for each DEVICE_OBJECT that my driver handles, KWDF allocates an
extra memory for its own usage(WDFDEVICE).
What happens when KMDF fails to allocate the memory?
Especially, if KMDF needs to allocate memory for each IRP and fails (Due to
real low resources or because of driver verifier testing)?
What is the extra overhead incurred for each I/O because of KMDF handling?
Did someone do some benchmarking or tests to measure the overhead?
Don’t get me wrong, I love the KMDF idea and can’t wait to start using it,
however those questions keep popping up because our product should run in
scalable environments.
Thanks,
Eran.
Currently KMDF does not support forward progress as you describe under
low memory conditions where we can’t allocate a WDFREQUEST for a PIRP.
This is definitely something we plan to do on the next release post
Vista. You can mitigate part of this by registering a preprocess
routine and get the raw WDM PIRP and process it on your own, but then
you lose a major feature (power managed queues), but you can compensate
for that by implement that part on your own.
D
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Eran Borovik
Sent: Sunday, February 19, 2006 2:16 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] KMDF in scalable and low resources environment
Hi,
I am currently researching KMDF to determine whether it is applicable to
our
product kernel drivers.
As a first step, I ordered the OSR book, and then began checking the
whitepapers.
My question is how KMDF “behaves” in scalable environments in which
thousands of I/Os IRP can be handled in the same time, and in which
there
might be thousands of storage stacks.
As I understand, KMDF allocates extra memory for each WDM kernel object.
For
example, for each DEVICE_OBJECT that my driver handles, KWDF allocates
an
extra memory for its own usage(WDFDEVICE).
What happens when KMDF fails to allocate the memory?
Especially, if KMDF needs to allocate memory for each IRP and fails (Due
to
real low resources or because of driver verifier testing)?
What is the extra overhead incurred for each I/O because of KMDF
handling?
Did someone do some benchmarking or tests to measure the overhead?
Don’t get me wrong, I love the KMDF idea and can’t wait to start using
it,
however those questions keep popping up because our product should run
in
scalable environments.
Thanks,
Eran.
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com