windows = realtime?


A

alpha

Hello,

I have posted similar topic some weeks ago and now I want to discuss it
further. I'm searching for operating system to meet real-time constraints. I
know that windows is not true real time system, but I have found some papers
complaining that Windows NT can be used as real time system. It complains
that total interrupt latency of NT is about 30 microseconds. That sounds
good for me. I found nothing about Win 2000 and XP interrupt latency. Maybe
someone knows? I think if I write my apps in Ring0 as kernel mode drivers,
then I will have latency as system interrupt latency. So why Windows cant be
used as real-time system? Maybe someone have good ideas or links about that.
I found it very interesting topic. I have searched through internet and
found lots of add-on for linux kernels, but they can guarantee about 30
microseconds latency. Developers complain that these add-ons is real time.
So why windows with 30 us latency can't be real time?
Thank you for any thoughts.

alpha
 
Ad

Advertisements

G

Gary Chanson

alpha said:
Hello,

I have posted similar topic some weeks ago and now I want to discuss it
further. I'm searching for operating system to meet real-time constraints. I
know that windows is not true real time system, but I have found some papers
complaining that Windows NT can be used as real time system. It complains
that total interrupt latency of NT is about 30 microseconds. That sounds
good for me. I found nothing about Win 2000 and XP interrupt latency. Maybe
someone knows? I think if I write my apps in Ring0 as kernel mode drivers,
then I will have latency as system interrupt latency. So why Windows cant be
used as real-time system? Maybe someone have good ideas or links about that.
I found it very interesting topic. I have searched through internet and
found lots of add-on for linux kernels, but they can guarantee about 30
microseconds latency. Developers complain that these add-ons is real time.
So why windows with 30 us latency can't be real time?
I highly doubt that 30 us is the worst case latency for Windows. Even
if it is, Windows has no control over what additional latency might be
introduced by third party device drivers. I think the real worst case would
be measured in ms not us.
 
P

Pavel A.

Posted in too many newsgroups, except of one where it really belongs -
microsoft.public.windowsxp.embedded

Even if the HAL gives 30 mks interrupt latency, the real latency you'll see is DPC latency.
And it depends on too many details. Moreover, latency probably isn't the main criterium
to choose a RT platform. Can you tell more about your application?

--PA
 
B

beta

alpha said:
I have posted similar topic some weeks ago and now I want to discuss it
further. I'm searching for operating system to meet real-time constraints. I
know that windows is not true real time system, but I have found some papers
complaining that Windows NT can be used as real time system. It complains
that total interrupt latency of NT is about 30 microseconds. That sounds
That's wrong for the Windows NT family shipped by Microsoft with the
possible exception of embedded versions ( which i do not know ) and
realtime extensions.
Basically you can not even be sure that any response time is
guaranteed(!) under windows nt/w2k/xp.
Where can we find the papers mentioned above?
beta
 
A

alpha

Hello,
Where can we find the papers mentioned above?
I found these:
http://www.theragens.com/misc/MR - Windows NT Real-Time.htm
http://www.omimo.be/magazine/98q3/index983.htm
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/tchHardReal-TimeWithVenturcomRTXOnMicrosoftWindowsXPWindowsXPEmbedded.asp

It is OT but similary linux and its real-time extensions can't guarantee
exact latency also? So we must use only real time systems like Qnx? I
thought it would be great to use windows as real time system.

alpha
 
A

alpha

Hello,
Even if the HAL gives 30 mks interrupt latency, the real latency you'll see is DPC latency.
And it depends on too many details. Moreover, latency probably isn't the main criterium
to choose a RT platform. Can you tell more about your application?
Mostly high speed data acquisition and visualization on industrial
computers.

alpha
 
Ad

Advertisements

M

Mark Roddy

In general, as this has been discussed ad nauseum, the consensus is that if
you have 'hard' real time constraints NT is the wrong OS. For example you
cannot strictly control interrupt priority, so even your 30us latency is
really 30us best case not 30us worst case. As others have mentioned, it
isn't even ISR latency that is the big problem, DPC latency is even harder
to quantify. If you can strictly control hardware and software deployment
you can use NT, either embedded or standard versions, as long as your
requirements are loose enough to fit within what NT can give you, but as
'what NT can give you' is not documented or guaranteed, you will have to
experimentally determine if it is suitable. Otherwise, for RT requirements
use an RTOS.


--

=====================
Mark Roddy
Windows 2003/XP/2000 Consulting
Hollis Technology Solutions 603-321-1032
www.hollistech.com
(e-mail address removed)
 
M

Maxim S. Shatskih

complaining that Windows NT can be used as real time system. It complains
that total interrupt latency of NT is about 30 microseconds.
IDE in PIO mode will easily introduce larger latency. So is serial port.
 
R

Rufus V. Smith

alpha said:
Hello,


