Received: by 2002:a05:7412:8521:b0:e2:908c:2ebd with SMTP id t33csp2358226rdf; Mon, 6 Nov 2023 11:39:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IE3xuJRu9RbP3jf+2wx5rKv3GRX2iR0MYXL4Ktb/GfNZF54fQzzuLOJgeCNDZpSV7xBPPwf X-Received: by 2002:a05:6a20:7fa8:b0:184:26f8:4396 with SMTP id d40-20020a056a207fa800b0018426f84396mr4339243pzj.21.1699299546700; Mon, 06 Nov 2023 11:39:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699299546; cv=none; d=google.com; s=arc-20160816; b=nvpkhr8a0RqFFxagIxtQOaobg6c7fqJUOgiPvFLxqycaliQlDPeL1y7E5hKEtuEAQb E5ZpYmjfRIbh6IUcJvq3Hc80ts6X16vdkxOYKUwYgb5rCEceJZEJF8bJAfetuaCOgj6Z J+B9Gbtn6LMQ+XQNPKgOcciKmx3Qu4W/gYGj1SUI96n/IIn9ux1+5Xfn6u8lbeJ13Lle EAqDbomvRmr2dtpWjcWsxZBDapkYet53eU/hih/7yFUL/8GEhXitxeOdZ60LeWzZwR++ ly+leXln7xNaPcqGALs/d4eZ+wJkYipiWZgE2B04pTSd20tmTG5LAQZdviIXDgTFibv9 tdAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=tlM0fUGrXkJ77vpxrL8Ua3abDkMWMrcPq7YvjnZzG1k=; fh=7UDRnXAyFwoHSGMn0t+ldgDKuKM1JE0l1TSpusfeMFI=; b=lD9ad5eE5uVJ0piAmnN4Kk/Q7vm7s33n/VMG4M4sS71Ei5aVaS0Fme+sd2mV9OUR2W cHmu+zbLq129No6rro3eJUe6uGjIHyFNCzw6P5CujggK1kWkLeuVgjNG3520G7jaxEg+ Lewl8vZ3KZtp2bKd5wXnEiahqxzvPq9/aiwMTvuiXJCTHv+EcZKKxOBImfXMX2iO8wnN rplxSg8fkqwvRNtdmmgyRqkb31b9IIXgh3qFzzibaEdLKMSw1cDn876rL/1CxQIAcb2J IizG0BQRtj6Zrc2NS/Hx7j3QZNHvj/KaB9gzDkgVq88bsIDPZlP8LXagLT7ltv6/JWOI 7K5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="RK/X8K9q"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id ot13-20020a17090b3b4d00b0028007dadafbsi9140946pjb.58.2023.11.06.11.39.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Nov 2023 11:39:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="RK/X8K9q"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 0446D804B29E; Mon, 6 Nov 2023 11:38:47 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232885AbjKFTgt (ORCPT + 99 others); Mon, 6 Nov 2023 14:36:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232721AbjKFTgJ (ORCPT ); Mon, 6 Nov 2023 14:36:09 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38DC21723 for ; Mon, 6 Nov 2023 11:36:01 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id 98e67ed59e1d1-280465be3c9so3227574a91.1 for ; Mon, 06 Nov 2023 11:36:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1699299360; x=1699904160; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=tlM0fUGrXkJ77vpxrL8Ua3abDkMWMrcPq7YvjnZzG1k=; b=RK/X8K9qOxJs3epYdFPaemyKI7J1R12sGYnQSKcCYMnAzRGStO1qECjUhuu9m/2no+ jT3qummZDFbo/w4tGzL4t3uD+f1kSEAjF0shzjvcNvhrGYhDDBMWe+l5OkjS78lmnZ7N KFJNHuwDZ2H6KvskuOnzyhWz19C6+2d+Un3DhxFKReFYi5W/wk+V722W8dP7tN7RHmri PSYbBBYITsCCD/jWtYamBpSH3yF2pY1YPGVHNDzX57eB3wMhRmhJwGjLDCvh2URAM+Ix AC3mm6rXaXvgCz315aIPTeoYwyZvWK1F6HKbUxefyNXigAhRudpk6ymPxlNeS93xQ13n kvZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699299360; x=1699904160; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tlM0fUGrXkJ77vpxrL8Ua3abDkMWMrcPq7YvjnZzG1k=; b=qyYMmo+e/hAVeJHtFFqwVDUK36INljF+89IkgTk8icVj+qVhoIzrma7YJ7QjGTjanf lxyFoeL2njJauHOswNCOk+5zGMOd/yRkQ3SHx/AxqB6aGwFgJeDr14Gd3lz/yXzBYDEB sHybPOmBDZZzk7zDbnJHp1l8nYyU8i/sZSRHZ3js3+InCQCY8H+tzEjlqQOub0v+l/9z RuCPCPj4aG80O+SaFoQA467ce8yjPExsCuyXfvkbrZpTv0aC5WWerYMAPfJgxyyeewFF hP37F5uHX7l7xqcf5+ud0VJtgK6yaJLfta7XHjhWTYOlmjlkAgXvR3TzPX2WJkC6DJHe jSJw== X-Gm-Message-State: AOJu0YyClRRnkL0/WV5xu2RsXyU547J+uq6cansDYl5BBQlgy4nNduDR FbKPlGB/6EsFYlz+X7CAbRn7UTQtPp0KfcNaUUs6IPnw/oGJlM8qqquMhx5eyCxOFLsjc9ZrC3p lLcV/JUwo7R3exEi/9viNmd2ANWphd1GrECz+06Ek6lyCM0fs7TGCtnwmn70jL7xVAPkYo1A= X-Received: from jstultz-noogler2.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:600]) (user=jstultz job=sendgmr) by 2002:a17:90a:c708:b0:280:47ba:7685 with SMTP id o8-20020a17090ac70800b0028047ba7685mr14653pjt.0.1699299359325; Mon, 06 Nov 2023 11:35:59 -0800 (PST) Date: Mon, 6 Nov 2023 19:34:55 +0000 In-Reply-To: <20231106193524.866104-1-jstultz@google.com> Mime-Version: 1.0 References: <20231106193524.866104-1-jstultz@google.com> X-Mailer: git-send-email 2.42.0.869.gea05f2083d-goog Message-ID: <20231106193524.866104-13-jstultz@google.com> Subject: [PATCH v6 12/20] sched: Fix runtime accounting w/ split exec & sched contexts From: John Stultz To: LKML Cc: John Stultz , Joel Fernandes , Qais Yousef , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Valentin Schneider , Steven Rostedt , Ben Segall , Zimuzo Ezeozue , Youssef Esmat , Mel Gorman , Daniel Bristot de Oliveira , Will Deacon , Waiman Long , Boqun Feng , "Paul E . McKenney" , kernel-team@android.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 06 Nov 2023 11:38:47 -0800 (PST) The idea here is we want to charge the scheduler-context task's vruntime but charge the execution-context task's sum_exec_runtime. This way cputime accounting goes against the task actually running but vruntime accounting goes against the selected task so we get proper fairness. Cc: Joel Fernandes Cc: Qais Yousef Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Juri Lelli Cc: Vincent Guittot Cc: Dietmar Eggemann Cc: Valentin Schneider Cc: Steven Rostedt Cc: Ben Segall Cc: Zimuzo Ezeozue Cc: Youssef Esmat Cc: Mel Gorman Cc: Daniel Bristot de Oliveira Cc: Will Deacon Cc: Waiman Long Cc: Boqun Feng Cc: "Paul E . McKenney" Cc: kernel-team@android.com Signed-off-by: John Stultz --- kernel/sched/fair.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 3d5c1ec34bf7..1aca675985b2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1144,22 +1144,36 @@ static void update_tg_load_avg(struct cfs_rq *cfs_rq) } #endif /* CONFIG_SMP */ -static s64 update_curr_se(struct rq *rq, struct sched_entity *curr) +static s64 update_curr_se(struct rq *rq, struct sched_entity *se) { u64 now = rq_clock_task(rq); s64 delta_exec; - delta_exec = now - curr->exec_start; + /* Calculate the delta from selected se */ + delta_exec = now - se->exec_start; if (unlikely(delta_exec <= 0)) return delta_exec; - curr->exec_start = now; - curr->sum_exec_runtime += delta_exec; + /* Update selected se's exec_start */ + se->exec_start = now; + if (entity_is_task(se)) { + struct task_struct *running = rq->curr; + /* + * If se is a task, we account the time + * against the running task, as w/ proxy-exec + * they may not be the same. + */ + running->se.exec_start = now; + running->se.sum_exec_runtime += delta_exec; + } else { + /* If not task, account the time against se */ + se->sum_exec_runtime += delta_exec; + } if (schedstat_enabled()) { struct sched_statistics *stats; - stats = __schedstats_from_se(curr); + stats = __schedstats_from_se(se); __schedstat_set(stats->exec_max, max(delta_exec, stats->exec_max)); } -- 2.42.0.869.gea05f2083d-goog