<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Latha;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:Latha;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri","sans-serif";}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoPlainText">Mike,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">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.
<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">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?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Note: /dev/mapper/mydev is the dm-cache target device. I ran the below script with “64k 100 100 0” as argument.<o:p></o:p></p>
<p class="MsoPlainText">-----------<o:p></o:p></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">#!/bin/bash<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">if [[ $# -lt 4 ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">then<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> echo "Usage: $0 <cache_block_size> <nblocks to promote> <nread of a block> <start_block>"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> exit 1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">fi<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">BSSIZE=$1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">((TOTAL=$2+$4))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">HITCNT=$3<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""># Read even numbered blocks<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">blkcnt=$4<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">while [[ blkcnt -lt $TOTAL ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> i=0<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> echo "Reading block $blkcnt $HITCNT times"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> while [[ $i -lt $HITCNT ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> dd if=/dev/mapper/mydev of=/dev/null bs=$BSSIZE skip=$blkcnt count=1 conv=notrunc iflag=direct 2> /dev/null<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> if [[ $? -ne 0 ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> then<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> echo "I/O failure. exiting."<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> exit 1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> fi<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> ((i=i+1))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> done<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> ((blkcnt=blkcnt+2))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> PROMOTED=$(dmsetup status mydev | awk '{print $11}')<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> echo "Promoted blocks so far: $PROMOTED"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">done<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""># Read odd numbered blocks<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">((blkcnt=$4+1))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">while [[ blkcnt -lt $TOTAL ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> i=0<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> echo "Reading block $blkcnt $HITCNT times"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> while [[ $i -lt $HITCNT ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> dd if=/dev/mapper/mydev of=/dev/null bs=$BSSIZE skip=$blkcnt count=1 conv=notrunc iflag=direct 2> /dev/null<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> if [[ $? -ne 0 ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> then<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> echo "I/O failure. exiting."<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> exit 1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> fi<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> ((i=i+1))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> done<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> ((blkcnt=blkcnt+2))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> PROMOTED=$(dmsetup status mydev | awk '{print $11}')<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""> echo "Promoted blocks so far: $PROMOTED"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">done<o:p></o:p></span></p>
<p class="MsoPlainText">------------<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Regards,<o:p></o:p></p>
<p class="MsoPlainText">Somu.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">-----Original Message-----<br>
From: dm-devel-bounces@redhat.com [mailto:dm-devel-bounces@redhat.com] On Behalf Of Mike Snitzer<br>
Sent: Thursday, October 24, 2013 1:30 PM<br>
To: dm-devel@redhat.com<br>
Cc: Mears, Morgan; Heinz Mauelshagen; Joe Thornber; Mike Snitzer<br>
Subject: [dm-devel] [PATCH 00/24] dm cache: proposed changes for v3.13 merge</p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">The following patches have been published to the 'for-next' branch of the device-mapper git repository:<o:p></o:p></p>
<p class="MsoPlainText">git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">The patches marked as RFC (19-24) could use the most review. But all review would be appreciated.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks,<o:p></o:p></p>
<p class="MsoPlainText">Mike<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Heinz Mauelshagen (11):<o:p></o:p></p>
<p class="MsoPlainText"> dm cache policy mq: return NULL if mq->free list is empty in alloc_entry<o:p></o:p></p>
<p class="MsoPlainText"> dm cache policy: variable hints support<o:p></o:p></p>
<p class="MsoPlainText"> dm cache policy: have policy_writeback_work return -ENODATA by default<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: use is_write_io() in more places<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: use cell_defer() boolean argument consistently<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: log error message if dm_kcopyd_copy() fails<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: use a boolean when setting cache->quiescing<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: optimize commit_if_needed<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: add hints policy<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: add cache block invalidation API<o:p></o:p></p>
<p class="MsoPlainText"> dm cache policy era: add cache block invalidation support<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Joe Thornber (9):<o:p></o:p></p>
<p class="MsoPlainText"> dm: nest targets used for testing under DM_TEST_TARGETS<o:p></o:p></p>
<p class="MsoPlainText"> dm space map disk: optimise sm_disk_dec_block<o:p></o:p></p>
<p class="MsoPlainText"> dm cache policy: remove return from void policy_remove_mapping<o:p></o:p></p>
<p class="MsoPlainText"> dm cache policy mq: a few small fixes<o:p></o:p></p>
<p class="MsoPlainText"> dm cache policy mq: implement writeback_work() and mq_{set,clear}_dirty()<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: be much more aggressive about promoting writes to discarded blocks<o:p></o:p></p>
<p class="MsoPlainText"> dm cache metadata: return bool from __superblock_all_zeroes<o:p></o:p></p>
<p class="MsoPlainText"> dm cache metadata: check the metadata version when reading the superblock<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: add passthrough mode<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Mike Snitzer (1):<o:p></o:p></p>
<p class="MsoPlainText"> dm table: print error on preresume failure<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Morgan Mears (3):<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: support for stackable caching policies<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: add era policy shim<o:p></o:p></p>
<p class="MsoPlainText"> dm cache: add trc policy shim<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">drivers/md/Kconfig | 68 ++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/Makefile | 9 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-metadata.c | 189 +++++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-metadata.h | 28 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-cleaner.c | 10 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-era.c | 542 +++++++++++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-hints.c | 769 +++++++++++++++++++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-internal.h | 31 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-mq.c | 343 ++++++++---<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-trc.c | 263 +++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy.c | 66 ++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy.h | 77 ++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-shim-utils.c | 217 +++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-shim-utils.h | 73 +++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-stack-utils.c | 239 ++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-stack-utils.h | 34 ++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-target.c | 417 ++++++++++++--<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-table.c | 5 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/persistent-data/dm-space-map-disk.c | 18 +-<o:p></o:p></p>
<p class="MsoPlainText">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<o:p></o:p></p>
<p class="MsoPlainText">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<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">--<o:p></o:p></p>
<p class="MsoPlainText">1.8.1.4<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">--<o:p></o:p></p>
<p class="MsoPlainText">dm-devel mailing list<o:p></o:p></p>
<p class="MsoPlainText"><a href="mailto:dm-devel@redhat.com"><span style="color:windowtext;text-decoration:none">dm-devel@redhat.com</span></a><o:p></o:p></p>
<p class="MsoPlainText"><a href="https://www.redhat.com/mailman/listinfo/dm-devel"><span style="color:windowtext;text-decoration:none">https://www.redhat.com/mailman/listinfo/dm-devel</span></a><o:p></o:p></p>
</div>
</body>
</html>