Callback File System lets you use several caches, described below.
Each CBFS storage can use either "kernel cache" or "user cache" for file data. Also the cache can be disabled by setting the FileCacheEnabled property to false. The cache is the set of memory pages, where each page contains a block of file data.
By default the cache is enabled and the kernel cache is used. Highs and lows of both cache types are:
+ It is allocated in the nonpaged (non-swappable) memory. So access to it will be maximally fast.
- Shared between all CBFS storages and has maximum size (usually about 300Mb, it depends on how many memory the computer has). In the case the maximum size is reached the least used page data is freed. Also if page data isnít used quite a long of time (currently it is 120 sec) then it is also freed.
+ The cache can be really large. Its size is specified by the CacheSize property.
+ It is shared only between CBFS storages that the current process creates and handles.
- Memory is pageable (swappable). So the operation system can swap any page data to the pagefile and the next access to this page will be slow. Although CBFS locks recently used pages from swapping, but the size of locked pages is fixed (it is about 300Mb) and the memory space used by locked pages is shared between all CBFS storages with operating user mode cache that the CBFS driver handles.