Windows 2000 High Resolution Timer

Hi,

I am working on High Speed USB Data aqusition Device.
Iam want to poll my device every 2 milli second.Iam currently trying to use
KeInitializeTimer. On testign the DPC attached to the timer is
called only every 15 milli seconds on a Winodws 2000 - SP4 - 2.6 Ghz
Machine.
Has any one noticed this behaviour?.I dont want to use ExSetTimerResolution.
Is there any other method where I can increase my Timer Resolution / polling
routine resolution.
Is there any other technique to achieve this .

Regards,

Manohara

Polling as you would like to use is not recommended.

Better:
Implement an interrupt pipe on your device that signals every 2
milliseconds. Then do the polling in your URB-Completion routine for
your interrupt pipe.

Norbert.

"The weather is here, wish you were beautiful."
---- snip ----

Hi,

I am working on High Speed USB Data aqusition Device.
Iam want to poll my device every 2 milli second.Iam currently trying to use
KeInitializeTimer. On testign the DPC attached to the timer is
called only every 15 milli seconds on a Winodws 2000 - SP4 - 2.6 Ghz
Machine.
Has any one noticed this behaviour?.I dont want to use ExSetTimerResolution.
Is there any other method where I can increase my Timer Resolution / polling
routine resolution.
Is there any other technique to achieve this .

Regards,

Manohara


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@stollmann.de
To unsubscribe send a blank email to xxxxx@lists.osr.com

---- snip ----

Is this for a commercial product, or for your own amusement? I’m no
expert, but my gut tells me polling a device 500 times per second is
excessive. That’s every 2 million CPU cycles on a 1GHz machine, not to
mention the cycles your ISR or polling routine will eat up. Viewed
another way, that’s one poll for every 120,000 bytes at full USB 2.0
bandwidth. If the design of your “high speed” device depends on Windows
polling at a rate of 500 times per second, you’ve probably already lost
the battle as far as “high speed” goes. You’ll likely get better
results putting a big buffer on the device and polling less frequently.

Chuck

----- Original Message -----
From: “Manohara.K”
Newsgroups: ntdev
To: “Windows System Software Devs Interest List”
Sent: Friday, July 30, 2004 3:58 PM
Subject: [ntdev] Windows 2000 High Resolution Timer

> Hi,
>
> I am working on High Speed USB Data aqusition Device.
> Iam want to poll my device every 2 milli second.Iam currently trying
to use
> KeInitializeTimer. On testign the DPC attached to the timer is
> called only every 15 milli seconds on a Winodws 2000 - SP4 - 2.6 Ghz
> Machine.
> Has any one noticed this behaviour?.I dont want to use
ExSetTimerResolution.
> Is there any other method where I can increase my Timer Resolution /
polling
> routine resolution.
> Is there any other technique to achieve this .
>
> Regards,
>
> Manohara

No. ExSetTimerResolution only.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

“Manohara.K” wrote in message
news:…
> Hi,
>
> I am working on High Speed USB Data aqusition Device.
> Iam want to poll my device every 2 milli second.Iam currently trying to use
> KeInitializeTimer. On testign the DPC attached to the timer is
> called only every 15 milli seconds on a Winodws 2000 - SP4 - 2.6 Ghz
> Machine.
> Has any one noticed this behaviour?.I dont want to use ExSetTimerResolution.
> Is there any other method where I can increase my Timer Resolution / polling
> routine resolution.
> Is there any other technique to achieve this .
>
> Regards,
>
> Manohara
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

> bandwidth. If the design of your “high speed” device depends on Windows

polling at a rate of 500 times per second, you’ve probably already lost
the battle as far as “high speed” goes. You’ll likely get better
results putting a big buffer on the device and polling less frequently.

Note that if you use a USB interrupt pipe, it has been able to poll the
device at 1ms intervals ever since USB 1.0. One presumes that this will
happen with less overhead than manually building a polling loop that has to
fire multiple IOs up at the device driver level. In USB 2.0 I think it can
poll at something like 100us intervals, or maybe faster.

It seems to me that if you have a USB device you think you need to poll from
the processor to make work, that you probably aren’t using the interrupt
pipe correctly for the application.

