Paging, cache, nocache I/O

Hi All.
Are the following statements correct:

  1. Paging I/O: generated by Memory Manager only, transferring data between Mm and disk;

  2. cache I/O: generated by normal applications, transferring data between apps and cache manager.

  3. Nocache I/O: generated by normal applications, transferring data between apps and disk.

  4. cache I/O will eventually work with paging I/O for exchanging data between apps and disk.

  5. apps cannot generate paging I/O, and can only generate cache or nocache I/O.

If anything wrong, please point them out. Thanks very much.

  1. Cache mgr can also generate paging IO

Pete


Kernel Drivers
Windows File System and Device Driver Consulting
www.KernelDrivers.com
866.263.9295

------ Original Message ------
From: xxxxx@gmail.com
To: “Windows File Systems Devs Interest List”
Sent: 7/25/2017 12:04:56 PM
Subject: [ntfsd] Paging, cache, nocache I/O

>Hi All.
>Are the following statements correct:
>
>1) Paging I/O: generated by Memory Manager only, transferring data
>between Mm and disk;
>
>2) cache I/O: generated by normal applications, transferring data
>between apps and cache manager.
>
>3) Nocache I/O: generated by normal applications, transferring data
>between apps and disk.
>
>4) cache I/O will eventually work with paging I/O for exchanging data
>between apps and disk.
>
>5) apps cannot generate paging I/O, and can only generate cache or
>nocache I/O.
>
>
>If anything wrong, please point them out. Thanks very much.
>
>
>—
>NTFSD is sponsored by OSR
>
>
>MONTHLY seminars on crash dump analysis, WDF, Windows internals and
>software drivers!
>Details at http:
>
>To unsubscribe, visit the List Server section of OSR Online at
>http:</http:></http:>

Assuming you really mean generate and not provoke, and modulo Pete’s
observation about Cc being able to do paging writes (I think it relies on Mm
for reads, but I’m not sure) that’s broadly correct.

Remember that drivers can generate paging IO - it’s well documented even if
the behaviours required prior to generating the IO are not (even slightly).

Remember too that MJ_SET_INFO can be paging (and sourced from Cc and Mm).

Generally all the assumptions are valid. You already know that drivers can initiate paging IO without the Memory Manager involvement.

You can add to the list an IO by memory mapping a file which involves only the Memory Manager and excludes the Cache Manager. In that case paging IO is not preceded by non-paging IO( “cached” in your parlance ).

Nevertheless, there is something to add

  • A file system driver calls the Cache Manager. Applications do not interact with the Cache Manager.
  • Applications interact directly with the Memory Manager for memory mapped file IO.
  • A file system driver can use cache for non-cached IO ( in addition should be non-paging). Non-cached IO is an advice to a file system driver. The driver can ignore it.

Thanks for all your replies.
Now things are more clear.

This reply got dropped. Resending for completeness, but apologies if a
duplicate

Remember too that MJ_SET_INFO can be paging (and sourced from Cc and Mm).