Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp4843447pxb; Tue, 28 Sep 2021 05:29:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwGHa7qVnPYUBuiLMsIXga/G1lTrhDYqhMWXTozMv9JGtJvEF8uOiIhhDuG1prlv051SxEs X-Received: by 2002:a50:e188:: with SMTP id k8mr7302876edl.119.1632832188624; Tue, 28 Sep 2021 05:29:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632832188; cv=none; d=google.com; s=arc-20160816; b=JvB3hE/LEDatC9u33rFpFzzwi30kRaZOldBBxpRnH5fD/owO92ztAAJJqAiJU4+RCD 2CAToPc2nnEpEua0CsX3wO+e55+Dqc/zNtzFOvWnw4C2sTy25P5+FLsVRgkIf2Y/1yAu g5s6OFnZ3PMFJkTxGy8fR2bIPzd7xa7SKFB5pHAxxhCXdRzDqd/pV2sVoHKwsSEbbITl PGA817wAfMvGAF/oh0CEXBBd8NQFbVmrYkWQmGUEmiS2+9WMd0qVky3LgaCWsApWkUPe ZW4QHbitBQnoMJWEF+Gtt6XaPUCxd75YUXiIjPtM6C3/IgR3AUi8vfperq6dVU1FKDGR oLNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:mime-version:references:subject:cc:to:from :dkim-signature:dkim-signature:message-id; bh=giXfEJB7VPGDd7nVML7lYRyh9lgBEYYdNV16AYd75/I=; b=GaF5yvC5beFX8+ErJoVGWvOuK3UUW5eTNPLiccClzZFsOe132J6SNIti1JXQfUFOhk q+lIN4R+SgTj+UYsORS9NXA5MWkpDWuRSMk7KZFwpYHOC+Gzl3gBG73mK1mCdMdIe4PR 9VqzW1FxPtcNmNjpIz1TzXErCJPLWGIPZJ6h2sYhMGwADPGZGjYGNROlspbs43hdlbTZ 7JuzRYjNShgEmopkW3btfb85nocqNxMrBbzi30qIpzJFcg9Zi8BtIp22b868bwI07gO3 OI2u8HbBIeuKHCp1TiOhnNiu9N48ND5iiivdFkxTcwOCadp2Nx9xHjN6lFFNr4po0Cwd 8q2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=oImR+2xE; dkim=neutral (no key) header.i=@linutronix.de; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d9si8176442ejo.61.2021.09.28.05.29.24; Tue, 28 Sep 2021 05:29:48 -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=@linutronix.de header.s=2020 header.b=oImR+2xE; dkim=neutral (no key) header.i=@linutronix.de; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240752AbhI1M0X (ORCPT + 99 others); Tue, 28 Sep 2021 08:26:23 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:35338 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240652AbhI1M0K (ORCPT ); Tue, 28 Sep 2021 08:26:10 -0400 Message-ID: <20210928122411.593486363@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1632831870; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=giXfEJB7VPGDd7nVML7lYRyh9lgBEYYdNV16AYd75/I=; b=oImR+2xEG2umK+JOVGwyho4ibCNF9vy9DHYTDc9LPKgO1FbBXrYW87sdVPh5WcyNsRf016 z4EsbwomIIxDRRqrVCYc1eQLNuuJm1WJPQUSM0c/g/JbKizSAwdiLYKoDD9+7wfg5wZC5r uOdCIjSja3dmHthRfyH5piorjWLIWjNG43uumm0RdryliHd9xFjA77tjFytEs64DSxYFVc qcmXxYPHZgHFsya+7gswM9TmXBrXokkDiNfJtmk1d9fvRUS63EmTWEvIrpR/CchFNugTbY 6R/waH7L89uvTx6eNUsrGgRG6TEx9/nDk+EyYR2fNXcReh9Lk+lixjaCIbfSJQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1632831870; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=giXfEJB7VPGDd7nVML7lYRyh9lgBEYYdNV16AYd75/I=; b=MYrjjal9jUYLWtfUVJhzqb3D5GKBPThOfzUu2mABWGLoCUVG7TTOURlyQew0v7X9WVKwLM ZlxzksKDFgIV4GCw== From: Thomas Gleixner To: LKML Cc: Peter Zijlstra , Ingo Molnar , Sebastian Andrzej Siewior , Masami Hiramatsu Subject: [patch 4/5] sched: Delay task stack freeing on RT References: <20210928122339.502270600@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Date: Tue, 28 Sep 2021 14:24:30 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sebastian Andrzej Siewior Anything which is done on behalf of a dead task at the end of finish_task_switch() is preventing the incoming task from doing useful work. While it is benefitial for fork heavy workloads to recycle the task stack quickly, this is a latency source for real-time tasks. Therefore delay the stack cleanup on RT enabled kernels. Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Thomas Gleixner --- kernel/exit.c | 5 +++++ kernel/fork.c | 5 ++++- kernel/sched/core.c | 8 ++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) --- a/kernel/exit.c +++ b/kernel/exit.c @@ -172,6 +172,11 @@ static void delayed_put_task_struct(stru kprobe_flush_task(tsk); perf_event_delayed_put(tsk); trace_sched_process_free(tsk); + + /* RT enabled kernels delay freeing the VMAP'ed task stack */ + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + put_task_stack(tsk); + put_task_struct(tsk); } --- a/kernel/fork.c +++ b/kernel/fork.c @@ -289,7 +289,10 @@ static inline void free_thread_stack(str return; } - vfree_atomic(tsk->stack); + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + vfree_atomic(tsk->stack); + else + vfree(tsk->stack); return; } #endif --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4846,8 +4846,12 @@ static struct rq *finish_task_switch(str if (prev->sched_class->task_dead) prev->sched_class->task_dead(prev); - /* Task is done with its stack. */ - put_task_stack(prev); + /* + * Release VMAP'ed task stack immediate for reuse. On RT + * enabled kernels this is delayed for latency reasons. + */ + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + put_task_stack(prev); put_task_struct_rcu_user(prev); }