Loren

Golly, guys, polling every 2ms is nothing to a fast processor. Say you spend
1,000 instructions to handle it, that’s 1K/2M = .05 % of the CPU bandwidth.
Piece of cake. Or at least it should be. If it isn’t, something in between
isn’t performing up to snuff. Time to get that scope out ?

Alberto.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Chuck Batson
Sent: Friday, July 30, 2004 5:50 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Windows 2000 High Resolution Timer

Is this for a commercial product, or for your own amusement? I’m no
expert, but my gut tells me polling a device 500 times per second is
excessive. That’s every 2 million CPU cycles on a 1GHz machine, not to
mention the cycles your ISR or polling routine will eat up. Viewed
another way, that’s one poll for every 120,000 bytes at full USB 2.0
bandwidth. If the design of your “high speed” device depends on Windows
polling at a rate of 500 times per second, you’ve probably already lost
the battle as far as “high speed” goes. You’ll likely get better
results putting a big buffer on the device and polling less frequently.

Chuck

----- Original Message -----
From: “Manohara.K”
Newsgroups: ntdev
To: “Windows System Software Devs Interest List”
Sent: Friday, July 30, 2004 3:58 PM
Subject: [ntdev] Windows 2000 High Resolution Timer

> Hi,
>
> I am working on High Speed USB Data aqusition Device.
> Iam want to poll my device every 2 milli second.Iam currently trying
to use
> KeInitializeTimer. On testign the DPC attached to the timer is
> called only every 15 milli seconds on a Winodws 2000 - SP4 - 2.6 Ghz
> Machine.
> Has any one noticed this behaviour?.I dont want to use
ExSetTimerResolution.
> Is there any other method where I can increase my Timer Resolution /
polling
> routine resolution.
> Is there any other technique to achieve this .
>
> Regards,
>
> Manohara


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@compuware.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

The contents of this e-mail are intended for the named addressee only. It
contains information that may be confidential. Unless you are the named
addressee or an authorized designee, you may not copy or use it, or disclose
it to anyone else. If you received it in error please notify us immediately
and then destroy it.

1,000 CPU cycles does not necessarily equate to 1,000 instructions. But
I see your point. Even if it was an order of magnitude higher (how many
cycles exactly is the overhead for an ISR on Windows?), that’s still
only half a percent. It still seems like 500 times per second is
overkill (perhaps my age showing). Then again, it is MY computer,
right? I don’t want some random driver writer dictating how my CPU
cycles are spent, any more than you want an OS that prevents you from
reading PCI config space. :wink:

Chuck

----- Original Message -----
From: “Moreira, Alberto”
To: “Windows System Software Devs Interest List”
Sent: Friday, July 30, 2004 8:45 PM
Subject: RE: [ntdev] Windows 2000 High Resolution Timer

> Golly, guys, polling every 2ms is nothing to a fast processor. Say you
spend
> 1,000 instructions to handle it, that’s 1K/2M = .05 % of the CPU
bandwidth.
> Piece of cake. Or at least it should be. If it isn’t, something in
between
> isn’t performing up to snuff. Time to get that scope out ?
>
> Alberto.
>
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com]On Behalf Of Chuck Batson
> Sent: Friday, July 30, 2004 5:50 AM
> To: Windows System Software Devs Interest List
> Subject: Re: [ntdev] Windows 2000 High Resolution Timer
>
>
> Is this for a commercial product, or for your own amusement? I’m no
> expert, but my gut tells me polling a device 500 times per second is
> excessive. That’s every 2 million CPU cycles on a 1GHz machine, not
to
> mention the cycles your ISR or polling routine will eat up. Viewed
> another way, that’s one poll for every 120,000 bytes at full USB 2.0
> bandwidth. If the design of your “high speed” device depends on
Windows
> polling at a rate of 500 times per second, you’ve probably already
lost
> the battle as far as “high speed” goes. You’ll likely get better
> results putting a big buffer on the device and polling less
frequently.
>
> Chuck
>
> ----- Original Message -----
> From: “Manohara.K”
> Newsgroups: ntdev
> To: “Windows System Software Devs Interest List”
> Sent: Friday, July 30, 2004 3:58 PM
> Subject: [ntdev] Windows 2000 High Resolution Timer
>
>
> > Hi,
> >
> > I am working on High Speed USB Data aqusition Device.
> > Iam want to poll my device every 2 milli second.Iam currently trying
> to use
> > KeInitializeTimer. On testign the DPC attached to the timer is
> > called only every 15 milli seconds on a Winodws 2000 - SP4 - 2.6 Ghz
> > Machine.
> > Has any one noticed this behaviour?.I dont want to use
> ExSetTimerResolution.
> > Is there any other method where I can increase my Timer Resolution /
> polling
> > routine resolution.
> > Is there any other technique to achieve this .
> >
> > Regards,
> >
> > Manohara

