Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp802870pxy; Wed, 21 Apr 2021 15:44:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzqNqBnGnoEP1ePp2I62Jc+QIon6zuaJQYLsBgpC9fbTlr72xQIhfJUmPjZ7iMNbC0HaIeJ X-Received: by 2002:a62:2787:0:b029:25a:65a6:9efa with SMTP id n129-20020a6227870000b029025a65a69efamr426701pfn.28.1619045092608; Wed, 21 Apr 2021 15:44:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619045092; cv=none; d=google.com; s=arc-20160816; b=DKiFw4oGZGDbC4j38O9XpSH1oyzKtNqasQWPhR/8HCMm2H+cwW4EbTVfKqsiLe8Yzy vXtwqSO6w7kN/eiYMr2cDlnmI3xYh1dTgDANVJmQNP0lws9PASZa22NPiIXuZ2rBdEKm X24MjEfrsRMV4ENsddkLo1r4rUA3rJBlGzG4e6AF54FsBvz2F2eZCF68c7UdjMrqs8VG io2Zlq+Quj0kn5fwNyZTgB/gEJEx7wlNYI28WdTIr+V9HVpdG6JGpWnMsrYEb7MuWRua 0ZdktMeVKJP4Doq58HxLxsTaKw4pIJchO0BwmOlOu79UCQ2VZZ22xVyIxW1lVrFyI/FM tdbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Po+qU5dt1Yy0qa7l0uLxYfVEa6vaR5MZXziHwyuHotE=; b=skRQpJ5j5Kkd0eg2BqM42IqmyRFKARPBRdo2pi+6qv3mEYamet9OGtGHxHkOslpNqm n1y/Ppuj70jIA8PLVBsy1Sz2xnRhg3lwCKyD0M+mIZa8rq+a82G4moI54VFRM2iNCE3X kpzi3SrGykrsfejLIuYd9T3cUR3TIgnuZoe4RIB18DOnRlkuXkPqDmgmI8hCS0NT5YQl M0jIKP92SjxsNRwPEUumxfvRt+a3GVe8Klxqek/ctk+YNlCiuW00Lljkq4kr13Rp61hc bUcuvx00Ov5Coiyp+9bGKmHwv7jQooDKdw6agg1QLlcHk22udlsNLys8ftBy+wGQvkHN tGOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sslab.ics.keio.ac.jp header.s=google header.b=PjBH4jQp; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lr17si819643pjb.90.2021.04.21.15.44.17; Wed, 21 Apr 2021 15:44:52 -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=@sslab.ics.keio.ac.jp header.s=google header.b=PjBH4jQp; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243863AbhDUPKy (ORCPT + 99 others); Wed, 21 Apr 2021 11:10:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243868AbhDUPJQ (ORCPT ); Wed, 21 Apr 2021 11:09:16 -0400 Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CE503C06138A for ; Wed, 21 Apr 2021 08:08:43 -0700 (PDT) Received: by mail-pl1-x632.google.com with SMTP id u15so13261726plf.10 for ; Wed, 21 Apr 2021 08:08:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sslab.ics.keio.ac.jp; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Po+qU5dt1Yy0qa7l0uLxYfVEa6vaR5MZXziHwyuHotE=; b=PjBH4jQpqFomkLLvOghdtR74zlVVWCzB2L0YShXJND9ZnlX8hieIAcB+2yTU3uQivD kQLlukUypPVt0QqJcSXSvMMHHLPjc96l/C18P0yw6q2L4jgDBdDDpMzmEzGxYtVNniTr /6Npjz1b5YyeGLTBqOVPNxLtW2VoUWjEHE0I0= 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Po+qU5dt1Yy0qa7l0uLxYfVEa6vaR5MZXziHwyuHotE=; b=l3iY2mRWLmCSlyhuv5tgCXHsretNaIEA6s8xUaqq2z/OeRwvS8l/Trsr7aJ/ozUDZv AdKRfbr+LZGk4SQqjSLW9i8NwfKuOElbCSKfld8XJ1gtrFCZKM9WBpLRMjqdcHl6NMpy 208tv4NPx3qHWddwJR/bjSDoxslARkyKpfkW3dUAa1hgxut2PoFj1UHgIhpJpjFVRteC et3ZzQKSZp4RjNFrCDPbC+zCOcJI2YgKHYMRIaJdh1Y5EAY58AizIu48eKreTaC/Gguo EwtxEEoJwoE0fIbgLzd6LkBGwtFjbNyleyIfvn+AS9PVNkNPEqeNOncrUq9qfp0fc5nn dkaA== X-Gm-Message-State: AOAM5339f3M0ZvKcA+1+bZfLCYEEk+yFyJiyYUxXIqxaOumCYrD1/Jdy DOBQG/a+xkZl0GODdHvS0LIkHg== X-Received: by 2002:a17:902:9685:b029:e9:abc1:7226 with SMTP id n5-20020a1709029685b02900e9abc17226mr34832987plp.64.1619017723394; Wed, 21 Apr 2021 08:08:43 -0700 (PDT) Received: from haraichi.dnlocal (113x36x239x145.ap113.ftth.ucom.ne.jp. [113.36.239.145]) by smtp.googlemail.com with ESMTPSA id f3sm5432553pjo.3.2021.04.21.08.08.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Apr 2021 08:08:42 -0700 (PDT) From: Kenta Ishiguro To: Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , David Hildenbrand , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, pl@sslab.ics.keio.ac.jp, kono@sslab.ics.keio.ac.jp, Kenta Ishiguro Subject: [RFC PATCH 1/2] Prevent CFS from ignoring boost requests from KVM Date: Thu, 22 Apr 2021 00:08:30 +0900 Message-Id: <20210421150831.60133-2-kentaishiguro@sslab.ics.keio.ac.jp> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210421150831.60133-1-kentaishiguro@sslab.ics.keio.ac.jp> References: <20210421150831.60133-1-kentaishiguro@sslab.ics.keio.ac.jp> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This commit increases the vruntime of yielded vCPU to boost a vCPU instead of the yielded vCPU when two vCPUs are in the same VM. This change avoids the situation where scheduling the boosted vCPU is too unfair. Cc: David Hildenbrand Signed-off-by: Kenta Ishiguro --- kernel/sched/fair.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 794c2cb945f8..2908da3f4c77 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7204,9 +7204,36 @@ static void yield_task_fair(struct rq *rq) set_skip_buddy(se); } +static void deboost_yield_task_vruntime(struct sched_entity *next_se, struct sched_entity *yield_se) +{ + if (wakeup_preempt_entity(next_se, yield_se) < 1) + return; + yield_se->vruntime = next_se->vruntime - wakeup_gran(yield_se); +} + +static void deboost_yield_task(struct sched_entity *next_se, struct sched_entity *yield_se) +{ + struct sched_entity *next_se_base = next_se; + + if (rq_of(cfs_rq_of(yield_se)) != rq_of(cfs_rq_of(next_se))) + return; + + for_each_sched_entity(yield_se) { + next_se = next_se_base; + for_each_sched_entity(next_se) { + if (cfs_rq_of(yield_se) == cfs_rq_of(next_se)) { + deboost_yield_task_vruntime(next_se, yield_se); + return; + } + } + } +} + static bool yield_to_task_fair(struct rq *rq, struct task_struct *p) { struct sched_entity *se = &p->se; + struct task_struct *curr; + struct sched_entity *yield_se; /* throttled hierarchies are not runnable */ if (!se->on_rq || throttled_hierarchy(cfs_rq_of(se))) @@ -7215,6 +7242,10 @@ static bool yield_to_task_fair(struct rq *rq, struct task_struct *p) /* Tell the scheduler that we'd really like pse to run next. */ set_next_buddy(se); + curr = rq->curr; + yield_se = &curr->se; + deboost_yield_task(se, yield_se); + yield_task_fair(rq); return true; -- 2.30.2