FancyCache User Guide

FancyCache has two editions: FancyCache For Volumes and FancyCache For Disks. The only difference between them is that the former is aimed at volumes (logical drives) while the latter at the entire disks (physical drives).

User Interface

The main user interface is divided into four areas as below,

FancyCache User Guide, Main UI

Area ①: the list of volumes/disks
Area ②: cache configurations of the specified volume/disk
Area ③: cache status of the specified volume/disk
Area ④: memory control & information

Terms

Block Size: the granularity of the cache. Smaller value brings higher performance however increases cache overhead. The program gives a recommended value according to the capacity of volume/disk.

Cache Size: the total amount of physical memory allocated as the main cache.

Algorithm: cache algorithm that chooses which blocks to discard to make room for the new data when the cache is full.

  • LRU (Least Recently Used): discards the least recently used data first.
  • LFU (Least Frequently Used): counts how often a data block is needed. Those that are used least often are discarded first.

Caching Strategy: caching strategy chooses what data to be cached. An appropriate strategy can improve the cache hit rate.

  • Read/Write: caches both read data and write data.
  • Read-Only: caches read data only.
  • Write-Only: caches write data only.

Defer-Write: when a datum is written to the cache, it must at some point be written to the disk/volume as well. Generally every write to the cache will cause a synchronous write to the disk/volume. However, if Defer-Write is enabled, writes are not immediately mirrored to the disk/volume. Instead, the cache tracks dirty data and write back to the disk/volume later. Note: when Defer-Write is enabled, a power outage or system failure might result in data loss or corruption.

  • Release After Write: after the deferred data are written to the disk/volume, the cache holding these data is arranged to be discarded first.
  • No Write-Flush At Shutdown: if ticked, the deferred write data in cache will NOT be flushed to the volume/disk at computer shutdown. This option is designed for the special scenarios. Do NOT tick it if you don't understand, otherwise it might cause data loss.
  • Averaging Write Amount: by default, all current deferred write data are started to flush to the disk/volume at the exact time when latency expires. However if this option is ticked, current deferred write data are averagely flushed across the latency period. This option is designed to prevent large burst write in some scenarios. Usually users don't need to tick it.
  • Overcome HDD C1 Issue: C1 value on some mechanical hard disks, especially laptop disks, may increase quickly when Defer-Write is enabled. This option is designed to avoid such issue. SSD users can disable this option for better performance.
    Tips: here HDD "C1" refers to "Load/Unload Cycle Count" which is the number of head parking cycles. For more details, please see here.

Level-2 Cache: uses OS Invisible Memory or SSD/Flash/Other device as a secondary cache medium, supplementary to the system memory (L1 Cache). The access speed of system memory is higher than the OS Invisible Memory or SSD/Flash/Other device. The data are cached on system memory first. When the L1 Cache is full, some data are transferred to the L2 Cache. Note: There might be a large number of swap data written to the cache, while SSD/Flash devices have limited write-cycle lifespan. Users shall notice this before decide to use SSD/Flash devices as Level-2 cache.

  • MBU (Maximum Block Usage): This L2 algorithm is to achieve the better cache capacity combined with L1 cache. When the L2 cache is full, the algorithm discards/replaces the data in L2 cache.
  • LBW (Least Block Written): This L2 alogrithm is to achieve the least data written. When the L2 cache is full, the data in L2 cache will not be replaced. This algorithm is designed for SSD drive because of the write-cycle lifespan. Note: Although there's no replacement in L2 cache, L1 cache keeps replacement while full.
FancyCache Level II Cache

Operations

How to Enable Invisible Memory

To use Invisible Memory, users need to globally enable it first. Tick the checkbox “Enable OS Invisible Memory” in area ④. The program then shows the detected memory information.

Note: since version 0.7.0, FancyCache introduces a new interface to manage Invisible Memory, which is called Unified Invisible Memory Management Interface. For detailed information about this interface, please click here.

For more details on Invisible Memory, see Invisible Memory.

How To Activate Caching

Step 1: In area ①, select the target to be cached.
Step 2: In area ②, set the cache configurations.
Step 3: In area ②, click “Start Caching” button to activate caching. If successful, the program shows caching status in area ③.
After the caching is activated, it works continously and startup automatically whether users exit the program or reboot the computer. So users don't need to manually run the program after the reboot.
To stop caching, click “Stop Caching” button. If the caching is stopped, all the cached data is freed.
To pause caching, click "Pause Caching" button. If the caching is paused, the cached data is kept.

How To Flush Deferred Write Data Manually

If Defer Write is enabled, program automatically flush deferred write data to volume/disk according to the latency and other algorithm. User can also manually flush write data to volume/disk if necessary.

Step 1: In area ①, select the target.
Step 2: In area ②, click “Flush Write” button to flush deferred write data to volume/disk.

How To View Status & Performance Statistics

Step 1: In area ①, select the target that has been activated.
Step 2: In area ③, the program shows the current cache status.
Step 3: In area ③, click “Performance Monitor” button to view statistics data.
Note: the statistics starts when performance dialog shows and stops when dialog exits.

FancyCache performance statistics

L1 Cache Hit Rate = Read Bytes (Cached) / Read Bytes (Total) * 100%, where
Read Bytes (Cached) is the total bytes read from L1 Cache and L2 Cache, and
Read Bytes (Total) is the total bytes read, including from L1 Cahce, L2 Cache and volume/disk.