From: John Larkin on
On Fri, 09 Feb 2007 21:16:35 +0000, nospam <nospam(a)please.invalid>
wrote:

>"Didi" <dp(a)tgi-sci.com> wrote:
>
>>> The delay between input and output edges was nominally 17us -0 +4 which
>>> occasionally stretched to +15 during intense disc activity. The system was
>>> quite happy taking interrupts at 10kHz.
>>
>>While 17 uS is a bit too long for a GHz range CPU, this is a sane
>>figure.
>
>But the PCI bus doesn't run at GHz and has lots of overhead for a single
>cycle I/O access. On the same system the minimum width of a software
>generated pulse on an I/O line was about 4us.

But what was the *maximum* width of that pulse? I'd expect that, under
Windows, the probability tail is still nonzero at some number of
seconds.

John

From: nospam on
John Larkin <jjlarkin(a)highNOTlandTHIStechnologyPART.com> wrote:

>On Fri, 09 Feb 2007 21:16:35 +0000, nospam <nospam(a)please.invalid>
>wrote:
>
>>"Didi" <dp(a)tgi-sci.com> wrote:
>>
>>>> The delay between input and output edges was nominally 17us -0 +4 which
>>>> occasionally stretched to +15 during intense disc activity. The system was
>>>> quite happy taking interrupts at 10kHz.
>>>
>>>While 17 uS is a bit too long for a GHz range CPU, this is a sane
>>>figure.
>>
>>But the PCI bus doesn't run at GHz and has lots of overhead for a single
>>cycle I/O access. On the same system the minimum width of a software
>>generated pulse on an I/O line was about 4us.
>
>But what was the *maximum* width of that pulse? I'd expect that, under
>Windows, the probability tail is still nonzero at some number of
>seconds.

It was generated in a driver interrupt handler so the maximum was also
about 4us barring PCI bus contention from other bus masters.
--
From: Paul Keinanen on
On Sat, 10 Feb 2007 02:43:52 +0000 (UTC), kensmith(a)green.rahul.net
(Ken Smith) wrote:

>Yes applications that are tied to the user interface have the problem
>right up at the surface. In other applications, the FIFO model is more
>hidden but it is still there under the surface. The task dispatching
>still tends to take the task in the order of the events.

Sounds like all the treads waiting for various events are running at
the same priority level.

On older Windows NT versions, only the tread priority levels 16, 22-26
and 31 were available in the realtime priority class, so assigning
priorities to various threads was quite tricky. Starting from Windows
2000 the levels 16-31 are available.

In non-realtime priority classes, round-robin scheduling and priority
boost for interactive threads etc. makes predicting timing more or
less pointless.

Paul

From: Didi on
> But the PCI bus doesn't run at GHz and has lots of overhead for a single
> cycle I/O access. On the same system the minimum width of a software
> generated pulse on an I/O line was about 4us.

Sounds like the delay has been down to bridging to/from
the PCI bus, PCI is much faster than that. Maximum latencies
can get large because of bus (req/grant etc.) delay, but
minimum (when the bus is free or owned) are much below
1uS.
However, for a monstrous mess like the x86 your figures
are about the best one could expect, sound quite reasonable.

Dimiter

On Feb 9, 11:16 pm, nospam <nos...(a)please.invalid> wrote:
> "Didi" <d...(a)tgi-sci.com> wrote:
> >> The delay between input and output edges was nominally 17us -0 +4 which
> >> occasionally stretched to +15 during intense disc activity. The system was
> >> quite happy taking interrupts at 10kHz.
>
> >While 17 uS is a bit too long for a GHz range CPU, this is a sane
> >figure.
>
> But the PCI bus doesn't run at GHz and has lots of overhead for a single
> cycle I/O access. On the same system the minimum width of a software
> generated pulse on an I/O line was about 4us.
>
> --


From: Ken Smith on
In article <0m0rs2dn5ft27b6gtpm6f396o19nj0j91p(a)4ax.com>,
Paul Keinanen <keinanen(a)sci.fi> wrote:
>On Sat, 10 Feb 2007 02:43:52 +0000 (UTC), kensmith(a)green.rahul.net
>(Ken Smith) wrote:
>
>>Yes applications that are tied to the user interface have the problem
>>right up at the surface. In other applications, the FIFO model is more
>>hidden but it is still there under the surface. The task dispatching
>>still tends to take the task in the order of the events.
>
>Sounds like all the treads waiting for various events are running at
>the same priority level.

Not all of them have to be at the same priority for the effect to be seen.
The event just needs to pass through a thread to end up being timed at
that threads priority even if the thread waiting for that thread to finish
dealing with it is at some other priority.

>On older Windows NT versions, only the tread priority levels 16, 22-26
>and 31 were available in the realtime priority class, so assigning
>priorities to various threads was quite tricky.

In spades.


Starting from Windows
>2000 the levels 16-31 are available.
>
>In non-realtime priority classes, round-robin scheduling and priority
>boost for interactive threads etc. makes predicting timing more or
>less pointless.
>
>Paul
>


--
--
kensmith(a)rahul.net forging knowledge