^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) General Filesystem Caching
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Overview
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) ========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) This facility is a general purpose cache for network filesystems, though it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) could be used for caching other things such as ISO9660 filesystems too.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) FS-Cache mediates between cache backends (such as CacheFS) and network
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) filesystems::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) +---------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) | | +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) | NFS |--+ | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) | | | +-->| CacheFS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) +---------+ | +----------+ | | /dev/hda5 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) | | | | +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) +---------+ +-->| | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) | | | |--+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) | AFS |----->| FS-Cache |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) | | | |--+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) +---------+ +-->| | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) | | | | +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) +---------+ | +----------+ | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) | | | +-->| CacheFiles |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) | ISOFS |--+ | /var/cache |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) | | +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) +---------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) Or to look at it another way, FS-Cache is a module that provides a caching
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) facility to a network filesystem such that the cache is transparent to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) user::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) +---------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) | Server |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) +---------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) | NETWORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) ~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) | +----------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) V | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) +---------+ | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) | NFS |----->| FS-Cache |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) | | | |--+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) +---------+ | | | +--------------+ +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) | | | | | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) V +----------+ +-->| CacheFiles |-->| Ext3 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) +---------+ | /var/cache | | /dev/sda6 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) | | +--------------+ +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) | VFS | ^ ^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) +---------+ +--------------+ |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) | KERNEL SPACE | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) ~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~|~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) | USER SPACE | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) V | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) +---------+ +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) | Process | | cachefilesd |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) +---------+ +--------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) FS-Cache does not follow the idea of completely loading every netfs file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) opened in its entirety into a cache before permitting it to be accessed and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) then serving the pages out of that cache rather than the netfs inode because:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) (1) It must be practical to operate without a cache.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) (2) The size of any accessible file must not be limited to the size of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) cache.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) (3) The combined size of all opened files (this includes mapped libraries)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) must not be limited to the size of the cache.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) (4) The user should not be forced to download an entire file just to do a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) one-off access of a small portion of it (such as might be done with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) "file" program).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) It instead serves the cache out in PAGE_SIZE chunks as and when requested by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) the netfs('s) using it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) FS-Cache provides the following facilities:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) (1) More than one cache can be used at once. Caches can be selected
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) explicitly by use of tags.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) (2) Caches can be added / removed at any time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) (3) The netfs is provided with an interface that allows either party to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) withdraw caching facilities from a file (required for (2)).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) (4) The interface to the netfs returns as few errors as possible, preferring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) rather to let the netfs remain oblivious.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) (5) Cookies are used to represent indices, files and other objects to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) netfs. The simplest cookie is just a NULL pointer - indicating nothing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) cached there.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) (6) The netfs is allowed to propose - dynamically - any index hierarchy it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) desires, though it must be aware that the index search function is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) recursive, stack space is limited, and indices can only be children of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) indices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) (7) Data I/O is done direct to and from the netfs's pages. The netfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) indicates that page A is at index B of the data-file represented by cookie
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) C, and that it should be read or written. The cache backend may or may
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) not start I/O on that page, but if it does, a netfs callback will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) invoked to indicate completion. The I/O may be either synchronous or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) asynchronous.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) (8) Cookies can be "retired" upon release. At this point FS-Cache will mark
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) them as obsolete and the index hierarchy rooted at that point will get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) recycled.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) (9) The netfs provides a "match" function for index searches. In addition to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) saying whether a match was made or not, this can also specify that an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) entry should be updated or deleted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) (10) As much as possible is done asynchronously.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) FS-Cache maintains a virtual indexing tree in which all indices, files, objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) and pages are kept. Bits of this tree may actually reside in one or more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) caches::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) FSDEF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) +------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) NFS AFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) +--------------------------+ +-----------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) homedir mirror afs.org redhat.com
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) +------------+ +---------------+ +----------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) | | | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 00001 00002 00007 00125 vol00001 vol00002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) | | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) +---+---+ +-----+ +---+ +------+------+ +-----+----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) | | | | | | | | | | | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) PG0 PG1 PG2 PG0 XATTR PG0 PG1 DIRENT DIRENT DIRENT R/W R/O Bak
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) PG0 +-------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 00001 00003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) +---+---+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) | | |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) PG0 PG1 PG2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) In the example above, you can see two netfs's being backed: NFS and AFS. These
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) have different index hierarchies:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) * The NFS primary index contains per-server indices. Each server index is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) indexed by NFS file handles to get data file objects. Each data file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) objects can have an array of pages, but may also have further child
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) objects, such as extended attributes and directory entries. Extended
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) attribute objects themselves have page-array contents.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) * The AFS primary index contains per-cell indices. Each cell index contains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) per-logical-volume indices. Each of volume index contains up to three
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) indices for the read-write, read-only and backup mirrors of those volumes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) Each of these contains vnode data file objects, each of which contains an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) array of pages.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) The very top index is the FS-Cache master index in which individual netfs's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) have entries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) Any index object may reside in more than one cache, provided it only has index
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) children. Any index with non-index object children will be assumed to only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) reside in one cache.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) The netfs API to FS-Cache can be found in:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) Documentation/filesystems/caching/netfs-api.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) The cache backend API to FS-Cache can be found in:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) Documentation/filesystems/caching/backend-api.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) A description of the internal representations and object state machine can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) found in:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) Documentation/filesystems/caching/object.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) Statistical Information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) If FS-Cache is compiled with the following options enabled::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) CONFIG_FSCACHE_STATS=y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) CONFIG_FSCACHE_HISTOGRAM=y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) then it will gather certain statistics and display them through a number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) proc files.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) /proc/fs/fscache/stats
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) ----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) This shows counts of a number of events that can happen in FS-Cache:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) |CLASS |EVENT |MEANING |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) +==============+=======+=======================================================+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) |Cookies |idx=N |Number of index cookies allocated |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) | |dat=N |Number of data storage cookies allocated |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) | |spc=N |Number of special cookies allocated |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) |Objects |alc=N |Number of objects allocated |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) | |nal=N |Number of object allocation failures |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) | |avl=N |Number of objects that reached the available state |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) | |ded=N |Number of objects that reached the dead state |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) |ChkAux |non=N |Number of objects that didn't have a coherency check |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) | |ok=N |Number of objects that passed a coherency check |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) | |upd=N |Number of objects that needed a coherency data update |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) | |obs=N |Number of objects that were declared obsolete |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) |Pages |mrk=N |Number of pages marked as being cached |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) | |unc=N |Number of uncache page requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) |Acquire |n=N |Number of acquire cookie requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) | |nul=N |Number of acq reqs given a NULL parent |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) | |noc=N |Number of acq reqs rejected due to no cache available |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) | |ok=N |Number of acq reqs succeeded |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) | |nbf=N |Number of acq reqs rejected due to error |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) | |oom=N |Number of acq reqs failed on ENOMEM |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) |Lookups |n=N |Number of lookup calls made on cache backends |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) | |neg=N |Number of negative lookups made |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) | |pos=N |Number of positive lookups made |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) | |crt=N |Number of objects created by lookup |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) | |tmo=N |Number of lookups timed out and requeued |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) |Updates |n=N |Number of update cookie requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) | |nul=N |Number of upd reqs given a NULL parent |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) | |run=N |Number of upd reqs granted CPU time |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) |Relinqs |n=N |Number of relinquish cookie requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) | |nul=N |Number of rlq reqs given a NULL parent |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) | |wcr=N |Number of rlq reqs waited on completion of creation |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) |AttrChg |n=N |Number of attribute changed requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) | |ok=N |Number of attr changed requests queued |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) | |nbf=N |Number of attr changed rejected -ENOBUFS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) | |oom=N |Number of attr changed failed -ENOMEM |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) | |run=N |Number of attr changed ops given CPU time |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) |Allocs |n=N |Number of allocation requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) | |ok=N |Number of successful alloc reqs |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) | |wt=N |Number of alloc reqs that waited on lookup completion |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) | |nbf=N |Number of alloc reqs rejected -ENOBUFS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) | |int=N |Number of alloc reqs aborted -ERESTARTSYS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) | |ops=N |Number of alloc reqs submitted |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) | |owt=N |Number of alloc reqs waited for CPU time |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) | |abt=N |Number of alloc reqs aborted due to object death |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) |Retrvls |n=N |Number of retrieval (read) requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) | |ok=N |Number of successful retr reqs |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) | |wt=N |Number of retr reqs that waited on lookup completion |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) | |nod=N |Number of retr reqs returned -ENODATA |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) | |nbf=N |Number of retr reqs rejected -ENOBUFS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) | |int=N |Number of retr reqs aborted -ERESTARTSYS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) | |oom=N |Number of retr reqs failed -ENOMEM |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) | |ops=N |Number of retr reqs submitted |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) | |owt=N |Number of retr reqs waited for CPU time |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) | |abt=N |Number of retr reqs aborted due to object death |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) |Stores |n=N |Number of storage (write) requests seen |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) | |ok=N |Number of successful store reqs |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) | |agn=N |Number of store reqs on a page already pending storage |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) | |nbf=N |Number of store reqs rejected -ENOBUFS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) | |oom=N |Number of store reqs failed -ENOMEM |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) | |ops=N |Number of store reqs submitted |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) | |run=N |Number of store reqs granted CPU time |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) | |pgs=N |Number of pages given store req processing time |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) | |rxd=N |Number of store reqs deleted from tracking tree |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) | |olm=N |Number of store reqs over store limit |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) |VmScan |nos=N |Number of release reqs against pages with no |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) | | |pending store |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) | |gon=N |Number of release reqs against pages stored by |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) | | |time lock granted |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) | |bsy=N |Number of release reqs ignored due to in-progress store|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) | |can=N |Number of page stores cancelled due to release req |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) |Ops |pend=N |Number of times async ops added to pending queues |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) | |run=N |Number of times async ops given CPU time |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) | |enq=N |Number of times async ops queued for processing |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) | |can=N |Number of async ops cancelled |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) | |rej=N |Number of async ops rejected due to object |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) | | |lookup/create failure |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) | |ini=N |Number of async ops initialised |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) | |dfr=N |Number of async ops queued for deferred release |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) | |rel=N |Number of async ops released |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) | | |(should equal ini=N when idle) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) | |gc=N |Number of deferred-release async ops garbage collected |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) |CacheOp |alo=N |Number of in-progress alloc_object() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) | |luo=N |Number of in-progress lookup_object() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) | |luc=N |Number of in-progress lookup_complete() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) | |gro=N |Number of in-progress grab_object() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) | |upo=N |Number of in-progress update_object() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) | |dro=N |Number of in-progress drop_object() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) | |pto=N |Number of in-progress put_object() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) | |syn=N |Number of in-progress sync_cache() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) | |atc=N |Number of in-progress attr_changed() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) | |rap=N |Number of in-progress read_or_alloc_page() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) | |ras=N |Number of in-progress read_or_alloc_pages() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) | |alp=N |Number of in-progress allocate_page() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) | |als=N |Number of in-progress allocate_pages() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) | |wrp=N |Number of in-progress write_page() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) | |ucp=N |Number of in-progress uncache_page() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) | |dsp=N |Number of in-progress dissociate_pages() cache ops |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) |CacheEv |nsp=N |Number of object lookups/creations rejected due to |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) | | |lack of space |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) | |stl=N |Number of stale objects deleted |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) | |rtr=N |Number of objects retired when relinquished |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) + +-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) | |cul=N |Number of objects culled |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) +--------------+-------+-------------------------------------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) /proc/fs/fscache/histogram
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) --------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) cat /proc/fs/fscache/histogram
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) JIFS SECS OBJ INST OP RUNS OBJ RUNS RETRV DLY RETRIEVLS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) ===== ===== ========= ========= ========= ========= =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) This shows the breakdown of the number of times each amount of time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) between 0 jiffies and HZ-1 jiffies a variety of tasks took to run. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) columns are as follows:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) ========= =======================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) COLUMN TIME MEASUREMENT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) ========= =======================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) OBJ INST Length of time to instantiate an object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) OP RUNS Length of time a call to process an operation took
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) OBJ RUNS Length of time a call to process an object event took
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) RETRV DLY Time between an requesting a read and lookup completing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) RETRIEVLS Time between beginning and end of a retrieval
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) ========= =======================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) Each row shows the number of events that took a particular range of times.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) Each step is 1 jiffy in size. The JIFS column indicates the particular
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) jiffy range covered, and the SECS field the equivalent number of seconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) Object List
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) If CONFIG_FSCACHE_OBJECT_LIST is enabled, the FS-Cache facility will maintain a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) list of all the objects currently allocated and allow them to be viewed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) through::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) /proc/fs/fscache/objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) This will look something like::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) [root@andromeda ~]# head /proc/fs/fscache/objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) OBJECT PARENT STAT CHLDN OPS OOP IPR EX READS EM EV F S | NETFS_COOKIE_DEF TY FL NETFS_DATA OBJECT_KEY, AUX_DATA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) ======== ======== ==== ===== === === === == ===== == == = = | ================ == == ================ ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) 17e4b 2 ACTV 0 0 0 0 0 0 7b 4 0 0 | NFS.fh DT 0 ffff88001dd82820 010006017edcf8bbc93b43298fdfbe71e50b57b13a172c0117f38472, e567634700000000000000000000000063f2404a000000000000000000000000c9030000000000000000000063f2404a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) 1693a 2 ACTV 0 0 0 0 0 0 7b 4 0 0 | NFS.fh DT 0 ffff88002db23380 010006017edcf8bbc93b43298fdfbe71e50b57b1e0162c01a2df0ea6, 420ebc4a000000000000000000000000420ebc4a0000000000000000000000000e1801000000000000000000420ebc4a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) where the first set of columns before the '|' describe the object:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) ======= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) COLUMN DESCRIPTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) ======= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) OBJECT Object debugging ID (appears as OBJ%x in some debug messages)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) PARENT Debugging ID of parent object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) STAT Object state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) CHLDN Number of child objects of this object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) OPS Number of outstanding operations on this object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) OOP Number of outstanding child object management operations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) IPR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) EX Number of outstanding exclusive operations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) READS Number of outstanding read operations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) EM Object's event mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) EV Events raised on this object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) F Object flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) S Object work item busy state mask (1:pending 2:running)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) ======= ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) and the second set of columns describe the object's cookie, if present:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) ================ ======================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) COLUMN DESCRIPTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) ================ ======================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) NETFS_COOKIE_DEF Name of netfs cookie definition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) TY Cookie type (IX - index, DT - data, hex - special)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) FL Cookie flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) NETFS_DATA Netfs private data stored in the cookie
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) OBJECT_KEY Object key } 1 column, with separating comma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) AUX_DATA Object aux data } presence may be configured
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) ================ ======================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) The data shown may be filtered by attaching the a key to an appropriate keyring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) before viewing the file. Something like::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) keyctl add user fscache:objlist <restrictions> @s
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) where <restrictions> are a selection of the following letters:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) == =========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) K Show hexdump of object key (don't show if not given)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) A Show hexdump of object aux data (don't show if not given)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) == =========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) and the following paired letters:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) == =========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) C Show objects that have a cookie
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) c Show objects that don't have a cookie
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) B Show objects that are busy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) b Show objects that aren't busy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) W Show objects that have pending writes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) w Show objects that don't have pending writes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) R Show objects that have outstanding reads
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) r Show objects that don't have outstanding reads
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) S Show objects that have work queued
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) s Show objects that don't have work queued
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) == =========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) If neither side of a letter pair is given, then both are implied. For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) keyctl add user fscache:objlist KB @s
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) shows objects that are busy, and lists their object keys, but does not dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) their auxiliary data. It also implies "CcWwRrSs", but as 'B' is given, 'b' is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) not implied.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) By default all objects and all fields will be shown.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) Debugging
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) If CONFIG_FSCACHE_DEBUG is enabled, the FS-Cache facility can have runtime
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) debugging enabled by adjusting the value in::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) /sys/module/fscache/parameters/debug
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) This is a bitmask of debugging streams to enable:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) ======= ======= =============================== =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) BIT VALUE STREAM POINT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) ======= ======= =============================== =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) 0 1 Cache management Function entry trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) 1 2 Function exit trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) 2 4 General
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) 3 8 Cookie management Function entry trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) 4 16 Function exit trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) 5 32 General
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) 6 64 Page handling Function entry trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) 7 128 Function exit trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) 8 256 General
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) 9 512 Operation management Function entry trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) 10 1024 Function exit trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) 11 2048 General
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) ======= ======= =============================== =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) The appropriate set of values should be OR'd together and the result written to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) the control file. For example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) echo $((1|8|64)) >/sys/module/fscache/parameters/debug
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) will turn on all function entry debugging.