Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp133227imm; Tue, 3 Jul 2018 15:30:00 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfmwq1ow3rf7H7/qW+Lz3PyqY2i5IvlHicygd3uiiG8vMcM/eitZVfjPoLolwqGm3CW94FA X-Received: by 2002:a17:902:528a:: with SMTP id a10-v6mr23633440pli.73.1530657000564; Tue, 03 Jul 2018 15:30:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530657000; cv=none; d=google.com; s=arc-20160816; b=y4zPBJ76YC6txS04EwLqKbj4RJMaSNudqCyvSwVwRNB38CU/s2HzGESN/x96Gx0uvt wcOfHX4DBbgwL5RlN5hyrpfh4WRx5D/9RvhBaRdxg08qKovcenEiX2q7n18LeAOIuMaZ 5Yej9zhRiGWfstYY/6piI/TtbYlRmxzEsWK86/osi77949odc711rKG2nYEvNS+Q639g iKUltOmbkUmgTzyUnTBMfQd4c7iMFb1JmNpc6w1ti7THtwUPXxDms/wtT4KoqyAmXCca FxVAH+MBnTPOj40ZBZwSdue99XK9k4c9rP0Y8Mb+yjHzy4bcxcrgCJ6elsexX6FgGsF5 /urg== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=2cCsu1sKw6dTzMeMpwQeljfxK+OSae6Bq0jUBFMoULY=; b=mLk5vr1XjimbihgvEUue+/KfwpQsEREzApuxlM6LYhmiUUIYc19kmOgvYdj2D3SEIy V0aUzb7lngKnIRrdwKvnsjjQSlyc7MdBhRzb7EHacP9T64oEN84kNPy5iIAuT/KYnBEl ajkJcZv3Kiy0VvvNl7JUgz0K5JmjYtfDt/aenfD3Royf+XkgTGsD1N968aBCSbFkV0gk H12N2lZp0jlNY6fbdUiNqefFnq39EL6KLZAMqXyNQlzsV162rOZeEBeKzUAega0VWa33 6U1A90HucLY8P5X+E17cwOQ//yyBdmJe/A4NZ6vMmVlzkK5q/l0vB2kcRdPcxjuMmsVa OSVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=gVMDDq9x; 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 s14-v6si1865048pgn.76.2018.07.03.15.29.43; Tue, 03 Jul 2018 15:30:00 -0700 (PDT) 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; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=gVMDDq9x; 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 S1753302AbeGCW3A (ORCPT + 99 others); Tue, 3 Jul 2018 18:29:00 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:35182 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753196AbeGCW27 (ORCPT ); Tue, 3 Jul 2018 18:28:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=2cCsu1sKw6dTzMeMpwQeljfxK+OSae6Bq0jUBFMoULY=; b=gVMDDq9xAHg1q4ZWwuBTolhei gICk65PLO4f+iqUjgtjwFiYrIJdQ375lIxptmX298nrjKC78YL+XXcKk1hdiWU7XqXP1lj96sb2lE qzTu2mXHWeQshiiPeWYwHKpYZtSSk99JoBEBQYOFMmEIdSulkn4+zc5BL6fVo+1GoMHlSMFNKONVn 0+oSr7xnZ6MZr3EzCDeJH1oUohVrxQ51KBUzfnyAP7N9feFOIk5n3aMFZ1Lhb5zVW7K58+jqRcLrB rgttXJg2cMpdBcDEdWlMls/NXm+RvE5Tv9brvXixWS3M8mK5byKL9WmBfbx1hKNlWPah7FZeNyoXB NHQBl3UXA==; Received: from static-50-53-52-16.bvtn.or.frontiernet.net ([50.53.52.16] helo=midway.dunlab) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1faTn7-0003bq-Vr; Tue, 03 Jul 2018 22:28:58 +0000 Subject: Re: [PATCH 13/14] Documentation: add a doc for blk-iolatency To: Josef Bacik , axboe@kernel.dk, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, hannes@cmpxchg.org, tj@kernel.org, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, kernel-team@fb.com Cc: Josef Bacik References: <20180703151503.2549-1-josef@toxicpanda.com> <20180703151503.2549-14-josef@toxicpanda.com> From: Randy Dunlap Message-ID: <5b4d3156-d11c-d256-cd0b-3c4bc0bc9296@infradead.org> Date: Tue, 3 Jul 2018 15:28:56 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180703151503.2549-14-josef@toxicpanda.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/03/18 08:15, Josef Bacik wrote: > From: Josef Bacik > > A basic documentation to describe the interface, statistics, and > behavior of io.latency. > > Signed-off-by: Josef Bacik > --- > Documentation/admin-guide/cgroup-v2.rst | 79 +++++++++++++++++++++++++++++++++ > 1 file changed, 79 insertions(+) > > diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst > index 8a2c52d5c53b..569ce27b85e5 100644 > --- a/Documentation/admin-guide/cgroup-v2.rst > +++ b/Documentation/admin-guide/cgroup-v2.rst > @@ -51,6 +51,9 @@ v1 is available under Documentation/cgroup-v1/. > 5-3. IO > 5-3-1. IO Interface Files > 5-3-2. Writeback > + 5-3-3. IO Latency > + 5-3-3-1. How IO Latency Throttling Works > + 5-3-3-2. IO Latency Interface Files > 5-4. PID > 5-4-1. PID Interface Files > 5-5. Device > @@ -1446,6 +1449,82 @@ writeback as follows. > vm.dirty[_background]_ratio. > > > +IO Latency > +~~~~~~~~~~ > + > +This is a cgroup v2 controller for IO workload protection. You provide a group > +with a latency target, and if the average latency exceeds that target the > +controller will throttle any peers that have a lower latency target than the > +protected workload. > + > +The limits are only applied at the peer level in the hierarchy. This means that > +in the diagram below, only groups A, B, and C will influence each other, and > +groups D and F will influence each other. Group G will influence nobody. > + > + [root] > + / | \ > + A B C > + / \ | > + D F G > + > + > +So the ideal way to configure this is to set io.latency in groups A, B, and C. > +Generally you do not want to set a value lower than the latency your device > +supports. Experiment to find the value that works best for your workload. > +Start at higher than the expected latency for your device and watch the > +total_lat_avg value in io.stat for your workload group to get an idea of the > +latency you see during normal operation. Use this value as a basis for your > +real setting, setting at 10-15% higher than the value in io.stat. > +Experimentation is key here because total_lat_avg is a running total, so is the > +"statistics" portion of "lies, damned lies, and statistics." > + > +How IO Latency Throttling Works > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +io.latency is work conserving; so as long as everybody is meeting their latency > +target the controller doesn't do anything. Once a group starts missing its > +target it begins throttling any peer group that has a higher target than itself. > +This throttling takes 2 forms: > + > +- Queue depth throttling. This is the number of outstanding IO's a group is > + allowed to have. We will clamp down relatively quickly, starting at no limit > + and going all the way down to 1 IO at a time. > + > +- Artificial delay induction. There are certain types of IO that cannot be > + throttled without possibly adversely affecting higher priority groups. This > + includes swapping and metadata IO. These types of IO are allowed to occur > + normally, however they are "charged" to the originating group. If the > + originating group is being throttled you will see the use_delay and delay > + fields in io.stat increase. The delay value is how many microseconds that are > + being added to any process that runs in this group. Because this number can > + grow quite large if there is a lot of swapping or metadata IO occurring we > + limit the individual delay events to 1 second at a time. > + > +Once the victimized group starts meeting its latency target again it will start > +unthrottling any peer groups that were throttled previously. If the victimized > +group simply stops doing IO the global counter will unthrottle appropriately. > + > +IO Latency Interface Files > +~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > + io.latency > + This takes a similar format as the other controllers. > + > + "MAJOR:MINOR target=" > + > + io.stat > + If the controller is enabled you will see extra stats in io.stat in > + addition to the normal ones. > + > + depth > + This is the current queue depth for the group. > + > + avg_lat > + The running average IO latency for this group in microseconds. > + Running average is generally flawed, but will give an > + administrator a general idea of the overall latency they can > + expect for their workload on the given disk. > + > PID > --- > > -- ~Randy