Mike, I was doing some testing with latest dm-cache code (from 'for-next' branch). I am having difficulty in making the cache to warm-up. I used the below script to read range of blocks repeatedly to get them promoted. I assume after reading
a block for mq->promote_threshold + 4 times, a block will be promoted. But it is not happening. I also tested the same with the sequential_threshold set to very high value.
Cache warming-up was relatively easier in the previous dm-cache code. Is this something you have seen in your testing?. Is there anything different should I do? Note: /dev/mapper/mydev is the dm-cache target device. I ran the below script with “64k 100 100 0” as argument. ----------- #!/bin/bash if [[ $# -lt 4 ]] then echo "Usage: $0 <cache_block_size> <nblocks to promote> <nread of a block> <start_block>" exit 1 fi BSSIZE=$1 ((TOTAL=$2+$4)) HITCNT=$3 # Read even numbered blocks blkcnt=$4 while [[ blkcnt -lt $TOTAL ]] do i=0 echo "Reading block $blkcnt $HITCNT times" while [[ $i -lt $HITCNT ]] do dd if=/dev/mapper/mydev of=/dev/null bs=$BSSIZE skip=$blkcnt count=1 conv=notrunc iflag=direct 2> /dev/null if [[ $? -ne 0 ]] then echo "I/O failure. exiting." exit 1 fi ((i=i+1)) done ((blkcnt=blkcnt+2)) PROMOTED=$(dmsetup status mydev | awk '{print $11}') echo "Promoted blocks so far: $PROMOTED" done # Read odd numbered blocks ((blkcnt=$4+1)) while [[ blkcnt -lt $TOTAL ]] do i=0 echo "Reading block $blkcnt $HITCNT times" while [[ $i -lt $HITCNT ]] do dd if=/dev/mapper/mydev of=/dev/null bs=$BSSIZE skip=$blkcnt count=1 conv=notrunc iflag=direct 2> /dev/null if [[ $? -ne 0 ]] then echo "I/O failure. exiting." exit 1 fi ((i=i+1)) done ((blkcnt=blkcnt+2)) PROMOTED=$(dmsetup status mydev | awk '{print $11}') echo "Promoted blocks so far: $PROMOTED" done ------------ Regards, Somu. -----Original Message----- The following patches have been published to the 'for-next' branch of the device-mapper git repository: git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git The patches marked as RFC (19-24) could use the most review. But all review would be appreciated. Thanks, Mike Heinz Mauelshagen (11): dm cache policy mq: return NULL if mq->free list is empty in alloc_entry dm cache policy: variable hints support dm cache policy: have policy_writeback_work return -ENODATA by default dm cache: use is_write_io() in more places dm cache: use cell_defer() boolean argument consistently dm cache: log error message if dm_kcopyd_copy() fails dm cache: use a boolean when setting cache->quiescing dm cache: optimize commit_if_needed dm cache: add hints policy dm cache: add cache block invalidation API dm cache policy era: add cache block invalidation support Joe Thornber (9): dm: nest targets used for testing under DM_TEST_TARGETS dm space map disk: optimise sm_disk_dec_block dm cache policy: remove return from void policy_remove_mapping dm cache policy mq: a few small fixes dm cache policy mq: implement writeback_work() and mq_{set,clear}_dirty() dm cache: be much more aggressive about promoting writes to discarded blocks dm cache metadata: return bool from __superblock_all_zeroes dm cache metadata: check the metadata version when reading the superblock dm cache: add passthrough mode Mike Snitzer (1): dm table: print error on preresume failure Morgan Mears (3): dm cache: support for stackable caching policies dm cache: add era policy shim dm cache: add trc policy shim drivers/md/Kconfig | 68 ++- drivers/md/Makefile | 9 +- drivers/md/dm-cache-metadata.c | 189 +++++- drivers/md/dm-cache-metadata.h | 28 +- drivers/md/dm-cache-policy-cleaner.c | 10 +- drivers/md/dm-cache-policy-era.c | 542 +++++++++++++++++ drivers/md/dm-cache-policy-hints.c | 769 +++++++++++++++++++++++++ drivers/md/dm-cache-policy-internal.h | 31 +- drivers/md/dm-cache-policy-mq.c | 343 ++++++++--- drivers/md/dm-cache-policy-trc.c | 263 +++++++++ drivers/md/dm-cache-policy.c | 66 ++- drivers/md/dm-cache-policy.h | 77 ++- drivers/md/dm-cache-shim-utils.c | 217 +++++++ drivers/md/dm-cache-shim-utils.h | 73 +++ drivers/md/dm-cache-stack-utils.c | 239 ++++++++ drivers/md/dm-cache-stack-utils.h | 34 ++ drivers/md/dm-cache-target.c | 417 ++++++++++++-- drivers/md/dm-table.c | 5 +- drivers/md/persistent-data/dm-space-map-disk.c | 18 +- 19 files changed, 3167 insertions(+), 231 deletions(-) create mode 100644 drivers/md/dm-cache-policy-era.c create mode 100644 drivers/md/dm-cache-policy-hints.c create mode 100644 drivers/md/dm-cache-policy-trc.c create mode 100644 drivers/md/dm-cache-shim-utils.c create mode 100644 drivers/md/dm-cache-shim-utils.h create mode 100644 drivers/md/dm-cache-stack-utils.c create mode 100644 drivers/md/dm-cache-stack-utils.h -- 1.8.1.4 -- dm-devel mailing list |
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel