Received: by 10.223.176.46 with SMTP id f43csp1180790wra; Wed, 24 Jan 2018 12:01:20 -0800 (PST) X-Google-Smtp-Source: AH8x227kq3KCafDQsXnBEYxETQ+0c2hpKNeLQd/HsK0NRaEkasbrMJWqgU7ObsiOD/W6idxhCOEE X-Received: by 2002:a17:902:b43:: with SMTP id 61-v6mr9201538plq.127.1516824080782; Wed, 24 Jan 2018 12:01:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516824080; cv=none; d=google.com; s=arc-20160816; b=Ou5sF1Gk22dypMS84eFenOq0Gp8UwoQHA1RsHAtXXS0z+clfbrYynXCTbr9tkc3EEZ bg+EBjdARnRPpRncecn96/2yiXtEpcxe6Zs2mVY6VQhIo3TAmciuvKaB/+FYRCEX7pSz cZZeiMX5W1zKIC2k3H6hHD6NG3XI7L/JbmUg4aWo7Gf6rmv7s8lHkGTBNAXsq8B+BZNS 67WM0/rE7053DLY5MN7TAOBPDT1hYBDRxgltB4+yCt95HC5aTTAIhUqb75KM+MSLRa2Z VQF+rAghp1j4NIYzmWhOInGmVy3AI/W4+GjfCpTRkg/GYj/5CWnyD+LXrcDbBZBv4RoR /UKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :arc-authentication-results; bh=sZYRSl4HWwOBlmjivMpnyyMNKJVbBOKi6h42UJVGfMQ=; b=fpbM8WBWZvLvqST1zzUv61phHxOzRwVYaPjJ2j86yN3oYOkvmxiClASw3NvuwIkGI4 pgcVrAo0RQH0VjwV97H8yjDzz3/4KRU8HbPGjMl9wx/yEdc/yxitoMv1pff9C9pI+Xm3 2ZvTKRaXVTjepwmTnNBX2J7gzbQLAj15eOKaalcFZojX3g4RQBeRAsUxKP6vAflIo9yr 7zkZJGMiZOYVX+v5SC5kllshKug6+n8TZG7OHhb/g7xmpEDcASfss/YgS7qAB7dyOtZK DxBVCySwGKXnYBWWupdATeA5XeiThtVaku6lY61ULNoA+p4sH+RzAtcLJPsZIWAI9Jpx ik9A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f91-v6si659823plb.377.2018.01.24.12.01.06; Wed, 24 Jan 2018 12:01:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932250AbeAXUAl (ORCPT + 99 others); Wed, 24 Jan 2018 15:00:41 -0500 Received: from prv3-mh.provo.novell.com ([137.65.250.26]:52285 "EHLO prv3-mh.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752504AbeAXUAk (ORCPT ); Wed, 24 Jan 2018 15:00:40 -0500 Received: from [192.168.1.40] (prv-ext-foundry1int.gns.novell.com [137.65.251.240]) by prv3-mh.provo.novell.com with ESMTP (TLS encrypted); Wed, 24 Jan 2018 13:00:34 -0700 Message-ID: <1516824029.6927.14.camel@suse.com> Subject: Re: [dm-devel] [PATCH] dm mpath selector: more evenly distribute ties From: Martin Wilck To: Khazhismel Kumykov Cc: agk@redhat.com, snitzer@redhat.com, dm-devel@redhat.com, linux-kernel@vger.kernel.org Date: Wed, 24 Jan 2018 21:00:29 +0100 In-Reply-To: References: <20180119230737.133596-1-khazhy@google.com> <1516791437.6678.6.camel@suse.com> <1516820965.6927.10.camel@suse.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.26.4 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2018-01-24 at 11:41 -0800, Khazhismel Kumykov wrote: > On Wed, Jan 24, 2018 at 11:09 AM, Martin Wilck > wrote: > > On Wed, 2018-01-24 at 10:44 -0800, Khazhismel Kumykov wrote: > > > On Wed, Jan 24, 2018 at 2:57 AM, Martin Wilck > > > wrote: > > > > On Fri, 2018-01-19 at 15:07 -0800, Khazhismel Kumykov wrote: > > > > > Move the last used path to the end of the list (least > > > > > preferred) > > > > > so > > > > > that > > > > > ties are more evenly distributed. > > > > > > > > > > For example, in case with three paths with one that is slower > > > > > than > > > > > others, the remaining two would be unevenly used if they tie. > > > > > This is > > > > > due to the rotation not being a truely fair distribution. > > > > > > > > > > Illustrated: paths a, b, c, 'c' has 1 outstanding IO, a and b > > > > > are > > > > > 'tied' > > > > > Three possible rotations: > > > > > (a, b, c) -> best path 'a' > > > > > (b, c, a) -> best path 'b' > > > > > (c, a, b) -> best path 'a' > > > > > (a, b, c) -> best path 'a' > > > > > (b, c, a) -> best path 'b' > > > > > (c, a, b) -> best path 'a' > > > > > ... > > > > > > > > > > > > This happens only if a and b actually have the same weight > > > > (e.g. > > > > queue > > > > length for the queue-length selector). If 'a' really receives > > > > more > > > > IO, > > > > its queue grows, and the selector will start preferring 'b', so > > > > the > > > > effect should level out automatically with the current code as > > > > soon > > > > as > > > > you have real IO going on. But maybe I haven't grasped what > > > > you're > > > > referring to as "tied". > > > > > > Yes, for "tied" I'm referring to paths with the same weight. As > > > queue > > > length grows it does tend to level out, but in the case where > > > queue > > > length doesn't grow (in this example I'm imagining 2 concurrent > > > requests to the device) the bias does show and the selectors > > > really > > > do > > > send 'a' 2x more requests than 'b' (when 'c' is much slower and > > > 'a' > > > and 'b' are ~same speed). > > > > Have you actually observed this? I find the idea pretty academical > > that > > two paths would be walking "tied" this way. In practice, under IO > > load, > > I'd expect queue lengths (and service-times, for that matter) to > > fluctuate enough to prevent this effect to be measurable. But of > > course, I may be wrong. If you really did observe this, the next > > question would be: does hurt performance to an extent that can be > > noticed/measured? I reckon that if 'a' got saturated under the > > load, > > hurting performance, its queue length would grow quickly and 'b' > > would > > automatically get preferred. > > This is fairly simple to observe - start two sync reader threads > against a device with 3 backing paths, with one path taking longer on > average to complete requests than the other two. One of the 'faster' > paths will be used ~2x more than the other. Perhaps not that common a > situation, but is a real one. The bias seemed simple to remove, so > that the two (or N) paths would be used equally. > > I don't see a downside to more evenly distributing in this case, > although I can't say I've directly observed performance downsides for > a biased distribution (aside from the distribution being biased > itself > being a downside). > The bias of note is inherent to the order paths are added to the > selector (and which path is 'always bad'), so if 'a' is saturated due > to this, then slows, once it recovers it will continue to be > preferred, versus in an even distribution. Well, the expectation is indeed that load is spread equally, and I can also see no downside. So: Reviewed-by: Martin Wilck -- Dr. Martin Wilck , Tel. +49 (0)911 74053 2107 SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg)