Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp7688013ybl; Thu, 16 Jan 2020 04:03:52 -0800 (PST) X-Google-Smtp-Source: APXvYqwRNft1QrSYxW6uLhoq8ESyVjFBNuCFP+8kWcJ84Gr4zOKjna/7UqahqruVcBEa/sqX4Uh3 X-Received: by 2002:a9d:7501:: with SMTP id r1mr1700801otk.196.1579176232269; Thu, 16 Jan 2020 04:03:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579176232; cv=none; d=google.com; s=arc-20160816; b=bK4s9U/9gz8hYe1hltaLAhUegCx3RLhf1D8qo8OWLiGLbS9pVqJx3uEJg6JeksfdkX EH8oG5y6uDXa1IArut7e6w8grYvRHW3LkQvFgINL18t9Jy5BfCOvcICq2I2gdA+KPRhP BCOE43SX1Af95IGnWgrDvIM50YmQPb/b7yTP0B5M9CEF+uNpYMXqcA/2EUXZuwN+DNBQ umEewE+b0XjQz1nhz8r+1ZrLxxiD65+sOSoUYzmLbYbrqJrrVTugJo8NuAQbAHk4Hp/F HyNgCxiD04c0DLr0Aqpd8bs+P5KcA8GyikifZFF9xfSraqbsmy5tbPowEzZdsBr8EJ7u ofQA== 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; bh=Zatjt2stQnGDW6AJU0Pwi0z3C//D87csLsDaOi+FBvA=; b=sDKLze4GxW8ur6K98pnEJUXr5uT0IqKiRzPOCZ/zPCJ9op74nD/y/cuueShhfy1d7b NXx0hlU2Ruvs7pVLgtgJ67fQi0MGcQP8EHHBCIiVN9m0JGrfS/0JieG99wM1TV5N376T sOLMl9hkCQNf7EDlMpcLo9tOYJ+tkz/QxyyeW6z3GMEzPWl3pSsTMsAfgAcu46XSJ3Iv butENcVJLZBWjcamd7+ZgcQBWbdcAlZKvgetx9uOaxEmGlw+Pcs55ClJrA1CssAQ6lWa FUpU4jzAM0PKtsfZpGDtnWH1NzUQt3lIKk4reWy+Cb4cPTZLOcwRNlIWhUBDSyNZu/as rLvA== 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 l7si3658373otn.123.2020.01.16.04.03.37; Thu, 16 Jan 2020 04:03:52 -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 S1726410AbgAPMCm (ORCPT + 99 others); Thu, 16 Jan 2020 07:02:42 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:48138 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726160AbgAPMCm (ORCPT ); Thu, 16 Jan 2020 07:02:42 -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 00GBvSja080841 for ; Thu, 16 Jan 2020 07:02:42 -0500 Received: from e06smtp04.uk.ibm.com (e06smtp04.uk.ibm.com [195.75.94.100]) by mx0a-001b2d01.pphosted.com with ESMTP id 2xhff0fg46-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 16 Jan 2020 07:02:41 -0500 Received: from localhost by e06smtp04.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 16 Jan 2020 12:02:39 -0000 Received: from b06avi18878370.portsmouth.uk.ibm.com (9.149.26.194) by e06smtp04.uk.ibm.com (192.168.101.134) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 16 Jan 2020 12:02:34 -0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06avi18878370.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 00GC2XZC44761500 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 16 Jan 2020 12:02:33 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 45587A4053; Thu, 16 Jan 2020 12:02:33 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 02B3FA4057; Thu, 16 Jan 2020 12:02:31 +0000 (GMT) Received: from localhost.in.ibm.com (unknown [9.124.35.120]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 16 Jan 2020 12:02:30 +0000 (GMT) From: Parth Shah To: linux-kernel@vger.kernel.org Cc: peterz@infradead.org, mingo@redhat.com, vincent.guittot@linaro.org, patrick.bellasi@matbug.net, valentin.schneider@arm.com, qais.yousef@arm.com, pavel@ucw.cz, dhaval.giani@oracle.com, qperret@qperret.net, David.Laight@ACULAB.COM, pjt@google.com, tj@kernel.org, dietmar.eggemann@arm.com Subject: [PATCH v3 0/3] Introduce per-task latency_nice for scheduler hints Date: Thu, 16 Jan 2020 17:32:27 +0530 X-Mailer: git-send-email 2.17.2 X-TM-AS-GCONF: 00 x-cbid: 20011612-0016-0000-0000-000002DDD8B1 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20011612-0017-0000-0000-000033407039 Message-Id: <20200116120230.16759-1-parth@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-01-16_03:2020-01-16,2020-01-15 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 clxscore=1015 suspectscore=0 malwarescore=0 mlxscore=0 priorityscore=1501 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-2001160103 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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(-) -- 2.17.2