<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 27, 2016 at 2:38 PM, Manoj Pillai <span dir="ltr">&lt;<a href="mailto:mpillai@redhat.com" target="_blank">mpillai@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
----- Original Message -----<br>
&gt; From: &quot;Raghavendra Gowdappa&quot; &lt;<a href="mailto:rgowdapp@redhat.com">rgowdapp@redhat.com</a>&gt;<br>
&gt; To: &quot;Pranith Kumar Karampuri&quot; &lt;<a href="mailto:pkarampu@redhat.com">pkarampu@redhat.com</a>&gt;<br>
&gt; Cc: &quot;Gluster Devel&quot; &lt;<a href="mailto:gluster-devel@gluster.org">gluster-devel@gluster.org</a>&gt;<br>
</span><div><div class="h5">&gt; Sent: Monday, June 27, 2016 12:48:49 PM<br>
&gt; Subject: Re: [Gluster-devel] performance issues Manoj found in EC testing<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; ----- Original Message -----<br>
&gt; &gt; From: &quot;Pranith Kumar Karampuri&quot; &lt;<a href="mailto:pkarampu@redhat.com">pkarampu@redhat.com</a>&gt;<br>
&gt; &gt; To: &quot;Xavier Hernandez&quot; &lt;<a href="mailto:xhernandez@datalab.es">xhernandez@datalab.es</a>&gt;<br>
&gt; &gt; Cc: &quot;Gluster Devel&quot; &lt;<a href="mailto:gluster-devel@gluster.org">gluster-devel@gluster.org</a>&gt;<br>
&gt; &gt; Sent: Monday, June 27, 2016 12:42:35 PM<br>
&gt; &gt; Subject: Re: [Gluster-devel] performance issues Manoj found in EC testing<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Mon, Jun 27, 2016 at 11:52 AM, Xavier Hernandez &lt; <a href="mailto:xhernandez@datalab.es">xhernandez@datalab.es</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Hi Manoj,<br>
&gt; &gt;<br>
&gt; &gt; I always enable client-io-threads option for disperse volumes. It improves<br>
&gt; &gt; performance sensibly, most probably because of the problem you have<br>
&gt; &gt; detected.<br>
&gt; &gt;<br>
&gt; &gt; I don&#39;t see any other way to solve that problem.<br>
&gt; &gt;<br>
&gt; &gt; I agree. Updated the bug with same info.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; I think it would be a lot better to have a true thread pool (and maybe an<br>
&gt; &gt; I/O<br>
&gt; &gt; thread pool shared by fuse, client and server xlators) in libglusterfs<br>
&gt; &gt; instead of the io-threads xlator. This would allow each xlator to decide<br>
&gt; &gt; when and what should be parallelized in a more intelligent way, since<br>
&gt; &gt; basing<br>
&gt; &gt; the decision solely on the fop type seems too simplistic to me.<br>
&gt; &gt;<br>
&gt; &gt; In the specific case of EC, there are a lot of operations to perform for a<br>
&gt; &gt; single high level fop, and not all of them require the same priority. Also<br>
&gt; &gt; some of them could be executed in parallel instead of sequentially.<br>
&gt; &gt;<br>
&gt; &gt; I think it is high time we actually schedule(for which release) to get this<br>
&gt; &gt; in gluster. May be you should send out a doc where we can work out details?<br>
&gt; &gt; I will be happy to explore options to integrate io-threads, syncop/barrier<br>
&gt; &gt; with this infra based on the design may be.<br>
&gt;<br>
&gt; +1. I can volunteer too.<br>
<br>
</div></div>Thanks, folks! As a quick update, throughput on a single client test jumped<br>
from ~180 MB/s to 700+MB/s after enabling client-io-threads. Throughput is<br>
now more in line with what is expected for this workload based on<br>
back-of-the-envelope calculations.<br>
<br>
Are there any reservations about recommending client-io-threads=on as<br>
&quot;default&quot; tuning, until the enhancement discussed above becomes reality?<br></blockquote><div><br></div><div>The only thing I can think of is possible races we may have to address after enabling this option. So I would let it bake on master for a while with this as default may be?<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
-- Manoj<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Xavi<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On 25/06/16 19:42, Manoj Pillai wrote:<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; ----- Original Message -----<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; From: &quot;Pranith Kumar Karampuri&quot; &lt; <a href="mailto:pkarampu@redhat.com">pkarampu@redhat.com</a> &gt;<br>
&gt; &gt; To: &quot;Xavier Hernandez&quot; &lt; <a href="mailto:xhernandez@datalab.es">xhernandez@datalab.es</a> &gt;<br>
&gt; &gt; Cc: &quot;Manoj Pillai&quot; &lt; <a href="mailto:mpillai@redhat.com">mpillai@redhat.com</a> &gt;, &quot;Gluster Devel&quot; &lt;<br>
&gt; &gt; <a href="mailto:gluster-devel@gluster.org">gluster-devel@gluster.org</a> &gt;<br>
&gt; &gt; Sent: Thursday, June 23, 2016 8:50:44 PM<br>
&gt; &gt; Subject: performance issues Manoj found in EC testing<br>
&gt; &gt;<br>
&gt; &gt; hi Xavi,<br>
&gt; &gt; Meet Manoj from performance team Redhat. He has been testing EC<br>
&gt; &gt; performance in his stretch clusters. He found some interesting things we<br>
&gt; &gt; would like to share with you.<br>
&gt; &gt;<br>
&gt; &gt; 1) When we perform multiple streams of big file writes(12 parallel dds I<br>
&gt; &gt; think) he found one thread to be always hot (99%CPU always). He was asking<br>
&gt; &gt; me if fuse_reader thread does any extra processing in EC compared to<br>
&gt; &gt; replicate. Initially I thought it would just lock and epoll threads will<br>
&gt; &gt; perform the encoding but later realized that once we have the lock and<br>
&gt; &gt; version details, next writes on the file would be encoded in the same<br>
&gt; &gt; thread that comes to EC. write-behind could play a role and make the writes<br>
&gt; &gt; come to EC in an epoll thread but we saw consistently there was just one<br>
&gt; &gt; thread that is hot. Not multiple threads. We will be able to confirm this<br>
&gt; &gt; in tomorrow&#39;s testing.<br>
&gt; &gt;<br>
&gt; &gt; 2) This is one more thing Raghavendra G found, that our current<br>
&gt; &gt; implementation of epoll doesn&#39;t let other epoll threads pick messages from<br>
&gt; &gt; a socket while one thread is processing one message from that socket. In<br>
&gt; &gt; EC&#39;s case that can be encoding of the write/decoding read. This will not<br>
&gt; &gt; let replies of operations on different files to be processed in parallel.<br>
&gt; &gt; He thinks this can be fixed for 3.9.<br>
&gt; &gt;<br>
&gt; &gt; Manoj will be raising a bug to gather all his findings. I just wanted to<br>
&gt; &gt; introduce him and let you know the interesting things he is finding before<br>
&gt; &gt; you see the bug :-).<br>
&gt; &gt; --<br>
&gt; &gt; Pranith<br>
&gt; &gt;<br>
&gt; &gt; Thanks, Pranith :).<br>
&gt; &gt;<br>
&gt; &gt; Here&#39;s the bug: <a href="https://bugzilla.redhat.com/show_bug.cgi?id=1349953" rel="noreferrer" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=1349953</a><br>
&gt; &gt;<br>
&gt; &gt; Comparing EC and replica-2 runs, the hot thread is seen in both cases, so<br>
&gt; &gt; I have not opened this as an EC bug. But initial impression is that<br>
&gt; &gt; performance impact for EC is particularly bad (details in the bug).<br>
&gt; &gt;<br>
&gt; &gt; -- Manoj<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Pranith<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Gluster-devel mailing list<br>
&gt; &gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt; &gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br>
&gt; _______________________________________________<br>
&gt; Gluster-devel mailing list<br>
&gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br>
&gt;<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Pranith<br></div></div>
</div></div>