Received: by 10.192.165.148 with SMTP id m20csp5022847imm; Tue, 24 Apr 2018 12:18:02 -0700 (PDT) X-Google-Smtp-Source: AIpwx49UFvEH/vRXXHvS7af7MQRnkwmN4rfyhw+ABW8uR0VKpfw5b9sVJcOO7nN/p3IVQuxrsXzj X-Received: by 10.99.61.202 with SMTP id k193mr21046700pga.435.1524597482754; Tue, 24 Apr 2018 12:18:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524597482; cv=none; d=google.com; s=arc-20160816; b=rVwfsjycDM1Xe6lf7CSg/tsanCymSduuvuprzp+7qcBzYtapb2nNCahG64VDrunsxl GLFOUeRb0kEaKekBJHNKCyOPqvfQUx/lXgnNEe7Vs4PzzTqjDy5QG/o19vyWXelEOmPx m7MA/j5gPB1hfYWbPi4VSdv6Yg2S/XTGKnZLMW0J5xpaqom5/1Az5zDySxHz+znL3ZZ6 4wy8iZUrbrDI4ghyUhSdmHyi5G16XDCqf3WaT2eUJPxUv6QVSRibmryB5Vr3A7tWJ5w6 zJqem8mD13duhw8aTkAYWQQV0ugG3x3YSntb6Q49AFApjM/yJLSDPsJr7TotHeFuAHXw E76g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=Y/QvntHWAsq8B1jaWckSVSDpD1k9c3DQM1MpNiJ7fW0=; b=OKlbinxl5tgiOsO/bIpcv+Jw+RcNc4kuLcjq2K5Gcw6CbBK/NmJ3jvqk3uggrczrh1 SRkD3YvDtSJf7KfnfWlcnTI0oGvCoMjvdVkT3wbYrfV+ufROvgKL1t3AZwSBkpEf612v x8s/p+5UFTrbTApjDhl+JiibkiuU8IDrWF4CNiNaW4U9udKdQEuCCLwu/tg0IwlULYr7 VMEk2nrOQFK8kuu5EUptAqkho9+fzbYrmBeh37q9mwRT6ADrst3/NI3U5hxT+DPZrkKf zHH8VdGIOzoi/nFm/Aaeg1Hp9l+yBEyGFH/TzeSfqBnUL/m8m+tV2/pZLuk5/gUXvWYm 610g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=nir2M/9G; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n59-v6si14699525plb.198.2018.04.24.12.17.48; Tue, 24 Apr 2018 12:18:02 -0700 (PDT) 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=@google.com header.s=20161025 header.b=nir2M/9G; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751280AbeDXTQl (ORCPT + 99 others); Tue, 24 Apr 2018 15:16:41 -0400 Received: from mail-io0-f176.google.com ([209.85.223.176]:41691 "EHLO mail-io0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750766AbeDXTQj (ORCPT ); Tue, 24 Apr 2018 15:16:39 -0400 Received: by mail-io0-f176.google.com with SMTP id e12-v6so1030292iob.8 for ; Tue, 24 Apr 2018 12:16:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Y/QvntHWAsq8B1jaWckSVSDpD1k9c3DQM1MpNiJ7fW0=; b=nir2M/9GQyagX4NFoVQTbyK6eYCdDQXEIppA2Fk5AQDsIsVAjoTHgDb580M2tcBew7 KQj1EbnxheuY4LMO+WMr0nyM0dBKkIglgiBwGE0YWemw5Sws7R8rHPxcDXIhstR0UVw9 REAHVCufG++7MDPTsJ2K3QgQ+RcMzT0GAdcWzPpHXKYZ7TshGox7zaTHrm9jN0IMWkOV pvfG/AlZ+/wL7zZ+JIgOYdwNJ2YPRs5QeIFnhkOidqKZKFaAEGOX/QJqsKqzuqm70r6S +VvNGS/Wt+e53lYG04wj3JI8BsCyju+ZyaPK4c8JLG9dwLa8tAZ3K/rlhh8jKEo0NnWm F/aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Y/QvntHWAsq8B1jaWckSVSDpD1k9c3DQM1MpNiJ7fW0=; b=fygRE4D8HYwN7MXac+UCZQF8xIaImO3tfsjCyR+0KtPXEO8qTYvJk2wet8Ib7zBxc0 bQ0nUhsZ7x00rjEF1ySwSmoc19cU6WNSOklbUyvEBfst1hdo0GLc4kG6a/y11kgY2svW oFPxONDlIpqNzhjDLldEki4a3BZywzgRKS/zlYcHiXhsOycTqxq6WhI88rigGRoXVZoV GsbN1gIdT8cDLuK4hKtGpiAJIasddJ6cAKaibCo7atk6nEnpNmyg8iFQloVzdFvRJW+6 EPeoiFCime6m+W6QOOswfUOhzwxOyCLdrsy+5l/WQG1zILWqNa7JDxgNSqWOCrdmv7IL UsZA== X-Gm-Message-State: ALQs6tC63067eWzt+GskDFANn+3CEVqBR/s1yR9KqnSGK4USY1ARu+wJ 3qj8RS3TsQLAUzCGrxusBarLjevOQHmErTl+VmJTGA== X-Received: by 2002:a6b:2251:: with SMTP id i78-v6mr20126022ioi.276.1524597397962; Tue, 24 Apr 2018 12:16:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.181.213 with HTTP; Tue, 24 Apr 2018 12:16:37 -0700 (PDT) In-Reply-To: <20180424190905.GU26088@linux.vnet.ibm.com> References: <1045420715.14686.1524495583859.JavaMail.zimbra@efficios.com> <20180423121800.47b173af@gandalf.local.home> <1212130312.14753.1524503541789.JavaMail.zimbra@efficios.com> <20180423172244.694dbc9d@gandalf.local.home> <20180424155655.GA820@linux.vnet.ibm.com> <20180424172658.GT26088@linux.vnet.ibm.com> <20180424182302.GA404@linux.vnet.ibm.com> <20180424182623.GA1357@linux.vnet.ibm.com> <20180424190905.GU26088@linux.vnet.ibm.com> From: Joel Fernandes Date: Tue, 24 Apr 2018 12:16:37 -0700 Message-ID: Subject: Re: [RFC v4 3/4] irqflags: Avoid unnecessary calls to trace_ if you can To: Paul McKenney Cc: Steven Rostedt , Mathieu Desnoyers , Namhyung Kim , Masami Hiramatsu , linux-kernel , linux-rt-users , Peter Zijlstra , Ingo Molnar , Tom Zanussi , Thomas Gleixner , Boqun Feng , fweisbec , Randy Dunlap , kbuild test robot , baohong liu , vedang patel , kernel-team Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 24, 2018 at 12:09 PM, Paul E. McKenney wrote: > On Tue, Apr 24, 2018 at 11:59:32AM -0700, Joel Fernandes wrote: >> Hi Paul, >> >> On Tue, Apr 24, 2018 at 11:26 AM, Paul E. McKenney >> wrote: >> > On Tue, Apr 24, 2018 at 11:23:02AM -0700, Paul E. McKenney wrote: >> >> On Tue, Apr 24, 2018 at 10:26:58AM -0700, Paul E. McKenney wrote: >> >> > On Tue, Apr 24, 2018 at 09:01:34AM -0700, Joel Fernandes wrote: >> >> > > On Tue, Apr 24, 2018 at 8:56 AM, Paul E. McKenney >> >> > > wrote: >> >> > > > On Mon, Apr 23, 2018 at 05:22:44PM -0400, Steven Rostedt wrote: >> >> > > >> On Mon, 23 Apr 2018 13:12:21 -0400 (EDT) >> >> > > >> Mathieu Desnoyers wrote: >> >> > > >> >> >> > > >> >> >> > > >> > I'm inclined to explicitly declare the tracepoints with their given >> >> > > >> > synchronization method. Tracepoint probe callback functions for currently >> >> > > >> > existing tracepoints expect to have preemption disabled when invoked. >> >> > > >> > This assumption will not be true anymore for srcu-tracepoints. >> >> > > >> >> >> > > >> Actually, why not have a flag attached to the tracepoint_func that >> >> > > >> states if it expects preemption to be enabled or not? If a >> >> > > >> trace_##event##_srcu() is called, then simply disable preemption before >> >> > > >> calling the callbacks for it. That way if a callback is fine for use >> >> > > >> with srcu, then it would require calling >> >> > > >> >> >> > > >> register_trace_##event##_may_sleep(); >> >> > > >> >> >> > > >> Then if someone uses this on a tracepoint where preemption is disabled, >> >> > > >> we simply do not call it. >> >> > > > >> >> > > > One more stupid question... If we are having to trace so much stuff >> >> > > > in the idle loop, are we perhaps grossly overstating the extent of that >> >> > > > "idle" loop? For being called "idle", this code seems quite busy! >> >> > > >> >> > > ;-) >> >> > > The performance hit I am observing is when running a heavy workload, >> >> > > like hackbench or something like that. That's what I am trying to >> >> > > correct. >> >> > > By the way is there any limitation on using SRCU too early during >> >> > > boot? I backported Mathieu's srcu tracepoint patches but the kernel >> >> > > hangs pretty early in the boot. I register lockdep probes in >> >> > > start_kernel. I am hoping that's not why. >> >> > > >> >> > > I could also have just screwed up the backporting... may be for my >> >> > > testing, I will just replace the rcu API with the srcu instead of all >> >> > > of Mathieu's new TRACE_EVENT macros for SRCU, since all I am trying to >> >> > > do right now is measure the performance of my patches with SRCU. >> >> > >> >> > Gah, yes, there is an entry on my capacious todo list on making SRCU >> >> > grace periods work during early boot and mid-boot. Let me see what >> >> > I can do... >> >> >> >> OK, just need to verify that you are OK with call_srcu()'s callbacks >> >> not being invoked until sometime during core_initcall() time. (If you >> >> really do need them to be invoked before that, in theory it is possible, >> >> but in practice it is weird, even for RCU.) >> > >> > Oh, and that early at boot, you will need to use DEFINE_SRCU() or >> > DEFINE_STATIC_SRCU() rather than dynamic allocation and initialization. >> >> Oh ok. >> >> About call_rcu, calling it later may be an issue since we register the >> probes in start_kernel, for the first probe call_rcu will be sched, >> but for the second one I think it'll try to call_rcu to get rid of the >> first one. >> >> This is the relevant code that gets called when probes are added: >> >> static inline void release_probes(struct tracepoint_func *old) >> { >> if (old) { >> struct tp_probes *tp_probes = container_of(old, >> struct tp_probes, probes[0]); >> call_rcu_sched(&tp_probes->rcu, rcu_free_old_probes); >> } >> } >> >> Maybe we can somehow defer the call_srcu until later? Would that be possible? > > You will be able to invoke call_srcu() early if you wish, it is just that > the specified SRCU callback won't be invoked until core_initcall() time. > Yes, that should be fine then. Also I think I see no issue with static initialization and allocation as you were suggesting in your earlier email so that's also Ok. Let me know when you have anything I can test, thanks a lot. I'll pause my testing of srcu for now then and focus on the other parts of my patchset. thanks, - Joel