Received: by 10.223.164.202 with SMTP id h10csp4669444wrb; Mon, 20 Nov 2017 20:37:54 -0800 (PST) X-Google-Smtp-Source: AGs4zMZ4HGz75MJO5X6ThTIBJa2m0OkTSHT00mR1GoGGFXUSAPuwLJL4Nt8mwu4YhboSAd2qOcgJ X-Received: by 10.99.39.198 with SMTP id n189mr15229529pgn.78.1511239073939; Mon, 20 Nov 2017 20:37:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511239073; cv=none; d=google.com; s=arc-20160816; b=xyNa0FT5BZ8lSDTGwZkEqLkoCpoJa2GjTAQJpeTaGpzsHpPl1lFGLOnajwauLvjgTx Bxc1HK3KyRbW6eDFa7+a3zleHy8iGZJWWivx9w19pbJFN577HGM1geuw8VjZX2U4hSFU tmsFi3sEFUZkHdue8IjZKUjUkJ3Vb28KK2jwjpOKtWVp4MaetmDBN+DP2iyInM6rcclI glhokyKeQb/KpJI/MGKb2K6IhMxhWXJn4llHBcdOVXzzGvVQxL63QECg7cLLunQpqQq6 3s7QQylYzyaWjwE/sXNvD5F4GbOd6wXh6yX8YuvL6I//fEV6elacPbFsOWVYWFqMuPBs rFmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=wxyTjTDNLjv4h6gWhvOzZgVyuGmEfEFptDcD26ZHjP4=; b=m/EtQEzNbc6WwJllUSE5/T0C03xdX3Jwkev03rlsLg5pzkd7RP886aiyNtqoWButuR JvEMsyaiXlwo0isRROSyqap8uTW8I8CAGwgaLShh/8VYO+QmHizw5Y4lPe6aZH8tE/1v Iv6N1CARabTrLERVBV8u1aw6aznoxDgas94xziPf9nmkvTupuzPevGaYiiWhdYhi2UNQ o8SfBkGJWnoYr49TLj1PlOVVtVHNkTp3VQAmy2uar2VRpPwXad4+cJMKVJvNBw/FMJNU GttuQhf8swwc2RFKG8DVl4RewoItbCeE/RkxGdIxftnKMhlFKcthjFF6233OWvO2JWQh QUmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=io/rkcAE; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a13si9458652pgt.35.2017.11.20.20.37.41; Mon, 20 Nov 2017 20:37:53 -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; dkim=pass header.i=@google.com header.s=20161025 header.b=io/rkcAE; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752775AbdKUEhB (ORCPT + 72 others); Mon, 20 Nov 2017 23:37:01 -0500 Received: from mail-oi0-f54.google.com ([209.85.218.54]:43166 "EHLO mail-oi0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752391AbdKUEg7 (ORCPT ); Mon, 20 Nov 2017 23:36:59 -0500 Received: by mail-oi0-f54.google.com with SMTP id h6so7676928oia.10 for ; Mon, 20 Nov 2017 20:36:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=wxyTjTDNLjv4h6gWhvOzZgVyuGmEfEFptDcD26ZHjP4=; b=io/rkcAER+gZfTEc9VcXJBnJgrdC+Tealgoz2ZchbdXREY33VniXMPmDqRlnBdV9BM JePrgddVBBF3bmCpZbpidfWSZJvKaZq91suGU0V+4DaMBEkOA5cESNYxdZA9WH18VDrs P3Ur/f8rLc1V7ANSd/Zv03XonDiSPbX3kwcsTgb2sDlBYRmtkoQmkobVKuQCMfgY/dM+ n5/kq0PsPiyFZ8uWR8qnV1LLLzjTUObjNNNqTM4N5MKE0mg7kqTkV20uTcIyyZ0f/4Dm Ax7EF8OYAKT29p/0sTeSwEtqb8REzAvfljADiNHFKw95F/bDijxMPz2eSAcDrM5B6dEV BDYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=wxyTjTDNLjv4h6gWhvOzZgVyuGmEfEFptDcD26ZHjP4=; b=YqnXbIDYKa4ugGtVhw9GTy3PqMCK77XWDHspv1vu1XP2nRl+azTbniljXhckK7blwy TSF2QNS8RBiEWMTjvpLVrS21G7ScLqJnrwnrL8mYeKY8feommKpNV/iwSZCXqXSM0VGZ M1NyLtE3nIE59jkK+lROoHSSPZv+ms/sm99ItfAyg3/qJbssL/nNPvuhVTps7Xb+uiOS nGYbWqpWnzQ/5NlxZ03EG4x/QEaNarist0dudo3NTb1VV70ehs4ZLBJl7LoAF1ZrXcho yZbmSrkJJpAZEl3+4j4ewAT1OahnrQ4bzlWZElhRoed17uBOt9CHXJjKpontklPANcrR S30w== X-Gm-Message-State: AJaThX54262hZo55SQ/OuznTdgAOaHTKRiNggth95MMzMOnfiO2VF6Ua dg8TTwK1fG0KAe0R16Bi4ZjaxFxZXzZ8ejpPsdaIhw== X-Received: by 10.202.67.65 with SMTP id q62mr369033oia.37.1511239018133; Mon, 20 Nov 2017 20:36:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.177.8 with HTTP; Mon, 20 Nov 2017 20:36:57 -0800 (PST) In-Reply-To: <20171117192614.4knf72v26iir6tpi@kernel.org> References: <20171114231022.42961-1-khazhy@google.com> <20171116165033.4noofd6gkaj6x3yl@kernel.org> <20171117192614.4knf72v26iir6tpi@kernel.org> From: Khazhismel Kumykov Date: Mon, 20 Nov 2017 20:36:57 -0800 Message-ID: Subject: Re: [RFC PATCH] blk-throttle: add burst allowance. To: Shaohua Li Cc: shli@fb.com, vgoyal@redhat.com, tj@kernel.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="001a113dd23ae39e55055e76c0d5" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --001a113dd23ae39e55055e76c0d5 Content-Type: text/plain; charset="UTF-8" On Fri, Nov 17, 2017 at 11:26 AM, Shaohua Li wrote: > On Thu, Nov 16, 2017 at 08:25:58PM -0800, Khazhismel Kumykov wrote: >> On Thu, Nov 16, 2017 at 8:50 AM, Shaohua Li wrote: >> > On Tue, Nov 14, 2017 at 03:10:22PM -0800, Khazhismel Kumykov wrote: >> >> Allows configuration additional bytes or ios before a throttle is >> >> triggered. >> >> >> >> This allows implementation of a bucket style rate-limit/throttle on a >> >> block device. Previously, bursting to a device was limited to allowance >> >> granted in a single throtl_slice (similar to a bucket with limit N and >> >> refill rate N/slice). >> >> >> >> Additional parameters bytes/io_burst_conf defined for tg, which define a >> >> number of bytes/ios that must be depleted before throttling happens. A >> >> tg that does not deplete this allowance functions as though it has no >> >> configured limits. tgs earn additional allowance at rate defined by >> >> bps/iops for the tg. Once a tg has *_disp > *_burst_conf, throttling >> >> kicks in. If a tg is idle for a while, it will again have some burst >> >> allowance before it gets throttled again. >> >> >> >> slice_end for a tg is extended until io_disp/byte_disp would fall to 0, >> >> when all "used" burst allowance would be earned back. trim_slice still >> >> does progress slice_start as before and decrements *_disp as before, and >> >> tgs continue to get bytes/ios in throtl_slice intervals. >> > >> > Can you describe why we need this? It would be great if you can describe the >> > usage model and an example. Does this work for io.low/io.max or both? >> > >> > Thanks, >> > Shaohua >> > >> >> Use case that brought this up was configuring limits for a remote >> shared device. Bursting beyond io.max is desired but only for so much >> before the limit kicks in, afterwards with sustained usage throughput >> is capped. (This proactively avoids remote-side limits). In that case >> one would configure in a root container io.max + io.burst, and >> configure low/other limits on descendants sharing the resource on the >> same node. >> >> With this patch, so long as tg has not dispatched more than the burst, >> no limit is applied at all by that tg, including limit imposed by >> io.low in tg_iops_limit, etc. > > I'd appreciate if you can give more details about the 'why'. 'configuring > limits for a remote shared device' doesn't justify the change. This is to configure a bursty workload (and associated device) with known/allowed expected burst size, but to not allow full utilization of the device for extended periods of time for QoS. During idle or low use periods the burst allowance accrues, and then tasks can burst well beyond the configured throttle up to the limit, afterwards is throttled. A constant throttle speed isn't sufficient for this as you can only burst 1 slice worth, but a limit of sorts is desirable for preventing over utilization of the shared device. This type of limit is also slightly different than what i understand io.low does in local cases in that tg is only high priority/unthrottled if it is bursty, and is limited with constant usage Khazhy --001a113dd23ae39e55055e76c0d5 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIIS5wYJKoZIhvcNAQcCoIIS2DCCEtQCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg ghBNMIIEXDCCA0SgAwIBAgIOSBtqDm4P/739RPqw/wcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UE BhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExOjA4BgNVBAMTMUdsb2JhbFNpZ24gUGVy c29uYWxTaWduIFBhcnRuZXJzIENBIC0gU0hBMjU2IC0gRzIwHhcNMTYwNjE1MDAwMDAwWhcNMjEw NjE1MDAwMDAwWjBMMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEiMCAG A1UEAxMZR2xvYmFsU2lnbiBIViBTL01JTUUgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALR23lKtjlZW/17kthzYcMHHKFgywfc4vLIjfq42NmMWbXkNUabIgS8KX4PnIFsTlD6F GO2fqnsTygvYPFBSMX4OCFtJXoikP2CQlEvO7WooyE94tqmqD+w0YtyP2IB5j4KvOIeNv1Gbnnes BIUWLFxs1ERvYDhmk+OrvW7Vd8ZfpRJj71Rb+QQsUpkyTySaqALXnyztTDp1L5d1bABJN/bJbEU3 Hf5FLrANmognIu+Npty6GrA6p3yKELzTsilOFmYNWg7L838NS2JbFOndl+ce89gM36CW7vyhszi6 6LqqzJL8MsmkP53GGhf11YMP9EkmawYouMDP/PwQYhIiUO0CAwEAAaOCASIwggEeMA4GA1UdDwEB /wQEAwIBBjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwEgYDVR0TAQH/BAgwBgEB/wIB ADAdBgNVHQ4EFgQUyzgSsMeZwHiSjLMhleb0JmLA4D8wHwYDVR0jBBgwFoAUJiSSix/TRK+xsBtt r+500ox4AAMwSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n c3BlcnNvbmFsc2lnbnB0bnJzc2hhMmcyLmNybDBMBgNVHSAERTBDMEEGCSsGAQQBoDIBKDA0MDIG CCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzANBgkqhkiG 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 BQUHMAKGNGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzaHZzbWltZWNhMS5j cnQwHQYDVR0OBBYEFMnO7tLwRUm/Kh/G63DTEdz9N5wmMB8GA1UdIwQYMBaAFMs4ErDHmcB4koyz IZXm9CZiwOA/MEwGA1UdIARFMEMwQQYJKwYBBAGgMgEoMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NodnNtaW1lY2ExLmNybDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l BBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMA0GCSqGSIb3DQEBCwUAA4IBAQA5gzhiP9g5DzgYyM4K /OtFFFKyrluiKx9OmOb1Mx9UCxEi9vzRrG5j1rFMAwNAx+xEESoq1JVNe8fJKBimOsKpWstAhYlO Cg6Qm43dzb+5CcPWDC3j6XxfsUIKvektE79/IeVhdRVj+Op1gSEGaBJQP2c0/MeXPPhQKPjAPVQW bEOJaemCXr1UIoEHMoisd0Smdm1NjxLYLk3bK1RDgO0RTu2hNmVAT9WypS9uiquOQWeK3u9QBuUK BhOZjgo70YosoRVRBIKNqStZ++IpaDEWfDme3EH4H8tlOzwCvAiO8c1uF7ZX68wXWJPjq6uxu1cZ 5lT83BZ34AElNAzFvsLhMYICXjCCAloCAQEwXDBMMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xv YmFsU2lnbiBudi1zYTEiMCAGA1UEAxMZR2xvYmFsU2lnbiBIViBTL01JTUUgQ0EgMQIMPycjokgk Gdp8HTY2MA0GCWCGSAFlAwQCAQUAoIHUMC8GCSqGSIb3DQEJBDEiBCBWL20FD/F0TeXdoKJpye0B TP6Enn1tIUrfKl2xQiqBKDAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEP Fw0xNzExMjEwNDM2NThaMGkGCSqGSIb3DQEJDzFcMFowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQB FjALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwCwYJKoZIhvcNAQEKMAsGCSqGSIb3DQEBBzALBglg hkgBZQMEAgEwDQYJKoZIhvcNAQEBBQAEggEAjtPre4MfnPbzFrz44Hi7wPIXUAnV+VWDS1ucVpnn DLBCONZZrMPCaU3RiByR716VYvz8qtAtKve3OaOwLvf58lgRakqyKKohECDRPEbxPcjQnbDLhw2Y MSZl/hbpGrmCkdkoOsUX6Jj4hMicZVTtqRln2GeI2S2aFICnRZtFBmiFI+zmppZutLzfMweB2dW9 4N+2i/B+SrYE2Dl2l5F92eM+OrBPGQsA57GHjRNPDb1yC/vojpW6XplHuAzQOi+EVFqhm+rFhtMP iVbLH+fx2LV001Ei8mSdI3ghC/uFjp36VVCsTCcRXBcqrQE0jjabi/LOn3/j0KPH7bvYNFGLbA== --001a113dd23ae39e55055e76c0d5-- From 1584361704708480019@xxx Sat Nov 18 00:31:05 +0000 2017 X-GM-THRID: 1584087818449083473 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread