From patchwork Thu Aug 31 18:00:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Valente X-Patchwork-Id: 111416 Delivered-To: patch@linaro.org Received: by 10.140.95.112 with SMTP id h103csp2923160qge; Thu, 31 Aug 2017 11:01:08 -0700 (PDT) X-Received: by 10.84.224.10 with SMTP id r10mr3474082plj.149.1504202468498; Thu, 31 Aug 2017 11:01:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504202468; cv=none; d=google.com; s=arc-20160816; b=FMnTsqD26fdLAKetb7LlFN5xFi1LUR/KoySwvbvsdlKaYkI0tO92yKN+J0coL0YZSu +p/1y0LunfhRCEiStP8pCtNldlOEiRN/kRCuQN/uiF2Uo+xPiqLRVAx3J/34rJy6EQFR pMQtsnmVx+fA+tSjdqQfmitnp0s3ollEv5v1gA/lIZOXkIloWH32pKqfJFDY2CpyPjSj lXvg8HLgnVlpwJVDkAUSo19mB1WtyQ65lwvDkg3xJBGElaXCONZFQQM2ZQoNPUU29xdJ CIisZDYNAxaZ2sVhgb0+uVoUiQbs5BI2BRgj/kapTsP3Pydd7L9mmNqXrXg4zw/iM2Zt C/Nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=lVpjr/BtMpHWSYXoqaV+PV14vAri+09rIWDDPipEXJU=; b=DQS97kovpog+uqIuUgM9Zzz1chKyE6pcMuhiGnbLd+yRb37fCd+wHkurpGWPKCCggH CtLQ9dOu5az8o0YDFVAkxoVKXg4Z4piCNH+PFk/Feoe+zSQSJw3/Z4AL7iSUE1riJArS XJIw7ZetUOTd/bonWVe5nW270HKuCczszzn2JU4+WK3tPkjkdDqOtCvobiUyPYJWBsAX K7OmcxlvmQn2poYKFMTFVp3gCtblscvb2qj8ay2rzeDgTSOzoF2UJthLkTT8psWdVxc2 IH9grQmxb9j8qUUS7GSv7T+h5OQohHwTCYCe3d3VLdIaKo6OhoGHCPimdPAmP1gCvei1 X09g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=X1txdeY0; 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=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d6si188826pfh.479.2017.08.31.11.01.08; Thu, 31 Aug 2017 11:01:08 -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=pass header.i=@linaro.org header.s=google header.b=X1txdeY0; 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=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751463AbdHaSBE (ORCPT + 26 others); Thu, 31 Aug 2017 14:01:04 -0400 Received: from mail-wm0-f53.google.com ([74.125.82.53]:38137 "EHLO mail-wm0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751074AbdHaSBB (ORCPT ); Thu, 31 Aug 2017 14:01:01 -0400 Received: by mail-wm0-f53.google.com with SMTP id 187so2266243wmn.1 for ; Thu, 31 Aug 2017 11:01:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lVpjr/BtMpHWSYXoqaV+PV14vAri+09rIWDDPipEXJU=; b=X1txdeY0Y0Y8MbnSdG8m/MOcZbFir8FrOLIE9/snHJktBMmgN1Wl1msMR/JowzTpbh 9VERz4k8tHJak9qgDqlWQmhDcel4VlOVoBkk3zbBahHfwmTcbNCfGfSR2A+xz++Yv38X SVQjdHj1k4OsxqBVuiMvfGu0HPGqIfiXRa0w4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=lVpjr/BtMpHWSYXoqaV+PV14vAri+09rIWDDPipEXJU=; b=JpGWjCh89WP9RHbFz5q4x6dyz9QjvZnLEYOcaC6oZRKOSsDhgqJmgvv3gIh0y4qA8c V9Iy9p/geDBo9oJ+VmBdwX5i7MaZy6yMAR7faZixyQr0wXv/baxMu2TJTunRHRQhB0xc hfBdEXzbyjhz6m3wJ1sGfO18zhkKQLje6f7mdjGe4dqSFMqIvvyLAHDJ0R2vq0RzINLP rLjW6+CEljJaVvTcaZlo4Mx+8Yw3PHvMStnNG4IQ+Zkm8ET9yOG7h0EmCdXpy5TXQeFl pgcIXVJlwUGHLOrmIbBufdfX3rEmiLQREeUv7qns9WfZh7wqGJVW4WfRVFvZdtpVWtHd U2Ow== X-Gm-Message-State: AHPjjUjxQ0upBt4C1O+LTlj73k445e7iX/XZ2DjOgGCUkhdGoj6j4MO3 43ldyVm0VrpfvXSV X-Google-Smtp-Source: ADKCNb4WHcZFGe2vYEt1pQZYWVvqj+s0QYi9ZtSaL8JufcZuWUUWCs15EEJztxy2o7gF3QgHS1R57Q== X-Received: by 10.28.12.11 with SMTP id 11mr1185068wmm.180.1504202460062; Thu, 31 Aug 2017 11:01:00 -0700 (PDT) Received: from localhost.localdomain ([185.14.8.94]) by smtp.gmail.com with ESMTPSA id 66sm635285wmn.17.2017.08.31.11.00.57 (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 31 Aug 2017 11:00:58 -0700 (PDT) From: Paolo Valente To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, broonie@kernel.org, jeremywh7@gmail.com, lnicola@dend.ro, Paolo Valente Subject: [PATCH BUGFIX/IMPROVEMENT 1/2] doc, block, bfq: fix some typos and remove stale stuff Date: Thu, 31 Aug 2017 20:00:30 +0200 Message-Id: <20170831180031.3747-2-paolo.valente@linaro.org> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20170831180031.3747-1-paolo.valente@linaro.org> References: <20170831180031.3747-1-paolo.valente@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In addition to containing some typos and stale sentences, the file bfq-iosched.txt still mentioned a set of sysfs parameters that have been removed from this version of bfq. This commit fixes all these issues. Signed-off-by: Paolo Valente Reviewed-by: Jeremy Hickman Reviewed-by: Laurentiu Nicola --- Documentation/block/bfq-iosched.txt | 66 ++++++------------------------------- 1 file changed, 10 insertions(+), 56 deletions(-) -- 2.10.0 diff --git a/Documentation/block/bfq-iosched.txt b/Documentation/block/bfq-iosched.txt index 05e2822..03ff4cc 100644 --- a/Documentation/block/bfq-iosched.txt +++ b/Documentation/block/bfq-iosched.txt @@ -16,14 +16,16 @@ throughput. So, when needed for achieving a lower latency, BFQ builds schedules that may lead to a lower throughput. If your main or only goal, for a given device, is to achieve the maximum-possible throughput at all times, then do switch off all low-latency heuristics -for that device, by setting low_latency to 0. Full details in Section 3. +for that device, by setting low_latency to 0. See Section 3 for +details on how to configure BFQ for the desired tradeoff between +latency and throughput, or on how to maximize throughput. On average CPUs, the current version of BFQ can handle devices performing at most ~30K IOPS; at most ~50 KIOPS on faster CPUs. As a reference, 30-50 KIOPS correspond to very high bandwidths with sequential I/O (e.g., 8-12 GB/s if I/O requests are 256 KB large), and -to 120-200 MB/s with 4KB random I/O. BFQ has not yet been tested on -multi-queue devices. +to 120-200 MB/s with 4KB random I/O. BFQ is currently being tested on +multi-queue devices too. The table of contents follow. Impatients can just jump to Section 3. @@ -154,10 +156,10 @@ plus a lot of code, are borrowed from CFQ. - With respect to idling for service guarantees, if several processes are competing for the device at the same time, but - all processes (and groups, after the following commit) have - the same weight, then BFQ guarantees the expected throughput - distribution without ever idling the device. Throughput is - thus as high as possible in this common scenario. + all processes and groups have the same weight, then BFQ + guarantees the expected throughput distribution without ever + idling the device. Throughput is thus as high as possible in + this common scenario. - If low-latency mode is enabled (default configuration), BFQ executes some special heuristics to detect interactive and soft @@ -191,10 +193,7 @@ plus a lot of code, are borrowed from CFQ. - Queues are scheduled according to a variant of WF2Q+, named B-WF2Q+, and implemented using an augmented rb-tree to preserve an O(log N) overall complexity. See [2] for more details. B-WF2Q+ is - also ready for hierarchical scheduling. However, for a cleaner - logical breakdown, the code that enables and completes - hierarchical support is provided in the next commit, which focuses - exactly on this feature. + also ready for hierarchical scheduling, details in Section 4. - B-WF2Q+ guarantees a tight deviation with respect to an ideal, perfectly fair, and smooth service. In particular, B-WF2Q+ @@ -427,51 +426,6 @@ Read-only parameter, used to show the weights of the currently active BFQ queues. -wr_ tunables ------------- - -BFQ exports a few parameters to control/tune the behavior of -low-latency heuristics. - -wr_coeff - -Factor by which the weight of a weight-raised queue is multiplied. If -the queue is deemed soft real-time, then the weight is further -multiplied by an additional, constant factor. - -wr_max_time - -Maximum duration of a weight-raising period for an interactive task -(ms). If set to zero (default value), then this value is computed -automatically, as a function of the peak rate of the device. In any -case, when the value of this parameter is read, it always reports the -current duration, regardless of whether it has been set manually or -computed automatically. - -wr_max_softrt_rate - -Maximum service rate below which a queue is deemed to be associated -with a soft real-time application, and is then weight-raised -accordingly (sectors/sec). - -wr_min_idle_time - -Minimum idle period after which interactive weight-raising may be -reactivated for a queue (in ms). - -wr_rt_max_time - -Maximum weight-raising duration for soft real-time queues (in ms). The -start time from which this duration is considered is automatically -moved forward if the queue is detected to be still soft real-time -before the current soft real-time weight-raising period finishes. - -wr_min_inter_arr_async - -Minimum period between I/O request arrivals after which weight-raising -may be reactivated for an already busy async queue (in ms). - - 4. Group scheduling with BFQ ============================ From patchwork Thu Aug 31 18:00:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Valente X-Patchwork-Id: 111417 Delivered-To: patch@linaro.org Received: by 10.140.95.112 with SMTP id h103csp2923267qge; Thu, 31 Aug 2017 11:01:12 -0700 (PDT) X-Received: by 10.99.43.20 with SMTP id r20mr3470244pgr.210.1504202472384; Thu, 31 Aug 2017 11:01:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504202472; cv=none; d=google.com; s=arc-20160816; b=DRxQ3y8yt0xI2DnkmG0HTFqYg+V4hcT+mVXhGs9F7VOfpouSB9fw4Ov/5RZVbYwx8r HAJdJVHsVHRsMPyzEkQ2l8yriDO9QPYdQLLMXIpIorxFpf41z0fH5WVc9jORWKPASsMk ETUlkSqLyFX8PzPuOK2Yym1elKOUmp6BjjuSUE3zXK+Z0rO92hYCjyd/6LE46PDmJuPc hpa7ZeDtDdohrRlGiDVD+KTu1TKhofWeycz7FLgcO8jXTR4Ipdux8dyDmD3f2TRrPz4D OYqVOExkxZTO9zzbh9GbRCpR5TXGxk6AD21mgN5nlrHwSTT72vGUC+QsPGr+zfbPyDvw TVDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=9OMT8m+lUBYaeZKZF1WMnuGRHUIOm/QWgX2CjuswVS0=; b=LaA7kmueIhhrvebxvpm/myLQv82lW0itx57Bl0lXPy7FZmQtcF0YAGaQUSZoa4fmnr eM5iYJYetSdcFwehQYkQYCty72khUhJuDjNbxHVBNhdb6opvyJjL6mhcsO9C9vRQ0fwd xBrVTSKIzyKDSJUYfhl9rGgKCpiWTPR9jBJCN8ixUrD7Jdv7lmee9uopYRS1WIlsfjJs Vw4IC7YGKcIO1k1zAgAg6DurvMlhmVIamMMiKFjkJqzjjP28cnUAHMBXco37+na/Ls5Z 7pPcicnjjnBha9Q1Iy1IwAH39a4MQqE/e79B3Ttw3rpyJ+631MKdaL//2x1Mwij0j8rT h0CQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QV4BvQVM; 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=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m11si162748pln.775.2017.08.31.11.01.12; Thu, 31 Aug 2017 11:01:12 -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=pass header.i=@linaro.org header.s=google header.b=QV4BvQVM; 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=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751547AbdHaSBI (ORCPT + 26 others); Thu, 31 Aug 2017 14:01:08 -0400 Received: from mail-wm0-f49.google.com ([74.125.82.49]:37831 "EHLO mail-wm0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751388AbdHaSBE (ORCPT ); Thu, 31 Aug 2017 14:01:04 -0400 Received: by mail-wm0-f49.google.com with SMTP id u26so2328361wma.0 for ; Thu, 31 Aug 2017 11:01:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9OMT8m+lUBYaeZKZF1WMnuGRHUIOm/QWgX2CjuswVS0=; b=QV4BvQVMzjUU1k42AOo2HIHJin+L/axlD29dFknPVorji5MkMePeMTRsZGj/TfYyPm mN0le7xojnbeffGylzTttr8geF9UKeZwMhVh1VYAEMLUxAKkIefeidT4DD2/FB35KoSV 3C6wfya53rTE/t0fEBLWYqXOQAc0BkkedkI1k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9OMT8m+lUBYaeZKZF1WMnuGRHUIOm/QWgX2CjuswVS0=; b=oZl44xqc9HXRvckyoXNdPf3wzc8dfgs2TJJI7Tw63I9pcJ2avsn5XkcChTVwGXOriF qbeDzlw4926fXbhNLzPmsd7AiRsWCouStod+9QnouXd8hsbNpXRkng5XgZ5/pDRZXPmw Rk0uWuTW4UEdBJiUKRlELM0VI4Ba8SJQJL6iZS24t01fONLzM2IeRUPLStwFWmtIlTTu GKbi7aQiqidk3nGRprWsLdJUNejE3TJE0vnMI1nvji4ci0vcZuYjocklvoi+VtXHpeNH CN7v1lS1xo0vORyB5WR9/K4ZgJfSYrsZ9vX6afwcRrokTflq7QT5MDsdDbjclmzlpMH4 USGA== X-Gm-Message-State: AHYfb5i0ExRV6ilnmi5JrjsorfKZhTQTUN9W215+CWDiyXjKfs1L20oq keIpzws2uAVWqhMbsB79sA== X-Google-Smtp-Source: ADKCNb5xugD/3YSLKopEjSaKXfwg10XIpQnIy3m8Vq6RpdYAO1C7DAmr7O1XSKQsA5dprl/2vcK17A== X-Received: by 10.28.103.84 with SMTP id b81mr998786wmc.22.1504202462514; Thu, 31 Aug 2017 11:01:02 -0700 (PDT) Received: from localhost.localdomain ([185.14.8.94]) by smtp.gmail.com with ESMTPSA id 66sm635285wmn.17.2017.08.31.11.01.00 (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 31 Aug 2017 11:01:01 -0700 (PDT) From: Paolo Valente To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, broonie@kernel.org, jeremywh7@gmail.com, lnicola@dend.ro, Paolo Valente Subject: [PATCH BUGFIX/IMPROVEMENT 2/2] doc, block, bfq: better describe how to properly configure bfq Date: Thu, 31 Aug 2017 20:00:31 +0200 Message-Id: <20170831180031.3747-3-paolo.valente@linaro.org> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20170831180031.3747-1-paolo.valente@linaro.org> References: <20170831180031.3747-1-paolo.valente@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Many users have reported the lack of an HOWTO for properly configuring bfq as a function of the goal one wants to achieve (max responsiveness, max throughput, ...). In fact, all needed details are already provided in the documentation file bfq-iosched.txt. Yet the document lacks guidance on which parameter descriptions to look at. This commit adds some simple direction. Signed-off-by: Paolo Valente Reviewed-by: Jeremy Hickman Reviewed-by: Laurentiu Nicola --- Documentation/block/bfq-iosched.txt | 78 +++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 24 deletions(-) -- 2.10.0 diff --git a/Documentation/block/bfq-iosched.txt b/Documentation/block/bfq-iosched.txt index 03ff4cc..3d6951d 100644 --- a/Documentation/block/bfq-iosched.txt +++ b/Documentation/block/bfq-iosched.txt @@ -35,7 +35,7 @@ CONTENTS 1-1 Personal systems 1-2 Server systems 2. How does BFQ work? -3. What are BFQ's tunable? +3. What are BFQ's tunables and how to properly configure BFQ? 4. BFQ group scheduling 4-1 Service guarantees provided 4-2 Interface @@ -147,12 +147,12 @@ plus a lot of code, are borrowed from CFQ. contrast, BFQ may idle the device for a short time interval, giving the process the chance to go on being served if it issues a new request in time. Device idling typically boosts the - throughput on rotational devices, if processes do synchronous - and sequential I/O. In addition, under BFQ, device idling is - also instrumental in guaranteeing the desired throughput - fraction to processes issuing sync requests (see the description - of the slice_idle tunable in this document, or [1, 2], for more - details). + throughput on rotational devices and on non-queueing flash-based + devices, if processes do synchronous and sequential I/O. In + addition, under BFQ, device idling is also instrumental in + guaranteeing the desired throughput fraction to processes + issuing sync requests (see the description of the slice_idle + tunable in this document, or [1, 2], for more details). - With respect to idling for service guarantees, if several processes are competing for the device at the same time, but @@ -161,6 +161,15 @@ plus a lot of code, are borrowed from CFQ. idling the device. Throughput is thus as high as possible in this common scenario. + - On flash-based storage with internal queueing of commands + (typically NCQ), device idling happens to be always detrimental + for throughput. So, with these devices, BFQ performs idling + only when strictly needed for service guarantees, i.e., for + guaranteeing low latency or fairness. In these cases, overall + throughput may be sub-optimal. No solution currently exists to + provide both strong service guarantees and optimal throughput + on devices with internal queueing. + - If low-latency mode is enabled (default configuration), BFQ executes some special heuristics to detect interactive and soft real-time applications (e.g., video or audio players/streamers), @@ -248,13 +257,24 @@ plus a lot of code, are borrowed from CFQ. the Idle class, to prevent it from starving. -3. What are BFQ's tunable? -========================== +3. What are BFQ's tunables and how to properly configure BFQ? +============================================================= -The tunables back_seek-max, back_seek_penalty, fifo_expire_async and -fifo_expire_sync below are the same as in CFQ. Their description is -just copied from that for CFQ. Some considerations in the description -of slice_idle are copied from CFQ too. +Most BFQ tunables affect service guarantees (basically latency and +fairness) and throughput. For full details on how to choose the +desired tradeoff between service guarantees and throughput, see the +parameters slice_idle, strict_guarantees and low_latency. For details +on how to maximise throughput, see slice_idle, timeout_sync and +max_budget. The other performance-related parameters have been +inherited from, and have been preserved mostly for compatibility with +CFQ. So far, no performance improvement has been reported after +changing the latter parameters in BFQ. + +In particular, the tunables back_seek-max, back_seek_penalty, +fifo_expire_async and fifo_expire_sync below are the same as in +CFQ. Their description is just copied from that for CFQ. Some +considerations in the description of slice_idle are copied from CFQ +too. per-process ioprio and weight ----------------------------- @@ -284,15 +304,17 @@ number of seeks and see improved throughput. Setting slice_idle to 0 will remove all the idling on queues and one should see an overall improved throughput on faster storage devices -like multiple SATA/SAS disks in hardware RAID configuration. +like multiple SATA/SAS disks in hardware RAID configuration, as well +as flash-based storage with internal command queueing (and +parallelism). So depending on storage and workload, it might be useful to set slice_idle=0. In general for SATA/SAS disks and software RAID of SATA/SAS disks keeping slice_idle enabled should be useful. For any configurations where there are multiple spindles behind single LUN -(Host based hardware RAID controller or for storage arrays), setting -slice_idle=0 might end up in better throughput and acceptable -latencies. +(Host based hardware RAID controller or for storage arrays), or with +flash-based fast storage, setting slice_idle=0 might end up in better +throughput and acceptable latencies. Idling is however necessary to have service guarantees enforced in case of differentiated weights or differentiated I/O-request lengths. @@ -311,13 +333,14 @@ There is an important flipside for idling: apart from the above cases where it is beneficial also for throughput, idling can severely impact throughput. One important case is random workload. Because of this issue, BFQ tends to avoid idling as much as possible, when it is not -beneficial also for throughput. As a consequence of this behavior, and -of further issues described for the strict_guarantees tunable, -short-term service guarantees may be occasionally violated. And, in -some cases, these guarantees may be more important than guaranteeing -maximum throughput. For example, in video playing/streaming, a very -low drop rate may be more important than maximum throughput. In these -cases, consider setting the strict_guarantees parameter. +beneficial also for throughput (as detailed in Section 2). As a +consequence of this behavior, and of further issues described for the +strict_guarantees tunable, short-term service guarantees may be +occasionally violated. And, in some cases, these guarantees may be +more important than guaranteeing maximum throughput. For example, in +video playing/streaming, a very low drop rate may be more important +than maximum throughput. In these cases, consider setting the +strict_guarantees parameter. strict_guarantees ----------------- @@ -419,6 +442,13 @@ The default value is 0, which enables auto-tuning: BFQ sets max_budget to the maximum number of sectors that can be served during timeout_sync, according to the estimated peak rate. +For specific devices, some users have occasionally reported to have +reached a higher throughput by setting max_budget explicitly, i.e., by +setting max_budget to a higher value than 0. In particular, they have +set max_budget to higher values than those to which BFQ would have set +it with auto-tuning. An alternative way to achieve this goal is to +just increase the value of timeout_sync, leaving max_budget equal to 0. + weights -------