I agree with you that it may be an overkill to poll that fast, but when you
have such a big slowdown - from 2ms to 15 ms - I don’t know, I would like to
know the exact cause. It could bite me again somewhere else where I actually
do need the speed !

Alberto.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Chuck Batson
Sent: Friday, July 30, 2004 10:50 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Windows 2000 High Resolution Timer

1,000 CPU cycles does not necessarily equate to 1,000 instructions. But
I see your point. Even if it was an order of magnitude higher (how many
cycles exactly is the overhead for an ISR on Windows?), that’s still
only half a percent. It still seems like 500 times per second is
overkill (perhaps my age showing). Then again, it is MY computer,
right? I don’t want some random driver writer dictating how my CPU
cycles are spent, any more than you want an OS that prevents you from
reading PCI config space. :wink:

Chuck

----- Original Message -----
From: “Moreira, Alberto”
To: “Windows System Software Devs Interest List”
Sent: Friday, July 30, 2004 8:45 PM
Subject: RE: [ntdev] Windows 2000 High Resolution Timer

> Golly, guys, polling every 2ms is nothing to a fast processor. Say you
spend
> 1,000 instructions to handle it, that’s 1K/2M = .05 % of the CPU
bandwidth.
> Piece of cake. Or at least it should be. If it isn’t, something in
between
> isn’t performing up to snuff. Time to get that scope out ?
>
> Alberto.
>
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com]On Behalf Of Chuck Batson
> Sent: Friday, July 30, 2004 5:50 AM
> To: Windows System Software Devs Interest List
> Subject: Re: [ntdev] Windows 2000 High Resolution Timer
>
>
> Is this for a commercial product, or for your own amusement? I’m no
> expert, but my gut tells me polling a device 500 times per second is
> excessive. That’s every 2 million CPU cycles on a 1GHz machine, not
to
> mention the cycles your ISR or polling routine will eat up. Viewed
> another way, that’s one poll for every 120,000 bytes at full USB 2.0
> bandwidth. If the design of your “high speed” device depends on
Windows
> polling at a rate of 500 times per second, you’ve probably already
lost
> the battle as far as “high speed” goes. You’ll likely get better
> results putting a big buffer on the device and polling less
frequently.
>
> Chuck
>
> ----- Original Message -----
> From: “Manohara.K”
> Newsgroups: ntdev
> To: “Windows System Software Devs Interest List”
> Sent: Friday, July 30, 2004 3:58 PM
> Subject: [ntdev] Windows 2000 High Resolution Timer
>
>
> > Hi,
> >
> > I am working on High Speed USB Data aqusition Device.
> > Iam want to poll my device every 2 milli second.Iam currently trying
> to use
> > KeInitializeTimer. On testign the DPC attached to the timer is
> > called only every 15 milli seconds on a Winodws 2000 - SP4 - 2.6 Ghz
> > Machine.
> > Has any one noticed this behaviour?.I dont want to use
> ExSetTimerResolution.
> > Is there any other method where I can increase my Timer Resolution /
> polling
> > routine resolution.
> > Is there any other technique to achieve this .
> >
> > Regards,
> >
> > Manohara


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@compuware.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

The contents of this e-mail are intended for the named addressee only. It
contains information that may be confidential. Unless you are the named
addressee or an authorized designee, you may not copy or use it, or disclose
it to anyone else. If you received it in error please notify us immediately
and then destroy it.