From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753519AbcEPJgd (ORCPT ); Mon, 16 May 2016 05:36:33 -0400 Received: from forward-corp1f.mail.yandex.net ([95.108.130.40]:43049 "EHLO forward-corp1f.mail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752698AbcEPJgc (ORCPT ); Mon, 16 May 2016 05:36:32 -0400 Authentication-Results: smtpcorp1m.mail.yandex.net; dkim=pass header.i=@yandex-team.ru Subject: [PATCH RFC 0/3] sched/fair: cpu time reserves for cgroups From: Konstantin Khlebnikov To: Peter Zijlstra , Ingo Molnar , linux-kernel@vger.kernel.org Cc: Tejun Heo , cgroups@vger.kernel.org, containers@lists.linux-foundation.org Date: Mon, 16 May 2016 12:36:19 +0300 Message-ID: <146339085068.25295.7687045977863852568.stgit@buzz> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This feature allows to change cpu cgroup weight for a limited time. Cgroup interface: cpu.cfs_reserve_us - reserved time for each cpu.cfs_period_us cpu.cfs_reserve_shares - group weight during reserved time While cfs group consumes reserved cpu time it has different weight, thus it gets different vruntime penalty for that execution. ^ weight | | reserve | shares -------* | | | | | | shares - *-----------------* | | | | 0------|-----------------|-----------> time reserve quota Reserve can work as a "low limit": boost weight for "guaranteed" time, and as a "high limit": give normal weight for a limited time and allow utilize cpu when nobody else needs it. Sample setup: level | shares reserve shares --------+---------------------------- high | 1024*16 1024*16*16 normal | 1024 1024*16 low | 1024/16 1024 In this way cgroups are devided into three levels. During reserved time they are promoted to the next level. --- Konstantin Khlebnikov (3): sched/fair: call __refill_cfs_bandwidth_runtime only for finite quota sched/fair: copy taskgroup shares to each cfs_rq sched/fair: pulse-weight modulation controller for cpu cgroup kernel/sched/core.c | 96 +++++++++++++++++++++++++++++++++++++++++++----- kernel/sched/fair.c | 101 ++++++++++++++++++++++++++++++++++++++------------ kernel/sched/sched.h | 5 ++ 3 files changed, 168 insertions(+), 34 deletions(-)