[Info-vax] OpenVMS async I/O, fast vs. slow

Arne Vajhøj arne at vajhoej.dk
Tue Nov 7 22:03:59 EST 2023


On 11/7/2023 9:52 PM, Jake Hamby (Solid State Jake) wrote:
> On Tuesday, November 7, 2023 at 6:17:28 PM UTC-8, Craig A. Berry wrote:
>> On 11/7/23 6:04 PM, Arne Vajhøj wrote:
>>> On 11/7/2023 5:44 PM, Craig A. Berry wrote:
>>>> On 11/6/23 6:18 PM, Arne Vajhøj wrote:
>>>>> But at least for $QIO(W) then I would be very surprised if it did. It is
>>>>> from before VIOC/XFC so originally it did not have anywhere to
>>>>> store read ahead data. VMS engineering could have changed
>>>>> behavior when VIOC/XFC was introduced. But I doubt it.
>>>>
>>>> Are you saying that you think merely using $QIO bypasses XFC?  If so,
>>>> how do you think SHOW MEM/CACHE can give you "Total QIOs"?  And note
>>>> this from the performance management manual page 72:
>>>> "I/O service can be optimized at the application level by using RMS
>>>> global buffers to share caches among processes. This method offers the
>>>> benefit of satisfying an I/O request without issuing a QIO; whereas
>>>> system memory software cache (that is, XFC) is checked to satisfy QIOs."
>>>
>>> I am sure that $QIO(W) hits XFC. Else there would not be
>>> much point in XFC.
>>>
>>> The question is whether $QIO(W) get more data read into XFC
>>> than asked for by the user. It could but I doubt it.
>> Consider what I quoted from the fine manual: "system memory software
>> cache (that is, XFC) is checked to satisfy QIOs." What would it mean to
>> read from cache to "satisfy" a QIO other than there may be more data
>> already in the cache than has been explicitly asked for by the user?
>>
>> If you're talking about snooping to predict what might be read next and
>> cache it, it looks like that's an attribute of the volume and of XFC
>> itself and doesn't have anything to do with the I/O API in use:
>>
>> https://wiki.vmssoftware.com/VCC_READAHEAD
> 
> This thread has been very educational. I wasn't thinking through the implications of a virtual block data cache that's integrated with the filesystem. The VSI wiki page for the V8.4-2L3 release does a better job of explaining the benefits of the features than anything else I've found:
> 
> https://wiki.vmssoftware.com/V8.4-2L3
> 
> "The Extended File Cache (XFC) is a virtual block data cache provided with OpenVMS for Integrity servers. Similar to the Virtual I/O Cache, the XFC is a clusterwide, file system data cache. Both file system data caches are compatible and coexist in the OpenVMS Cluster. The XFC improves I/O performance with the following features that are not available with the virtual I/O cache:
> 
> Read-ahead caching
> Automatic resizing of the cache
> Larger maximum cache size
> No limit on the number of closed files that can be cached
> Control over the maximum size of I/O that can be cached
> Control over whether cache memory is static or dynamic
> XFC caching attributes of volume can be dynamically modified eliminating the need to dismount the volume."

So VIOC (6.0 - 7.2) did not read ahead but XFC (7.3-) does.

My doubt was wrong.

Arne






More information about the Info-vax mailing list