From patchwork Fri Mar 31 12:47:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Valente X-Patchwork-Id: 96421 Delivered-To: patch@linaro.org Received: by 10.140.89.233 with SMTP id v96csp714257qgd; Fri, 31 Mar 2017 05:54:58 -0700 (PDT) X-Received: by 10.98.86.152 with SMTP id h24mr2858095pfj.184.1490964898863; Fri, 31 Mar 2017 05:54:58 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z21si5171113pgf.270.2017.03.31.05.54.58; Fri, 31 Mar 2017 05:54:58 -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; 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 S933367AbdCaMy5 (ORCPT + 21 others); Fri, 31 Mar 2017 08:54:57 -0400 Received: from mail-wr0-f177.google.com ([209.85.128.177]:34234 "EHLO mail-wr0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932927AbdCaMsU (ORCPT ); Fri, 31 Mar 2017 08:48:20 -0400 Received: by mail-wr0-f177.google.com with SMTP id l43so106327626wre.1 for ; Fri, 31 Mar 2017 05:48:18 -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:mime-version :content-transfer-encoding; bh=zdYBmmuOTbViFkzqDP6SYbQhSl/swB6x9mbq1xLn7DA=; b=H/abh/3flRZIw9mlJwb3QP2Hq/gvmkHIW6wcsaTPk80KE31gWsx487VVbqhT2Ed0T4 k4UJePD65AZiazS5R/S5np9VuGLF3qXXrynq2312QxnM4R5bzGTFt9SikqiWn0rvdIMk vIepFfawtvO+uDwQy8a9s1/sazuVU5VNA6VKU= 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:mime-version :content-transfer-encoding; bh=zdYBmmuOTbViFkzqDP6SYbQhSl/swB6x9mbq1xLn7DA=; b=uDfxWNLDcgSyfo2t/IerbrYg3fg4yVv0hADGxYksFaMoEcai9zcoVexvJj9m5c6hMl KO3Fek3C53n3LIUEZ77bRTsSvyHY8AFQBguJpffaejAqUrZBwFKe7V/OksRmUhUj7zKj RogEA0h0O3yULu0ThfN6e3kbq9/dmySH7gPG9k1dc3HulH/Id2tqiq895HrwqxUqrlrU vvBaokiKvtdff4aKjSpI1L+g/6b5UVhVOHf3sM+EAtvEhZ8cx30gQL+tr6+P20CrjRrF F73OA5WX4FK4ollaj+xtVteRBA9jnZWkfDGgdYPVqQbasHRELaD9cmgA6FiNeMSJMehO eUXQ== X-Gm-Message-State: AFeK/H0c2mL7Kyl1UngD6AJvQ1dzoYD2TIJsT1rdpTv8Fpa41rMZrvI9FPIAD7CZ2JuSVJYs X-Received: by 10.223.133.35 with SMTP id 32mr2582585wrh.129.1490964497782; Fri, 31 Mar 2017 05:48:17 -0700 (PDT) Received: from localhost.localdomain ([185.14.11.71]) by smtp.gmail.com with ESMTPSA id 189sm2793679wmm.31.2017.03.31.05.48.15 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 31 Mar 2017 05:48:16 -0700 (PDT) From: Paolo Valente To: Jens Axboe , Tejun Heo Cc: Fabio Checconi , Arianna Avanzini , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, linus.walleij@linaro.org, broonie@kernel.org, Paolo Valente Subject: [PATCH V2 00/16] Introduce the BFQ I/O scheduler Date: Fri, 31 Mar 2017 14:47:27 +0200 Message-Id: <20170331124743.3530-1-paolo.valente@linaro.org> X-Mailer: git-send-email 2.10.0 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, with respect to the previous submission [1], these new patch series: - contains all the changes suggested by Jens and Bart [1], apart from those for which I raised doubts that either have been acknowledged, or have not received a reply yet (I will of course apply also the latter changes if those threads restart); - contains a fix to the bug causing the failure reported by Jens [2]. As for major changes, this patch series: - solves the nesting problem between scheduler and io-context locks, by not taking any reference to io contexts anymore [3]; - splits the original, single source file into three files. These last two contributions are provided by two additional patches in the series. I've not merged these changes into the other patches for the following reasons: - Merging these changes would have implied splitting them into further smaller pieces, applying each piece to the right previous patch, and solving all the conflicts generated by each per-patch modification. This would have taken really a lot of time, and would have implied a certain probability of introducing subtle errors (I have tried for a few days, and then abandoned this solution). - The removal of extra io-context references is a non-trivial change to code that has worked the other way, for probably about a decade, in CFQ. The change seems to be fine, but in case of errors, it is probably much easier to find and clearly fix them, if they are confined in a single commit. - A dedicated commit for the removal of extra io-context references also documents how it has been obtained, and what assumptions have been made. - Similarly, an explicit split of the srouce file shows where each piece has gone, instead of exposing only the result of the split, with possible mistakes buried in it. I have run all the tests I could. Some patch still generates WARNINGS with checkpatch.pl, but these WARNINGS seem to be either unavoidable for the involved pieces of code (which the patch just extends), or false positives. Thanks, Paolo [1] https://lkml.org/lkml/2017/3/4/148 [2] https://lkml.org/lkml/2017/3/6/887 [3] https://lkml.org/lkml/2017/3/18/34 Arianna Avanzini (4): block, bfq: add full hierarchical scheduling and cgroups support block, bfq: add Early Queue Merge (EQM) block, bfq: reduce idling only in symmetric scenarios block, bfq: handle bursts of queue activations Paolo Valente (12): block, bfq: introduce the BFQ-v0 I/O scheduler as an extra scheduler block, bfq: improve throughput boosting block, bfq: modify the peak-rate estimator block, bfq: add more fairness with writes and slow processes block, bfq: improve responsiveness block, bfq: reduce I/O latency for soft real-time applications block, bfq: preserve a low latency also with NCQ-capable drives block, bfq: reduce latency during request-pool saturation block, bfq: boost the throughput on NCQ-capable flash-based devices block, bfq: boost the throughput with random I/O on NCQ-capable HDDs block, bfq: remove all get and put of I/O contexts block, bfq: split bfq-iosched.c into multiple source files Documentation/block/00-INDEX | 2 + Documentation/block/bfq-iosched.txt | 531 ++++ block/Kconfig.iosched | 21 + block/Makefile | 1 + block/bfq-cgroup.c | 1139 ++++++++ block/bfq-iosched.c | 5030 +++++++++++++++++++++++++++++++++++ block/bfq-iosched.h | 942 +++++++ block/bfq-wf2q.c | 1616 +++++++++++ include/linux/blkdev.h | 2 +- 9 files changed, 9283 insertions(+), 1 deletion(-) create mode 100644 Documentation/block/bfq-iosched.txt create mode 100644 block/bfq-cgroup.c create mode 100644 block/bfq-iosched.c create mode 100644 block/bfq-iosched.h create mode 100644 block/bfq-wf2q.c -- 2.10.0