Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4030925pxj; Mon, 21 Jun 2021 11:51:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzyQ19Wzgiy9tK7m2M9ADGGRgzpCES9LO8eze+KqH9fSWMKqLX+gsQh/tdTy7ZqAWeGmD5c X-Received: by 2002:a17:906:53c9:: with SMTP id p9mr26595894ejo.419.1624301516130; Mon, 21 Jun 2021 11:51:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624301516; cv=none; d=google.com; s=arc-20160816; b=gC/r9jnHN/d+t/TPXgQOei3eI+AC9N6RL+CTttsXTTW0GIqQ0wRWXd+UDOMMY69bAh cndgc5ygLmcs9tGRwfAuJlf5jYL9tj/o1uniijuesiNX9nxipKid0kPPL8YZWPOgff7t X9WJryb8Nt44lfvJOzl/vlOqXOJAOHs8A1f026N+vE9ym9McNut8xG+nL+eAF0xgsLvG C3gWCFSHm+lNUP9yBLOVaNTtj7h6nXObT4nWzrJEIgZtmw+DvzfLBHT2RIo17tdOgkBj omsh2WvJgwq6Nl3Y7xgvXLsSw3m6uRdDSWihNT8q/M+1Bb8wPZjHSt7VYAsNyZWBQA/B 8qLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=swO++E6Xe5gmahVfon/2vkT+NXylz10k5vVf6UUkIHE=; b=MBt+cC6zrJoeJUtWT1DQBre85jerCApCfigZA2C01kS2yPeLfSsJUh5jAAjA/BzviH X7svl/S6d6niJTBqW60tF0Gv4G/7pc2irIrXitsdT8CTg1WDTBRFvrbQl1alsOafmIDf QWhO3492Cc+fPQDz4kji2qHlZhT9dn7XW5fnCRw9tvv8KvuB3s/ZJm0bHLISOqxYzeCv qz+xmzGU0bgPmv53yy01viGJmLrQzXmnHIZgFh7uuGsN5scisA2n+4U7f6ZehwhEAma2 fcMHEWTR4wxUG0t/GUkCw3ve2G/GBHUeMmI9L4GrlODa7Xnn9WeNJkZ8pUgqelY1mOqR ZN+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KBZ8iSgF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 28si10691793ejk.511.2021.06.21.11.51.33; Mon, 21 Jun 2021 11:51:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KBZ8iSgF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232437AbhFUSwR (ORCPT + 99 others); Mon, 21 Jun 2021 14:52:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:27629 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232229AbhFUSwL (ORCPT ); Mon, 21 Jun 2021 14:52:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624301396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:in-reply-to:in-reply-to:references:references; bh=swO++E6Xe5gmahVfon/2vkT+NXylz10k5vVf6UUkIHE=; b=KBZ8iSgFoiv5EsYTpCoREpjBSWc/xhOrTPvWg6W/49u5B0a8ZwnykG/PhHcDHX0M7cYB+V 2yvBN5i1/MTzAk8AM2jndSdBY6ADaJcgiZz2T1n1V4mcszawO2FGpYAKssufo5sYwujhDp Of2NMmMrlyUSavQXL81RFdpQowORdLQ= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-478-rg8wNIO_PcWWY9qwCK676w-1; Mon, 21 Jun 2021 14:49:55 -0400 X-MC-Unique: rg8wNIO_PcWWY9qwCK676w-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 43483800D55; Mon, 21 Jun 2021 18:49:53 +0000 (UTC) Received: from llong.com (ovpn-114-127.rdu2.redhat.com [10.10.114.127]) by smtp.corp.redhat.com (Postfix) with ESMTP id EE8B75D9CA; Mon, 21 Jun 2021 18:49:51 +0000 (UTC) From: Waiman Long To: Tejun Heo , Zefan Li , Johannes Weiner , Jonathan Corbet , Shuah Khan Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, Andrew Morton , Roman Gushchin , Phil Auld , Peter Zijlstra , Juri Lelli , Waiman Long Subject: [PATCH v2 5/6] cgroup/cpuset: Update description of cpuset.cpus.partition in cgroup-v2.rst Date: Mon, 21 Jun 2021 14:49:23 -0400 Message-Id: <20210621184924.27493-6-longman@redhat.com> In-Reply-To: <20210621184924.27493-1-longman@redhat.com> References: <20210621184924.27493-1-longman@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Update Documentation/admin-guide/cgroup-v2.rst on the newly introduced "isolated" cpuset partition type as well as the ability to create non-top cpuset partition with no cpu allocated to it. Signed-off-by: Waiman Long --- Documentation/admin-guide/cgroup-v2.rst | 65 +++++++++++++++++-------- 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst index b1e81aa8598a..cf40a7f499c0 100644 --- a/Documentation/admin-guide/cgroup-v2.rst +++ b/Documentation/admin-guide/cgroup-v2.rst @@ -2010,8 +2010,9 @@ Cpuset Interface Files It accepts only the following input values when written to. ======== ================================ - "root" a partition root - "member" a non-root member of a partition + "member" Non-root member of a partition + "root" Partition root + "isolated" Partition root without load balancing ======== ================================ When set to be a partition root, the current cgroup is the @@ -2020,6 +2021,11 @@ Cpuset Interface Files partition roots themselves and their descendants. The root cgroup is always a partition root. + With "isolated", the CPUs in that partition root will be in an + isolated state without any load balancing from the scheduler. + Tasks in such a partition must be explicitly bind to each + individual CPU. + There are constraints on where a partition root can be set. It can only be set in a cgroup if all the following conditions are true. @@ -2038,12 +2044,25 @@ Cpuset Interface Files file cannot be reverted back to "member" if there are any child cgroups with cpuset enabled. - A parent partition cannot distribute all its CPUs to its - child partitions. There must be at least one cpu left in the - parent partition. + A parent partition may distribute all its CPUs to its child + partitions as long as it is not the root cgroup and there is no + task directly associated with that parent partition. Otherwise, + there must be at least one cpu left in the parent partition. + A new task cannot be moved to a partition root with no effective + cpu. Once becoming a partition root, changes to "cpuset.cpus" is - generally allowed as long as the first condition above is true, + generally allowed as long as the first condition above is true. + Other constraints for this operation are as follows. + + 1) Any newly added CPUs must be a subset of the parent's + "cpuset.cpus.effective". + 2) Taking away all the CPUs from the parent's "cpuset.cpus.effective" + is only allowed if there is no task associated with the + parent partition. + 3) Deletion of CPUs that have been distributed to child partition + roots are not allowed. + the change will not take away all the CPUs from the parent partition and the new "cpuset.cpus" value is a superset of its children's "cpuset.cpus" values. @@ -2056,6 +2075,7 @@ Cpuset Interface Files ============== ============================== "member" Non-root member of a partition "root" Partition root + "isolated" Partition root without load balancing "root invalid" Invalid partition root ============== ============================== @@ -2063,21 +2083,24 @@ Cpuset Interface Files above are true and at least one CPU from "cpuset.cpus" is granted by the parent cgroup. - A partition root can become invalid if none of CPUs requested - in "cpuset.cpus" can be granted by the parent cgroup or the - parent cgroup is no longer a partition root itself. In this - case, it is not a real partition even though the restriction - of the first partition root condition above will still apply. - The cpu affinity of all the tasks in the cgroup will then be - associated with CPUs in the nearest ancestor partition. - - An invalid partition root can be transitioned back to a - real partition root if at least one of the requested CPUs - can now be granted by its parent. In this case, the cpu - affinity of all the tasks in the formerly invalid partition - will be associated to the CPUs of the newly formed partition. - Changing the partition state of an invalid partition root to - "member" is always allowed even if child cpusets are present. + A partition root becomes invalid if all the CPUs requested in + "cpuset.cpus" become unavailable. This can happen if all the + CPUs have been offlined, or the state of an ancestor partition + root become invalid. In this case, it is not a real partition + even though the restriction of the first partition root condition + above will still apply. The cpu affinity of all the tasks in + the cgroup will then be associated with CPUs in the nearest + ancestor partition. In the special case of a parent partition + competing with a child partition for the only CPU left, the + parent partition wins and the child partition becomes invalid. + + An invalid partition root can be transitioned back to a real + partition root if at least one of the requested CPUs become + available again. In this case, the cpu affinity of all the + tasks in the formerly invalid partition will be associated to + the CPUs of the newly formed partition. Changing the partition + state of an invalid partition root to "member" is always allowed + even if child cpusets are present. Device controller -- 2.18.1