| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- =================
- Writecache target
- =================
- The writecache target caches writes on persistent memory or on SSD. It
- doesn't cache reads because reads are supposed to be cached in page cache
- in normal RAM.
- When the device is constructed, the first sector should be zeroed or the
- first sector should contain valid superblock from previous invocation.
- Constructor parameters:
- 1. type of the cache device - "p" or "s"
- - p - persistent memory
- - s - SSD
- 2. the underlying device that will be cached
- 3. the cache device
- 4. block size (4096 is recommended; the maximum block size is the page
- size)
- 5. the number of optional parameters (the parameters with an argument
- count as two)
- start_sector n (default: 0)
- offset from the start of cache device in 512-byte sectors
- high_watermark n (default: 50)
- start writeback when the number of used blocks reach this
- watermark
- low_watermark x (default: 45)
- stop writeback when the number of used blocks drops below
- this watermark
- writeback_jobs n (default: unlimited)
- limit the number of blocks that are in flight during
- writeback. Setting this value reduces writeback
- throughput, but it may improve latency of read requests
- autocommit_blocks n (default: 64 for pmem, 65536 for ssd)
- when the application writes this amount of blocks without
- issuing the FLUSH request, the blocks are automatically
- committed
- autocommit_time ms (default: 1000)
- autocommit time in milliseconds. The data is automatically
- committed if this time passes and no FLUSH request is
- received
- fua (by default on)
- applicable only to persistent memory - use the FUA flag
- when writing data from persistent memory back to the
- underlying device
- nofua
- applicable only to persistent memory - don't use the FUA
- flag when writing back data and send the FLUSH request
- afterwards
- - some underlying devices perform better with fua, some
- with nofua. The user should test it
- cleaner
- when this option is activated (either in the constructor
- arguments or by a message), the cache will not promote
- new writes (however, writes to already cached blocks are
- promoted, to avoid data corruption due to misordered
- writes) and it will gradually writeback any cached
- data. The userspace can then monitor the cleaning
- process with "dmsetup status". When the number of cached
- blocks drops to zero, userspace can unload the
- dm-writecache target and replace it with dm-linear or
- other targets.
- max_age n
- specifies the maximum age of a block in milliseconds. If
- a block is stored in the cache for too long, it will be
- written to the underlying device and cleaned up.
- metadata_only
- only metadata is promoted to the cache. This option
- improves performance for heavier REQ_META workloads.
- pause_writeback n (default: 3000)
- pause writeback if there was some write I/O redirected to
- the origin volume in the last n milliseconds
- Status:
- 1. error indicator - 0 if there was no error, otherwise error number
- 2. the number of blocks
- 3. the number of free blocks
- 4. the number of blocks under writeback
- 5. the number of read blocks
- 6. the number of read blocks that hit the cache
- 7. the number of write blocks
- 8. the number of write blocks that hit uncommitted block
- 9. the number of write blocks that hit committed block
- 10. the number of write blocks that bypass the cache
- 11. the number of write blocks that are allocated in the cache
- 12. the number of write requests that are blocked on the freelist
- 13. the number of flush requests
- 14. the number of discarded blocks
- Messages:
- flush
- Flush the cache device. The message returns successfully
- if the cache device was flushed without an error
- flush_on_suspend
- Flush the cache device on next suspend. Use this message
- when you are going to remove the cache device. The proper
- sequence for removing the cache device is:
- 1. send the "flush_on_suspend" message
- 2. load an inactive table with a linear target that maps
- to the underlying device
- 3. suspend the device
- 4. ask for status and verify that there are no errors
- 5. resume the device, so that it will use the linear
- target
- 6. the cache device is now inactive and it can be deleted
- cleaner
- See above "cleaner" constructor documentation.
- clear_stats
- Clear the statistics that are reported on the status line
|