I found these:
http://www.theragens.com/misc/MR - Windows NT Real-Time.htm
http://www.omimo.be/magazine/98q3/index983.htm
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/tchHardReal-TimeWithVenturcomRTXOnMicrosoftWindowsXPWindowsXPEmbedded.asp

It is OT but similary linux and its real-time extensions can't guarantee
exact latency also? So we must use only real time systems like Qnx? I
thought it would be great to use windows as real time system.

alpha
You might take a look at hyperkernel

http://www.nematron.com/Software/HyperKernel.shtml

or intime or iRMX, now at

http://www.tenasys.com/

I have seen others at the Embedded Systems Conference, but don't remember
their names at this time. Many are of the form, "We run Windows as a
task within our real-time os structure".

In my experience this means you can't guarantee response of your windows
code, but if you are controlling equipment, you can write real-time tasks
to do that. However, communication between realtime and non-realtime
tasks can be a bit of a pain...

And Microsoft themselves have embedded versions of Windows which
in some cases purport to have real-time capability.

http://msdn.microsoft.com/embedded/default.aspx


Rufus
 
R

Raphael Baum

Rufus V. Smith said:
I have seen others at the Embedded Systems Conference, but don't remember
their names at this time. Many are of the form, "We run Windows as a
task within our real-time os structure".

In my experience this means you can't guarantee response of your windows
code, but if you are controlling equipment, you can write real-time tasks
to do that. However, communication between realtime and non-realtime
tasks can be a bit of a pain...
Take a look at CeWin/VxWin http://www.cewin.com from KUKA Controls.
They run VxWorks and Windows CE as realtime OS under Windows
2000/XP.
Communication can be done via:
- a virtual network
- shared memory
- Events (Can be used like Win32 Events)

So there is realy no pain...

Raphael
 
Ad

Advertisements

D

dtiktin

I have posted similar topic some weeks ago and now I want to
discuss it further. I'm searching for operating system to meet
real-time constraints. I know that windows is not true real time
system, but I have found some papers complaining that Windows NT
can be used as real time system. It complains that total interrupt
latency of NT is about 30 microseconds. That sounds good for me. I
found nothing about Win 2000 and XP interrupt latency. Maybe
someone knows? I think if I write my apps in Ring0 as kernel mode
drivers, then I will have latency as system interrupt latency. So
why Windows cant be used as real-time system? Maybe someone have
good ideas or links about that. I found it very interesting topic.
I have searched through internet and found lots of add-on for
linux kernels, but they can guarantee about 30 microseconds
latency. Developers complain that these add-ons is real time. So
why windows with 30 us latency can't be real time? Thank you for
any thoughts.
As others have said, I don't think you'll find any guarantees from MS
about worst case interrupt latency or any guarantee about worst case
task scheduling delay. There are all sorts of things that can play
havoc with timing on any general purpose OS such as NT. But for what
it's worth, I was recently involved in a project that used a product
called RTX from VentureCom (http://www.vci.com/) which provides a
hard real-time subsystem for NT. If you need this capability, you
might want to check it out. It's not free :-(

Note: I am not connected in any way with VentureCom and I'm not
recommending (and I'm not *not* recommending) their product. I just
thought you might be interested.

Dave
 
P

Pat B

I'm experiencing interrupts latencies of 20 milliseconds on
some machines. More often than not you should be able to go
sub-millisecond, but there are no guarantees on this OS.
Some vendors just get their device drivers working and don't
worry about the huge latency problems.
 
A

Alexander Grigoriev

If your thread has "normal" priority, it's normal latency, because it may
have to wait until another thread's time slice expires. To reduce it, you
have to use higher priority threads.
 
P

Pat B

Nope, these are _interrupt_ latencies. To my device drivers
ISR(). Something else in the system held off interrupts to
my PCI device for 20-24 millseconds about four times a day.
 
M

Mike Powers

The physical interrupts are prioritized. If you get two or more
interrupts at the same time, one will be handled first.
 
Ad

Advertisements

P

Pat B

but 20 milliseconds! that's insanely bad.

Mike said:
The physical interrupts are prioritized. If you get two or more
interrupts at the same time, one will be handled first.
 
J

James

but 20 milliseconds! that's insanely bad.
Yes. Only 4 times a day, though: some 'rogue' driver is jamming things
for far too long. Is there any pattern to it, like a burst of disk
activity which happens every 6 hours (updating some index, perhaps)?


James.
 
Ad

Advertisements

M

Michael S

Pat B said:
but 20 milliseconds! that's insanely bad.

1. Be sure that atapi.sys is not running on you computer. It is known
to be major abuser. Try SCSI HDD, USB2 CD and floppy.
2. Clean your system of virus scanners and similar crap. Antiviruses
don't follow any rules - your typical worm/virus (mis)behaves much
nicer!

Doing 1+2 you improve your chances by factor of 10. Of course, still
nothing guaranteed.
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top