Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp415061ybv; Wed, 19 Feb 2020 02:10:38 -0800 (PST) X-Google-Smtp-Source: APXvYqynQJ0eGay0w4QJjwqOw5VZ7vwZti1yHMO6hZZwp8+nENRbE+DqAF2u0+zp7tHb5UqxU/da X-Received: by 2002:a05:6830:607:: with SMTP id w7mr20035884oti.155.1582107038593; Wed, 19 Feb 2020 02:10:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582107038; cv=none; d=google.com; s=arc-20160816; b=dG7UmbErjI9qe96FjL7F/b1TEOrvAssyW22PjDE0x9AonAFFyuJydobrPKsDZyBGDN Qt7Mop6H86wfxNsRL5A/fMr1mlU50d1UwYxJeGaRrwJzr+MJT1MtWsOBCf8G3ke8GJzy XyH5BYahmC8JmEl6sg8irskKpTBpyzjJ21tN/9Hlo02By46sH33l07QoidxKfouW+FDv 95vuBBT2BvpPrX1/Z9dM0jZL7dmfPxm7ZoPpJR81n0k6/8CSEIkZ0Q7Q4zbI6EqWvPMx S66EE6x9qia+HHRX5frvUhCmS8kCHQItGqWBTZhkO9hzBxmYzIEwHpSs+/78m3DnE8e2 3LFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date:from :references:cc:to:subject; bh=qDq0GOqU8lv7HZn98l9ePKsiavpr1b40RyIfsPG9Hc0=; b=yKdACCE5fCh+jCM5qLEPtGvCgvD00U+kZTqS/6GnJ4dWNdMY0W1mKjJMIjeKLqI/+J q5ZJRFtg2p2FuUgF9Vszl/eD7Kz3aEU8AulT5llkwJmh3whnw4Y/PsxMeRWtOQrwu4nm YATaemlwJzBgJdDmh6wlxNtiXSXdj5aS+sUTLENDkffYMfpQOMd6NF53Q6LCKuTXQiWI ahUZ9lS373+rTn8wPiLUC+dKkeiNKe82hZ4d5QW+fKHkXRbPfn/aWKAdVmmhfZ0s8sXp TaHKkCG9Oc98xKRIno5Un98nTWcrXF0CamzFd4LVDH2a/B3A+5IXN8fJ/chB25tNt5x6 bIUA== 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=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p26si799681oto.240.2020.02.19.02.10.26; Wed, 19 Feb 2020 02:10:38 -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; 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=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726491AbgBSKKR (ORCPT + 99 others); Wed, 19 Feb 2020 05:10:17 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:41516 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726210AbgBSKKQ (ORCPT ); Wed, 19 Feb 2020 05:10:16 -0500 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 01JAAC5j027849 for ; Wed, 19 Feb 2020 05:10:15 -0500 Received: from e06smtp03.uk.ibm.com (e06smtp03.uk.ibm.com [195.75.94.99]) by mx0a-001b2d01.pphosted.com with ESMTP id 2y8ubep375-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 19 Feb 2020 05:10:14 -0500 Received: from localhost by e06smtp03.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 19 Feb 2020 10:10:02 -0000 Received: from b06cxnps4074.portsmouth.uk.ibm.com (9.149.109.196) by e06smtp03.uk.ibm.com (192.168.101.133) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 19 Feb 2020 10:09:57 -0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 01JA9uf253543086 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 19 Feb 2020 10:09:56 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D746211C04A; Wed, 19 Feb 2020 10:09:56 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6B5C711C052; Wed, 19 Feb 2020 10:09:54 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.35.177]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 19 Feb 2020 10:09:54 +0000 (GMT) Subject: Re: [PATCH v3 0/3] Introduce per-task latency_nice for scheduler hints To: chris hyser , vincent.guittot@linaro.org, patrick.bellasi@matbug.net, valentin.schneider@arm.com, dhaval.giani@oracle.com, dietmar.eggemann@arm.com Cc: linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, qais.yousef@arm.com, pavel@ucw.cz, qperret@qperret.net, David.Laight@ACULAB.COM, pjt@google.com, tj@kernel.org References: <20200116120230.16759-1-parth@linux.ibm.com> <8ed0f40c-eeb4-c487-5420-a8eb185b5cdd@linux.ibm.com> From: Parth Shah Date: Wed, 19 Feb 2020 15:39:53 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 x-cbid: 20021910-0012-0000-0000-0000038838A7 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20021910-0013-0000-0000-000021C4CBCF Message-Id: <971909ed-d4e0-6afa-d20b-365ede5a195e@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-02-19_02:2020-02-19,2020-02-19 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 suspectscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 spamscore=0 impostorscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2002190076 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Chris, On 2/19/20 4:30 AM, chris hyser wrote: > On 2/17/20 3:57 AM, Parth Shah wrote: >> >> >> On 1/16/20 5:32 PM, Parth Shah wrote: >>> This is the 3rd revision of the patch set to introduce >>> latency_{nice/tolerance} as a per task attribute. >>> >>> The previous version can be found at: >>> v1: https://lkml.org/lkml/2019/11/25/151 >>> v2: https://lkml.org/lkml/2019/12/8/10 >>> >>> Changes in this revision are: >>> v2 -> v3: >>> - This series changes the longer attribute name to "latency_nice" as per >>>    the comment from Dietmar Eggemann https://lkml.org/lkml/2019/12/5/394 >>> v1 -> v2: >>> - Addressed comments from Qais Yousef >>> - As per suggestion from Dietmar, moved content from newly created >>>    include/linux/sched/latency_tolerance.h to kernel/sched/sched.h >>> - Extend sched_setattr() to support latency_tolerance in tools headers UAPI >>> >>> >>> Introduction: >>> ============== >>> This patch series introduces a new per-task attribute latency_nice to >>> provide the scheduler hints about the latency requirements of the task [1]. >>> >>> Latency_nice is a ranged attribute of a task with the value ranging >>> from [-20, 19] both inclusive which makes it align with the task nice >>> value. >>> >>> The value should provide scheduler hints about the relative latency >>> requirements of tasks, meaning the task with "latency_nice = -20" >>> should have lower latency requirements than compared to those tasks with >>> higher values. Similarly a task with "latency_nice = 19" can have higher >>> latency and hence such tasks may not care much about latency. >>> >>> The default value is set to 0. The usecases discussed below can use this >>> range of [-20, 19] for latency_nice for the specific purpose. This >>> patch does not implement any use cases for such attribute so that any >>> change in naming or range does not affect much to the other (future) >>> patches using this. The actual use of latency_nice during task wakeup >>> and load-balancing is yet to be coded for each of those usecases. >>> >>> As per my view, this defined attribute can be used in following ways for a >>> some of the usecases: >>> 1 Reduce search scan time for select_idle_cpu(): >>> - Reduce search scans for finding idle CPU for a waking task with lower >>>    latency_nice values. >>> >>> 2 TurboSched: >>> - Classify the tasks with higher latency_nice values as a small >>>    background task given that its historic utilization is very low, for >>>    which the scheduler can search for more number of cores to do task >>>    packing.  A task with a latency_nice >= some_threshold (e.g, == 19) >>>    and util <= 12.5% can be background tasks. >>> >>> 3 Optimize AVX512 based workload: >>> - Bias scheduler to not put a task having (latency_nice == -20) on a >>>    core occupying AVX512 based workload. >>> >>> >>> Series Organization: >>> ==================== >>> - Patch 1: Add new attribute latency_nice to task_struct. >>> - Patch 2: Clone parent task's attribute to the child task on fork >>> - Patch 3: Add support for sched_{set,get}attr syscall to modify >>>             latency_nice of the task >>> >>> >>> The patch series can be applied on tip/sched/core at the >>> commit 804d402fb6f6 ("sched/rt: Make RT capacity-aware") >>> >>> >>> References: >>> ============ >>> [1]. Usecases for the per-task latency-nice attribute, >>>       https://lkml.org/lkml/2019/9/30/215 >>> [2]. Task Latency-nice, "Subhra Mazumdar", >>>       https://lkml.org/lkml/2019/8/30/829 >>> [3]. Introduce per-task latency_tolerance for scheduler hints, >>>       https://lkml.org/lkml/2019/12/8/10 >>> >>> >>> Parth Shah (3): >>>    sched: Introduce latency-nice as a per-task attribute >>>    sched/core: Propagate parent task's latency requirements to the child >>>      task >>>    sched: Allow sched_{get,set}attr to change latency_nice of the task >>> >>>   include/linux/sched.h            |  1 + >>>   include/uapi/linux/sched.h       |  4 +++- >>>   include/uapi/linux/sched/types.h | 19 +++++++++++++++++++ >>>   kernel/sched/core.c              | 21 +++++++++++++++++++++ >>>   kernel/sched/sched.h             | 18 ++++++++++++++++++ >>>   tools/include/uapi/linux/sched.h |  4 +++- >>>   6 files changed, 65 insertions(+), 2 deletions(-) >>> >> >> Its been a long time and few revisions since the beginning of the >> discussion around the latency-nice. Hence thought of asking if there is/are >> any further work that needs to be done for adding latency-nice attribute or >> am I missing any piece in here? > > All, I was asked to take a look at the original latency_nice patchset. > First, to clarify objectives, Oracle is not interested in trading > throughput for latency. What we found is that the DB has specific tasks > which do very little but need to do this as absolutely quickly as possible, > ie extreme latency sensitivity. Second, the key to latency reduction in the > task wakeup path seems to be limiting variations of "idle cpu" search. The > latter particularly interests me as an example of "platform size based > latency" which I believe to be important given all the varying size VMs and > containers. > > Parth, I've been using your v3 patchset as the basis of an investigation > into the measurable effects of short-circuiting this search. I'm not quite > ready to put anything out, but the patchset is working well. The only That's a good news as you are able to get a usecase of this patch-set. > feedback I have is that currently non-root can set the value negative which > is inconsistent with 'nice' and I would think a security hole. > I would assume you mean 'latency_nice' here. From my testing, I was not able to set values for any root owned task's latency_nice value by the non-root user. Also, my patch-set just piggybacks on the already existing sched_setattr syscall and hence it should not allow non-root user to do any modifications. Can you confirm this by changing nice (renice) value of a root task from non-root user. I have done the sanity check in the code and thinking where it could possibly have gone wrong. So, can you please specify what values were you able to set outside the [-20, 19] range? Thanks, Parth