<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 20, 2018 at 9:45 AM, Sam McLeod <span dir="ltr">&lt;<a href="mailto:mailinglists@smcleod.net" target="_blank">mailinglists@smcleod.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">Excellent description, thank you.<div><br></div><div>With performance.write-behind-<wbr>trickling-writes ON (default):</div><div><br></div><div>## 4k randwrite</div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><div><br></div><div><div><font face="IBMPlexMono"># fio --randrepeat=1 --ioengine=libaio --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=32 --size=256MB --readwrite=randwrite</font></div><div><font face="IBMPlexMono">test: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=32</font></div><div><font face="IBMPlexMono">fio-3.1</font></div><div><font face="IBMPlexMono">Starting 1 process</font></div><div><font face="IBMPlexMono">Jobs: 1 (f=1): [w(1)][100.0%][r=0KiB/s,w=17.<wbr>3MiB/s][r=0,w=4422 IOPS][eta 00m:00s]</font></div><div><font face="IBMPlexMono">test: (groupid=0, jobs=1): err= 0: pid=42701: Tue Mar 20 15:05:23 2018</font></div><div><font face="IBMPlexMono">  write: <b>IOPS=4443</b>, <b>BW=17.4MiB/s</b> (18.2MB/s)(256MiB/14748msec)</font></div><div><font face="IBMPlexMono">   bw (  KiB/s): min=16384, max=19184, per=99.92%, avg=17760.45, stdev=602.48, samples=29</font></div><div><font face="IBMPlexMono">   iops        : min= 4096, max= 4796, avg=4440.07, stdev=150.66, samples=29</font></div><div><font face="IBMPlexMono">  cpu          : usr=4.00%, sys=18.02%, ctx=131097, majf=0, minf=7</font></div><div><font face="IBMPlexMono">  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     issued rwt: total=0,65536,0, short=0,0,0, dropped=0,0,0</font></div><div><font face="IBMPlexMono">     latency   : target=0, window=0, percentile=100.00%, depth=32</font></div><div><font face="IBMPlexMono"><br></font></div><div><font face="IBMPlexMono">Run status group 0 (all jobs):</font></div><div><font face="IBMPlexMono">  WRITE: bw=17.4MiB/s (18.2MB/s), 17.4MiB/s-17.4MiB/s (18.2MB/s-18.2MB/s), io=256MiB (268MB), run=14748-14748msec</font></div><div><br></div><div><br></div><div>## 2k randwrite</div><div><br class="m_-8562498550063046199webkit-block-placeholder"></div><div>
<div><font face="IBMPlexMono"># fio --randrepeat=1 --ioengine=libaio --gtod_reduce=1 --name=test --filename=test --bs=2k --iodepth=32 --size=256MB --readwrite=randwrite</font></div><div><font face="IBMPlexMono">test: (g=0): rw=randwrite, bs=(R) 2048B-2048B, (W) 2048B-2048B, (T) 2048B-2048B, ioengine=libaio, iodepth=32</font></div><div><font face="IBMPlexMono">fio-3.1</font></div><div><font face="IBMPlexMono">Starting 1 process</font></div><div><font face="IBMPlexMono">Jobs: 1 (f=1): [w(1)][100.0%][r=0KiB/s,w=<wbr>8624KiB/s][r=0,w=4312 IOPS][eta 00m:00s]</font></div><div><font face="IBMPlexMono">test: (groupid=0, jobs=1): err= 0: pid=42781: Tue Mar 20 15:05:57 2018</font></div><div><font face="IBMPlexMono">  write: <b>IOPS=4439, BW=8880KiB/s</b> (9093kB/s)(256MiB/29522msec)</font></div><div><font face="IBMPlexMono">   bw (  KiB/s): min= 6908, max= 9564, per=99.94%, avg=8874.03, stdev=428.92, samples=59</font></div><div><font face="IBMPlexMono">   iops        : min= 3454, max= 4782, avg=4437.00, stdev=214.44, samples=59</font></div><div><font face="IBMPlexMono">  cpu          : usr=2.43%, sys=18.18%, ctx=262222, majf=0, minf=8</font></div><div><font face="IBMPlexMono">  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     issued rwt: total=0,131072,0, short=0,0,0, dropped=0,0,0</font></div><div><font face="IBMPlexMono">     latency   : target=0, window=0, percentile=100.00%, depth=32</font></div><div><font face="IBMPlexMono"><br></font></div><div><font face="IBMPlexMono">Run status group 0 (all jobs):</font></div><div><font face="IBMPlexMono">  WRITE: bw=8880KiB/s (9093kB/s), 8880KiB/s-8880KiB/s (9093kB/s-9093kB/s), io=256MiB (268MB), run=29522-29522msec</font></div><div><br></div><div><br></div><div><div>With performance.write-behind-<wbr>trickling-writes OFF:</div><div><br></div><div>## 4k randwrite - just over half the IOP/s of having it ON.</div></div></div></div></div></blockquote><div><br></div><div>Note that since the workload is random write, no aggregation is possible. So, there is no point in waiting for future writes and turning trickling-writes on makes sense.</div><div><br></div><div>A better test to measure the impact of this option would be sequential write workload. I guess smaller the writes, more pronounced one would see the benefits of this option turned off.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><div><div><div><br></div><div><br></div><div><div><font face="IBMPlexMono"># fio --randrepeat=1 --ioengine=libaio --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=32 --size=256MB --readwrite=randwrite</font></div><div><font face="IBMPlexMono">test: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=32</font></div><div><font face="IBMPlexMono">fio-3.1</font></div><div><font face="IBMPlexMono">Starting 1 process</font></div><div><font face="IBMPlexMono">Jobs: 1 (f=1): [f(1)][100.0%][r=0KiB/s,w=<wbr>0KiB/s][r=0,w=0 IOPS][eta 00m:00s]</font></div><div><font face="IBMPlexMono">test: (groupid=0, jobs=1): err= 0: pid=44225: Tue Mar 20 15:11:04 2018</font></div><div><font face="IBMPlexMono">  write: <b>IOPS=2594, BW=10.1MiB/s</b> (10.6MB/s)(256MiB/25259msec)</font></div><div><font face="IBMPlexMono">   bw (  KiB/s): min= 2248, max=18728, per=100.00%, avg=10454.10, stdev=6481.14, samples=50</font></div><div><font face="IBMPlexMono">   iops        : min=  562, max= 4682, avg=2613.50, stdev=1620.35, samples=50</font></div><div><font face="IBMPlexMono">  cpu          : usr=2.29%, sys=10.09%, ctx=131141, majf=0, minf=7</font></div><div><font face="IBMPlexMono">  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     issued rwt: total=0,65536,0, short=0,0,0, dropped=0,0,0</font></div><div><font face="IBMPlexMono">     latency   : target=0, window=0, percentile=100.00%, depth=32</font></div><div><font face="IBMPlexMono"><br></font></div><div><font face="IBMPlexMono">Run status group 0 (all jobs):</font></div><div><font face="IBMPlexMono">  WRITE: bw=10.1MiB/s (10.6MB/s), 10.1MiB/s-10.1MiB/s (10.6MB/s-10.6MB/s), io=256MiB (268MB), run=25259-25259msec</font></div><div><br></div><div><br></div><div>## 2k randwrite - no noticable change.</div><div><br></div><div><div><font face="IBMPlexMono"># fio --randrepeat=1 --ioengine=libaio --gtod_reduce=1 --name=test --filename=test --bs=2k --iodepth=32 --size=256MB --readwrite=randwrite</font></div><div><font face="IBMPlexMono">test: (g=0): rw=randwrite, bs=(R) 2048B-2048B, (W) 2048B-2048B, (T) 2048B-2048B, ioengine=libaio, iodepth=32</font></div><div><font face="IBMPlexMono">fio-3.1</font></div><div><font face="IBMPlexMono">Starting 1 process</font></div><div><font face="IBMPlexMono">Jobs: 1 (f=1): [w(1)][100.0%][r=0KiB/s,w=<wbr>8662KiB/s][r=0,w=4331 IOPS][eta 00m:00s]</font></div><div><font face="IBMPlexMono">test: (groupid=0, jobs=1): err= 0: pid=45813: Tue Mar 20 15:12:02 2018</font></div><div><font face="IBMPlexMono">  write: <b>IOPS=4291, BW=8583KiB/s</b> (8789kB/s)(256MiB/30541msec)</font></div><div><font face="IBMPlexMono">   bw (  KiB/s): min= 7416, max=10264, per=99.94%, avg=8577.66, stdev=618.31, samples=61</font></div><div><font face="IBMPlexMono">   iops        : min= 3708, max= 5132, avg=4288.84, stdev=309.15, samples=61</font></div><div><font face="IBMPlexMono">  cpu          : usr=2.87%, sys=15.83%, ctx=262236, majf=0, minf=8</font></div><div><font face="IBMPlexMono">  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, &gt;=64=0.0%</font></div><div><font face="IBMPlexMono">     issued rwt: total=0,131072,0, short=0,0,0, dropped=0,0,0</font></div><div><font face="IBMPlexMono">     latency   : target=0, window=0, percentile=100.00%, depth=32</font></div><div><font face="IBMPlexMono"><br></font></div><div><font face="IBMPlexMono">Run status group 0 (all jobs):</font></div><div><font face="IBMPlexMono">  WRITE: bw=8583KiB/s (8789kB/s), 8583KiB/s-8583KiB/s (8789kB/s-8789kB/s), io=256MiB (268MB), run=30541-30541msec</font></div></div><div><br></div><div><br></div><div>Let me know if you&#39;d recommend any other benchmarks comparing performance.write-<wbr>behind-trickling-writes ON/OFF (just nothing that&#39;ll seriously risk locking up the whole gluster cluster please!).</div><div><br></div><div><br></div></div><span class="">--<br>Sam McLeod<br>Please respond via email when possible.<br><a href="https://smcleod.net" target="_blank">https://smcleod.net</a><br><a href="https://twitter.com/s_mcleod" target="_blank">https://twitter.com/s_mcleod</a>

