Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp3739823imm; Thu, 17 May 2018 13:58:01 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoeY9rBDg3AibR4f45LU8dSDWnklD2iivAMVAlbExZLAcnBfarr2auMNCeiB6ar1x/QDEpk X-Received: by 2002:a17:902:5502:: with SMTP id f2-v6mr6630143pli.108.1526590681395; Thu, 17 May 2018 13:58:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526590681; cv=none; d=google.com; s=arc-20160816; b=GQ5YXLnQ1GBqWvnzGMcLfit3GbNMUteTJdjwPcNePJZ4TvEb8LWCWKGfvm8Tb0uiHX 1edtBtLMfI+01EcJ2Ec8E9Zj09bgjjQr2jubDqYLfVn4EnAXOT6tbsB7YzmjhaJOV0Y+ 3319D2XV870t6+lGmYaOmB/T+0H9PQacEXvJSIGXUDfvRe04bU+5DbYk09h7XtGvlP0/ VFt9ajC1xXG/pqV5GhoVBaMd04zV05NUp8mS37ff7IhVf1Z0g0NCwmfJvOY5/+ByahZv Svq2yMZi/5nmECNwmiHBm5WggB4IZVqP7Ptz+NLjISLDoJbDcdNPxHn0MVyu3xwf/1oy CBKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=oK7l4riuaRyaPrjMJCyZ2gjNPR5qS+O+gIVHuBeRJBI=; b=M6TrXXxsUtChGe0YO7K8D0zk46PsWLQCMDQH/z5azLK8+mYJP9g+zXln3h+uinGbN0 QIcsrHN2NxMF306XGvXBomPtPs78kGLVVWdBCaEHZN8MdbZ2iQyJDl5TwOZlcPnELMFg Jl6ViuxzfAak3omBiZEzeWYFz0d3LY2X2kTGkUCo4RZu/h3S4Ezw6jYvg4dPkihJScIZ QPD5GyH2iQ4B6vlNH2JipL0qa3pH11Rv/hoKEqOBj75hcNBM4cUCjx2BF3ueRGSu4zSZ f3wn3zVd0PTk/3rDrF2DuBl2RFEBlJkkxfotE1CNVrLz4iJmSvyiISU41xt2xklLlh8G kmkA== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b36-v6si5887455pli.30.2018.05.17.13.57.47; Thu, 17 May 2018 13:58:01 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752204AbeEQUz7 (ORCPT + 99 others); Thu, 17 May 2018 16:55:59 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:43690 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751017AbeEQUz4 (ORCPT ); Thu, 17 May 2018 16:55:56 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3DAF77D84C; Thu, 17 May 2018 20:55:56 +0000 (UTC) Received: from llong.com (dhcp-17-164.bos.redhat.com [10.18.17.164]) by smtp.corp.redhat.com (Postfix) with ESMTP id 091252024CBB; Thu, 17 May 2018 20:55:55 +0000 (UTC) From: Waiman Long To: Tejun Heo , Li Zefan , Johannes Weiner , Peter Zijlstra , Ingo Molnar Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kernel-team@fb.com, pjt@google.com, luto@amacapital.net, Mike Galbraith , torvalds@linux-foundation.org, Roman Gushchin , Juri Lelli , Waiman Long Subject: [PATCH v8 0/6] Enable cpuset controller in default hierarchy Date: Thu, 17 May 2018 16:55:39 -0400 Message-Id: <1526590545-3350-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 17 May 2018 20:55:56 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 17 May 2018 20:55:56 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'longman@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org v8: - Remove cpuset.cpus.isolated and add a new cpuset.sched.domain flag and rework the code accordingly. v7: - Add a root-only cpuset.cpus.isolated control file for CPU isolation. - Enforce that load_balancing can only be turned off on cpusets with CPUs from the isolated list. - Update sched domain generation to allow cpusets with CPUs only from the isolated CPU list to be in separate root domains. v6: - Hide cpuset control knobs in root cgroup. - Rename effective_cpus and effective_mems to cpus.effective and mems.effective respectively. - Remove cpuset.flags and add cpuset.sched_load_balance instead as the behavior of sched_load_balance has changed and so is not a simple flag. - Update cgroup-v2.txt accordingly. v5: - Add patch 2 to provide the cpuset.flags control knob for the sched_load_balance flag which should be the only feature that is essential as a replacement of the "isolcpus" kernel boot parameter. v4: - Further minimize the feature set by removing the flags control knob. v3: - Further trim the additional features down to just memory_migrate. - Update Documentation/cgroup-v2.txt. v6 patch: https://lkml.org/lkml/2018/3/21/530 v7 patch: https://lkml.org/lkml/2018/4/19/448 The purpose of this patchset is to provide a basic set of cpuset control files for cgroup v2. This basic set includes the non-root "cpus", "mems", "sched.load_balance" and "sched.domain". The "cpus.effective" and "mems.effective" will appear in all cpuset-enabled cgroups. The new control file that is unique to v2 is "sched.domain". It is a boolean flag file that designates if a cgroup is a scheduling domain with its own set of unique list of CPUs from scheduling perspective disjointed from other scheduling domains. The root cgroup is always a scheduling domain. Multiple levels of scheduling domains are supported with some limitations. So a container scheduling domain root can behave like a real root. When a scheduling domain cgroup is removed, its list of exclusive CPUs will be returned to the parent's cpus.effective automatically. The "sched.load_balance" flag can only be changed in a scheduling domain. with no child cpuset-enabled cgroups. This patchset supports isolated CPUs in a child scheduling domain with load balancing off. It also allows easy setup of multiple scheduling domains without requiring the trick of turning load balancing off in the root cgroup. This patchset does not exclude the possibility of adding more features in the future after careful consideration. Patch 1 enables cpuset in cgroup v2 with cpus, mems and their effective counterparts. Patch 2 adds a new "sched.domain" control file for setting up multiple scheduling domains. A scheduling domain implies cpu_exclusive. Patch 3 adds a "sched.load_balance" flag to turn off load balancing in a scheduling domain. Patch 4 updates the scheduling domain genaration code to work with the new scheduling domain feature. Patch 5 exposes cpus.effective and mems.effective to the root cgroup as enabling child scheduling domains will take CPUs away from the root cgroup. So it will be nice to monitor what CPUs are left there. Patch 6 enables the printing the debug information about scheduling domain generation. Waiman Long (6): cpuset: Enable cpuset controller in default hierarchy cpuset: Add new v2 cpuset.sched.domain flag cpuset: Add cpuset.sched.load_balance flag to v2 cpuset: Make generate_sched_domains() recognize isolated_cpus cpuset: Expose cpus.effective and mems.effective on cgroup v2 root cpuset: Allow reporting of sched domain generation info Documentation/cgroup-v2.txt | 136 +++++++++++++++- kernel/cgroup/cpuset.c | 375 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 492 insertions(+), 19 deletions(-) -- 1.8.3.1