[Info-vax] OpenVMS async I/O, fast vs. slow
Arne Vajhøj
arne at vajhoej.dk
Sat Nov 4 23:05:07 EDT 2023
On 11/4/2023 9:53 PM, Stephen Hoffman wrote:
> On 2023-11-04 21:44:24 +0000, Arne Vajhøj said:
>
>> $QIO(W) is original. $IO_PERFORM(W) was added much later.
>>
>> $IO_PERFORM(W) is called fast path IO. The name and the fact that it
>> was added later hint at it being faster.
>>
>> That name has always give me associations to a strategy of doing lots
>> of checks upfront and then skip layers and checks when doing the
>> actual reads/writes. But I have no idea if that is actually what it does.
>
> Careful with the "fast path IO" names, here.
>
> From somebody long ago and far away, an overview of Fast Path:
> http://h41379.www4.hpe.com/wizard/wiz_2358.html
>
> I wouldn't expect much of a performance benefit to Fast Path on a
> uniprocessor configuration. If anything.
>
> Fast I/O may well be useful here, though. Fast I/O is effectively a
> version of the $qio read and write paths, reworked for 64-bit support
> and for speed.
>
> Quoth the doc: "In total, Fast I/O services eliminate four spinlock
> acquisitions per I/O (two for the MMG spinlock and two for the SCHED
> spinlock). The reduction in CPU cost per I/O is 20 percent for
> uniprocessor systems and 10 percent for multiprocessor systems."
>
> Additionally, use of buffer objects can usually improve somewhat upon
> that Fast I/O performance, though how much depends on the details of
> local system memory activity.
>
> Fast Path and Fast I/O were, are, and will always remain stupid feature
> names.
So $IO_FASTPATH(W) is for "Fast Path" and for speeding
up IO on multi-processors while $IO_SETUP + $IO_PERFORM(W) +
$IO_CLEANUP are for "Fast IO" and for reducing spinlock overhead?
And no relation - $QIO(W) or $IO_PERFORM(W) and fast path on
or fast path off are 4 valid options?
Arne
More information about the Info-vax
mailing list