Re: Request for Comments: Weighted Round Robin OP Queue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On Fri, Nov 6, 2015 at 3:12 AM, Sage Weil  wrote:
> On Thu, 5 Nov 2015, Robert LeBlanc wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA256
>>
>> Thanks Gregory,
>>
>> People are most likely busy and haven't had time to digest this and I
>> may be expecting more excitement from it (I'm excited due to the
>> results and probably also that such a large change still works). I'll
>> keep working towards a PR, this was mostly proof of concept, now that
>> there is some data I'll clean up the code.
>
> I'm *very* excited about this.  This is something that almost every
> operator has problems with so it's very encouraging to see that switching
> up the queue has a big impact in your environment.
>
> I'm just following up on this after a week of travel, so apologies if this
> is covered already, but did you compare this implementation to the
> original one with the same tunables?  I see somewhere that you had
> max_backfills=20 at some point, which is going to be bad regardless of the
> queue.
>
> I also see that you chnaged the strict priority threshold from LOW to HIGH
> in OSD.cc; I'm curious how much of an impact was from this vs the queue
> implementation.

Yes max_backfills=20 is problematic for both queues and from what I
can tell is because the OPs are waiting for PGs to get healthy. In a
busy cluster it can take a while due to the recovery ops having low
priority. In the current queue, it is possible to be blocked for a
long time. The new queue seems to prevent that, but they do still back
up. After this, I think I'd like to look into promoting recovery OPs
that are blocking client OPs to higher priorities so that client I/O
doesn't suffer as much during recovery. I think that will be a very
different problem to tackle because I don't think I can do the proper
introspection at the queue level. I'll have to do that logic in OSD.cc
or PG.cc.

The strict priority threshold didn't make much of a difference with
the original queue. I initially eliminated it all together in the WRR,
but there were times that peering would never complete. I want to get
as many OPs in the WRR queue to provide fairness as much as possible.
I haven't tweaked the setting much in the WRR queue yet.

>
>> I was thinking that a config option to choose the scheduler would be a
>> good idea. In terms of the project what is the better approach: create
>> a new template and each place the template class is instantiated
>> select the queue, or perform the queue selection in the same template
>> class, or something else I haven't thought of.
>
> A config option would be nice, but I'd start by just cleaning up the code
> and putting it in a new class (WeightedRoundRobinPriorityQueue or
> whatever).  If we find that it's behaving better I'm not sure how much
> value we get from a tunable.  Note that there is one other user
> (msgr/simple/DispatchQueue) that we might also was to switch over at some
> point.. especially if this implementation is faster.
>
> Once it's cleaned up (remove commented out code, new class) put it up as a
> PR and we can review and get it through testing.

In talking with Samuel in IRC, we think creating an abstract class for
the queue is the best option. C++11 allows you to still optimize
abstract template classes if you use final in the derived class (I
verified the assembly). I'm planning to refactor the code so that
similar code can be reused between queues and allows more flexibility
in the future (components can chose the queue that works the best for
them, etc). The test for which queue to use should be a very simple
comparison and it would allow us to let it bake much longer. I hope to
have a PR mid next week.

- ----------------
Robert LeBlanc
PGP Fingerprint 79A2 9CA4 6CC4 45DD A904  C70E E654 3BB2 FA62 B9F1

-----BEGIN PGP SIGNATURE-----
Version: Mailvelope v1.2.3
Comment: https://www.mailvelope.com

wsFcBAEBCAAQBQJWPN1xCRDmVDuy+mK58QAA2XwP/1bv4DUVTfoAGU8q6RDK
xXCcqNoy2rFcG/D4wipnnGrjMYnVlH33l73hyaZiSQzMwvfzBAl5igQbIlAh
41yqXOaGxk+BYRXRNHL5KCP0p0esjV8Wv1z9X2yfKdWeHbwueOKju5ljDQ6X
AaVXefw1fdag8JEvSjh0dsjgh8wf3G+lAcC9GHB/PFNHXYsl1BVOUz1REnno
v5vIAZz+iySb8vVrWXJUBaPdW9aao/sqJFU2ZHBziWgeIZ9OlrTlhr9znsxy
aDa18suMC8vhcrZjyAgKlSbxhgynWh7R2RjxFA5ZObBEsdbztJfg9ibyDzKG
Ngpe+jVXGTM03z4ohajzPPJ0tzj03XpGc45yXzj6Q4NHOlp5CPdzAPgmxQkz
ot5cAIR83z67PBIkemeiBQvbC4/ToVCXIBCfEPVW5Yu6grnTd4+AAKxTakip
+tXSai03MNMlNBeaBnooZ/li7s9VMSluXheZ2JNs9ssRTZkGQH3Pof3p3Y5t
pAb7qeRlxm+t+i1rZ1tn1FtF/YAx4DKGvyFz4Pzk8pe77jZ+nQLMtoOJJgGJ
w/+TGiegnUPt6pqWf/Z5o6+GB8SiM/5zKr+Xkm8aIcju/Fq0qy3fx96z81Cv
QC25ZklTblVt1ImSG30qoVcZdqWKTMwnJhpFNj8GVbzyV5EoFh4T0YBmu3fm
FKe/
=yodk
-----END PGP SIGNATURE-----
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux