Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp1132031ybx; Tue, 5 Nov 2019 10:53:29 -0800 (PST) X-Google-Smtp-Source: APXvYqzykHg0iFeYShQM8To9T6jgDBXHeno2N0tUEeixQ1QDCLrSP1bFHuBxI+mSTUpt5+oHKjJ7 X-Received: by 2002:a17:906:27cc:: with SMTP id k12mr4969313ejc.181.1572980008942; Tue, 05 Nov 2019 10:53:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572980008; cv=none; d=google.com; s=arc-20160816; b=eXkrfrSm8Y5QY7rBNb65AsHN7DGrhkTmZ90HxE6esnUmYcoS4j0OkaYvswqGG2bqUA SfNgu9I2/+dG/7ddBk3ycmJIAd6OjYKV7PN0LoEMNDwsd2TVLyvHWmZ9phK1gXa6q0Mu P59+4IB3CH9MuY8bvT6GcKv+5Bh/PwwjISKa60Lk3kuLJ5Bp0NvjjDcvUrDnKegLH/JJ SN/VXqklV+6tI9rPyhyhfcyWCCmd3qPnieOM6JlKdDeK1HzCbAVh9hxW6lwoiuiyB28s k7qtkUgdmBDyzmlM0x4s9RV5heD0lHlE8f93zhxt5NNHriR82P7FdhtvxW5f8Krqm102 Pl4A== 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 :dkim-signature; bh=QiHr0wr7xUtLHK/xlUaLvIcRzN4iQaJpvCEObB+Bb8g=; b=Jmnr1isf2HQ4zYljS56dosHJ/PbJN+o21IPaCsg8v2QlE7HCQEABsiatkT4bBpldO6 pVrXszH3NN8duxCwZVPzQ4YnEQ5GpmFpcW1X2wbwuZWrmWINT/P+Wiag25BVpe+eKVw1 s8qrpzSOem1zlKgrnLHYcOEl/cgupbqDOCrBn5POrrsybCGkelkk+ArMCEv3+OD1nYTk Q9watRNx2EBzPhGPmSAzZw18kTo0cwpCf0ub2Lpg9dEw504e9DuSzfrbMTKRGpP0mx0L 92dTGKiNOfMPaCxZNlf+BEtJnXE8Ez91+XvWoilTSv9ToqGm4AFpaecuPUZwSO0tR5W9 T4Ow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=o4W8JnnU; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g6si12129607edk.210.2019.11.05.10.53.05; Tue, 05 Nov 2019 10:53:28 -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; dkim=pass header.i=@linaro.org header.s=google header.b=o4W8JnnU; 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 S2390774AbfKEStu (ORCPT + 99 others); Tue, 5 Nov 2019 13:49:50 -0500 Received: from mail-qt1-f196.google.com ([209.85.160.196]:37827 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389861AbfKEStt (ORCPT ); Tue, 5 Nov 2019 13:49:49 -0500 Received: by mail-qt1-f196.google.com with SMTP id g50so30744208qtb.4 for ; Tue, 05 Nov 2019 10:49:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=QiHr0wr7xUtLHK/xlUaLvIcRzN4iQaJpvCEObB+Bb8g=; b=o4W8JnnUTAJKw4OTkoGugVaHjYrWyK4CUhBKPvJ3MOlkCcjdZl/SjCtTR06iED1GAB EX7C6t5h9qfofpPpnRTQVNL/rlvIr0RRKl6tYcb2cFPKNDEq+CDhjeFQqFvslPhdEYn3 m6S8RFYEn5KZxKdSPK3GjOMwuS1N14hQ/C6FPpI+F0Er49Yo5eaOWQ18XWndU8hj7Gjo x7STOtuyJvVhoWKsyhTc85fTFVeY1jRcdEQQHJZXFIr3mY0ZVVpZjgAcg4ahC4vUXREc gG0q6ZiIgv9V8ATTAQE+Agqrfpi4vkJ2I3bbYBnL76PlERxVGwlygI1xtuT+yeLugrhB TYug== 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; bh=QiHr0wr7xUtLHK/xlUaLvIcRzN4iQaJpvCEObB+Bb8g=; b=cGG6jT95MdKtFfzhcWbn54DO3CZ7RbTXo6Qx19C0Ym/ME9QWwdb+1/JFDBz9ngm2bd iHWDHkWyGDwpWJ/e/ryaEfjpAm4JBc1YqDugYOczFE4BBqYX+vpXNbjf8E/lOAdseh7s VRl76TTV3vQPrcTvGWu2f9q4LpzAqy50mnO3OL5jw3QUAutm944P70mEcoy3Q76nzjQG uls117KsT2v7Ei6ENuWo+j7lJd9hoEIAvZ3JhEqRpEk+vShZ4iKCjbyxWnJAkUPVWzTW F9j0u0OUuEQsZmwhFhBSRhJ9kgDeXmGhfTgSuGZQ/8RAeINpECvhX40jSkosvoiZc/bH c58w== X-Gm-Message-State: APjAAAVIw7rntXLxQO5Jm+Fg4UuzfLmOsc28fkvr3QaJUGvrlubAtKox RzBw5lkaVVCwXwh1MSvem6E7Qw== X-Received: by 2002:ac8:3679:: with SMTP id n54mr14801462qtb.25.1572979788365; Tue, 05 Nov 2019 10:49:48 -0800 (PST) Received: from Thara-Work-Ubuntu.fios-router.home (pool-71-255-246-27.washdc.fios.verizon.net. [71.255.246.27]) by smtp.googlemail.com with ESMTPSA id j7sm6832565qkd.46.2019.11.05.10.49.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 05 Nov 2019 10:49:47 -0800 (PST) From: Thara Gopinath To: mingo@redhat.com, peterz@infradead.org, ionela.voinescu@arm.com, vincent.guittot@linaro.org, rui.zhang@intel.com, edubezval@gmail.com, qperret@google.com Cc: linux-kernel@vger.kernel.org, amit.kachhap@gmail.com, javi.merino@kernel.org, daniel.lezcano@linaro.org Subject: [Patch v5 0/6] Introduce Thermal Pressure Date: Tue, 5 Nov 2019 13:49:40 -0500 Message-Id: <1572979786-20361-1-git-send-email-thara.gopinath@linaro.org> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Thermal governors can respond to an overheat event of a cpu by capping the cpu's maximum possible frequency. This in turn means that the maximum available compute capacity of the cpu is restricted. But today in the kernel, task scheduler is not notified of capping of maximum frequency of a cpu. In other words, scheduler is unaware of maximum capacity restrictions placed on a cpu due to thermal activity. This patch series attempts to address this issue. The benefits identified are better task placement among available cpus in event of overheating which in turn leads to better performance numbers. The reduction in the maximum possible capacity of a cpu due to a thermal event can be considered as thermal pressure. Instantaneous thermal pressure is hard to record and can sometime be erroneous as there can be mismatch between the actual capping of capacity and scheduler recording it. Thus solution is to have a weighted average per cpu value for thermal pressure over time. The weight reflects the amount of time the cpu has spent at a capped maximum frequency. Since thermal pressure is recorded as an average, it must be decayed periodically. Exisiting algorithm in the kernel scheduler pelt framework is re-used to calculate the weighted average. This patch series also defines a sysctl inerface to allow for a configurable decay period. Regarding testing, basic build, boot and sanity testing have been performed on db845c platform with debian file system. Further, dhrystone and hackbench tests have been run with the thermal pressure algorithm. During testing, due to constraints of step wise governor in dealing with big little systems, trip point 0 temperature was made assymetric between cpus in little cluster and big cluster; the idea being that big core will heat up and cpu cooling device will throttle the frequency of the big cores faster, there by limiting the maximum available capacity and the scheduler will spread out tasks to little cores as well. Test Results Hackbench: 1 group , 30000 loops, 10 runs Result SD (Secs) (% of mean) No Thermal Pressure 14.03 2.69% Thermal Pressure PELT Algo. Decay : 32 ms 13.29 0.56% Thermal Pressure PELT Algo. Decay : 64 ms 12.57 1.56% Thermal Pressure PELT Algo. Decay : 128 ms 12.71 1.04% Thermal Pressure PELT Algo. Decay : 256 ms 12.29 1.42% Thermal Pressure PELT Algo. Decay : 512 ms 12.42 1.15% Dhrystone Run Time : 20 threads, 3000 MLOOPS Result SD (Secs) (% of mean) No Thermal Pressure 9.452 4.49% Thermal Pressure PELT Algo. Decay : 32 ms 8.793 5.30% Thermal Pressure PELT Algo. Decay : 64 ms 8.981 5.29% Thermal Pressure PELT Algo. Decay : 128 ms 8.647 6.62% Thermal Pressure PELT Algo. Decay : 256 ms 8.774 6.45% Thermal Pressure PELT Algo. Decay : 512 ms 8.603 5.41% A Brief History The first version of this patch-series was posted with resuing PELT algorithm to decay thermal pressure signal. The discussions that followed were around whether intanteneous thermal pressure solution is better and whether a stand-alone algortihm to accumulate and decay thermal pressure is more appropriate than re-using the PELT framework. Tests on Hikey960 showed the stand-alone algorithm performing slightly better than resuing PELT algorithm and V2 was posted with the stand alone algorithm. Test results were shared as part of this series. Discussions were around re-using PELT algorithm and running further tests with more granular decay period. For some time after this development was impeded due to hardware unavailability, some other unforseen and possibly unfortunate events. For this version, h/w was switched from hikey960 to db845c. Also Instantaneous thermal pressure was never tested as part of this cycle as it is clear that weighted average is a better implementation. The non-PELT algorithm never gave any conclusive results to prove that it is better than reusing PELT algorithm, in this round of testing. Also reusing PELT algorithm means thermal pressure tracks the other utilization signals in the scheduler. v3->v4: - "Patch 3/7:sched: Initialize per cpu thermal pressure structure" is dropped as it is no longer needed following changes in other other patches. - rest of the change log mentioned in specific patches. Thara Gopinath (6): sched/pelt.c: Add support to track thermal pressure sched/fair: Add infrastructure to store and update instantaneous thermal pressure sched/fair: Enable periodic update of thermal pressure sched/fair: update cpu_capcity to reflect thermal pressure thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping sched/fair: Enable tuning of decay period Documentation/admin-guide/kernel-parameters.txt | 5 ++ drivers/thermal/cpu_cooling.c | 36 ++++++++++++- include/linux/sched.h | 9 ++++ kernel/sched/fair.c | 69 +++++++++++++++++++++++++ kernel/sched/pelt.c | 13 +++++ kernel/sched/pelt.h | 7 +++ kernel/sched/sched.h | 1 + 7 files changed, 138 insertions(+), 2 deletions(-) -- 2.1.4