</span></div><div><div class="h5">
<div><br><blockquote type="cite"><div>On 20 Mar 2018, at 2:56 pm, Raghavendra Gowdappa &lt;<a href="mailto:rgowdapp@redhat.com" target="_blank">rgowdapp@redhat.com</a>&gt; wrote:</div><br class="m_-8562498550063046199Apple-interchange-newline"><div><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 20, 2018 at 8:57 AM, Sam McLeod <span dir="ltr">&lt;<a href="mailto:mailinglists@smcleod.net" target="_blank">mailinglists@smcleod.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Hi Raghavendra,<div><br></div><div><br></div><div><span class="m_-8562498550063046199gmail-"><div></div><blockquote type="cite"><div><font>On 20 Mar 2018, at 1:55 pm, Raghavendra Gowdappa &lt;<a href="mailto:rgowdapp@redhat.com" target="_blank">rgowdapp@redhat.com</a>&gt; wrote:</font></div><div><div class="gmail_quote"><div><font><br></font></div><div><font>Aggregating large number of small writes by write-behind into large writes has been merged on master:<br></font></div><div><a href="https://github.com/gluster/glusterfs/issues/364" target="_blank"><font>https://github.com/gluster/glu<wbr>sterfs/issues/364</font></a></div><div><font><br></font></div><div><font>Would like to know whether it helps for this usecase. Note that its not part of any release yet. So you&#39;ve to build and install from repo.</font></div></div></div></blockquote><div><br></div></span>Sounds interesting, not too keen to build packages at the moment but I&#39;ve added myself as a watcher to that issue on Github and once it&#39;s in a 3.x release I&#39;ll try it and let you know.<span class="m_-8562498550063046199gmail-"><br><br><blockquote type="cite"><div><div class="gmail_quote"><div><font>Another suggestion is to run tests with turning off option performance.write-behind-trick<wbr>ling-writes.</font></div><div><font><br></font></div><div><font># gluster volume set &lt;volname&gt; performance.write-behind-trick<wbr>ling-writes off<br></font></div><div><font><br></font></div><div><font>A word of caution though is if your files are too small, these suggestions may not have much impact.</font></div></div></div></blockquote></span><div><div class="gmail_quote"><div><br></div><div>I&#39;m looking for documentation on this option but all I could really find is in the source for write-behind.c:</div><div><br></div><div>if is enabled (which it is), do not hold back writes if there are no outstanding requests.</div></div></div></div></div></blockquote><div><br></div><div>Till recently this functionality though was available, couldn&#39;t be configured from cli. One could change this option by editing volume configuration file. However, now its configurable through cli:</div><div><br></div><div><a href="https://review.gluster.org/#/c/18719/" target="_blank">https://review.gluster.org/#/<wbr>c/18719/</a><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div><div class="gmail_quote"><div><br></div><div><br></div><div>and a note on aggregate-size stating that </div><div><div><br></div><div><i>&quot;aggregation won&#39;t happen if performance.write-behind-trick<wbr>ling-writes is turned on&quot;</i></div><div><br></div><div><br></div><div>What are the potentially negative performance impacts of disabling this?</div></div></div></div></div></div></blockquote><div><br></div><div>Even if aggregation option is turned off, write-behind has the capacity to aggregate till a size of 128KB. But, to completely make use of this in case of small write workloads write-behind has to wait for sometime so that there are enough number of write-requests to fill the capacity. With this option enabled, write-behind though aggregates existing requests, won&#39;t wait for future writes. This means descendant xlators of write-behind can see writes smaller than 128K. So, for a scenario where small number of large writes are preferred over large number of small sized writes, this can be a problem.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><span class="m_-8562498550063046199gmail-"><div><br><div>
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div dir="auto"><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">--<br>Sam McLeod (protoporpoise on IRC)</div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="https://smcleod.net/" target="_blank">https://smcleod.net</a><br><a href="https://twitter.com/s_mcleod" target="_blank">https://twitter.com/s_mcleod</a><br><br>Words are my own opinions and do not necessarily represent those of my employer or partners.</div></div></div></div>
</div>

<div><br></div></div></span></div></blockquote></div><br></div></div>
</div></blockquote></div><br></div></div></div></div></blockquote></div><br></div></div>