From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Rostedt Subject: Re: [patch V2 21/29] tracing: Use percpu stack trace buffer more intelligently Date: Thu, 18 Apr 2019 10:53:34 -0400 Message-ID: <20190418105334.5093528d@gandalf.local.home> References: <20190418084119.056416939@linutronix.de> <20190418084254.999521114@linutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190418084254.999521114@linutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Thomas Gleixner Cc: Mike Snitzer , David Airlie , Catalin Marinas , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, dm-devel@redhat.com, Alexander Potapenko , Christoph Lameter , Christoph Hellwig , Alasdair Kergon , Marek Szyprowski , linux-arch@vger.kernel.org, x86@kernel.org, kasan-dev@googlegroups.com, Johannes Thumshirn , Andrey Ryabinin , Alexey Dobriyan , intel-gfx@lists.freedesktop.org, David Rientjes , Akinobu Mita , Josef Bacik , Mike Rapoport , Andy Lutomirski , Josh Poimboeuf , David Sterba , Dmitry Vyukov List-Id: linux-arch.vger.kernel.org T24gVGh1LCAxOCBBcHIgMjAxOSAxMDo0MTo0MCArMDIwMApUaG9tYXMgR2xlaXhuZXIgPHRnbHhA bGludXRyb25peC5kZT4gd3JvdGU6Cgo+IFRoZSBwZXIgY3B1IHN0YWNrIHRyYWNlIGJ1ZmZlciB1 c2FnZSBwYXR0ZXJuIGlzIG9kZCBhdCBiZXN0LiBUaGUgYnVmZmVyIGhhcwo+IHBsYWNlIGZvciA1 MTIgc3RhY2sgdHJhY2UgZW50cmllcyBvbiA2NC1iaXQgYW5kIDEwMjQgb24gMzItYml0LiBXaGVu Cj4gaW50ZXJydXB0cyBvciBleGNlcHRpb25zIG5lc3QgYWZ0ZXIgdGhlIHBlciBjcHUgYnVmZmVy IHdhcyBhY3F1aXJlZCB0aGUKPiBzdGFja3RyYWNlIGxlbmd0aCBpcyBoYXJkY29kZWQgdG8gOCBl bnRyaWVzLiA1MTIvMTAyNCBzdGFjayB0cmFjZSBlbnRyaWVzCj4gaW4ga2VybmVsIHN0YWNrcyBh cmUgdW5yZWFsaXN0aWMgc28gdGhlIGJ1ZmZlciBpcyBhIGNvbXBsZXRlIHdhc3RlLgo+IAo+IFNw bGl0IHRoZSBidWZmZXIgaW50byBjaHVua3Mgb2YgNjQgc3RhY2sgZW50cmllcyB3aGljaCBpcyBw bGVudHkuIFRoaXMKPiBhbGxvd3MgbmVzdGluZyBjb250ZXh0cyAoaW50ZXJydXB0cywgZXhjZXB0 aW9ucykgdG8gdXRpbGl6ZSB0aGUgY3B1IGJ1ZmZlcgo+IGZvciBzdGFjayByZXRyaWV2YWwgYW5k IGF2b2lkcyB0aGUgZml4ZWQgbGVuZ3RoIGFsbG9jYXRpb24gYWxvbmcgd2l0aCB0aGUKPiBjb25k aXRpb25hbCBleGVjdXRpb24gcGF0aGVzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBHbGVp eG5lciA8dGdseEBsaW51dHJvbml4LmRlPgo+IENjOiBTdGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBn b29kbWlzLm9yZz4KPiAtLS0KPiAga2VybmVsL3RyYWNlL3RyYWNlLmMgfCAgIDc3ICsrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hh bmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCj4gCj4gLS0tIGEva2VybmVs L3RyYWNlL3RyYWNlLmMKPiArKysgYi9rZXJuZWwvdHJhY2UvdHJhY2UuYwo+IEBAIC0yNzQ5LDEy ICsyNzQ5LDIxIEBAIHRyYWNlX2Z1bmN0aW9uKHN0cnVjdCB0cmFjZV9hcnJheSAqdHIsCj4gIAo+ ICAjaWZkZWYgQ09ORklHX1NUQUNLVFJBQ0UKPiAgCj4gLSNkZWZpbmUgRlRSQUNFX1NUQUNLX01B WF9FTlRSSUVTIChQQUdFX1NJWkUgLyBzaXplb2YodW5zaWduZWQgbG9uZykpCj4gKy8qIDY0IGVu dHJpZXMgZm9yIGtlcm5lbCBzdGFja3MgYXJlIHBsZW50eSAqLwo+ICsjZGVmaW5lIEZUUkFDRV9L U1RBQ0tfRU5UUklFUwk2NAo+ICsKPiAgc3RydWN0IGZ0cmFjZV9zdGFjayB7Cj4gLQl1bnNpZ25l ZCBsb25nCQljYWxsc1tGVFJBQ0VfU1RBQ0tfTUFYX0VOVFJJRVNdOwo+ICsJdW5zaWduZWQgbG9u ZwkJY2FsbHNbRlRSQUNFX0tTVEFDS19FTlRSSUVTXTsKPiAgfTsKPiAgCj4gLXN0YXRpYyBERUZJ TkVfUEVSX0NQVShzdHJ1Y3QgZnRyYWNlX3N0YWNrLCBmdHJhY2Vfc3RhY2spOwo+ICsvKiBUaGlz IGFsbG93cyA4IGxldmVsIG5lc3Rpbmcgd2hpY2ggaXMgcGxlbnR5ICovCgpDYW4gd2UgbWFrZSB0 aGlzIDQgbGV2ZWwgbmVzdGluZyBhbmQgaW5jcmVhc2UgdGhlIHNpemU/IChJIGNhbiBzZWUgdXMK Z29pbmcgbW9yZSB0aGFuIDY0IGRlZXAsIGtlcm5lbCBkZXZlbG9wZXJzIG5ldmVyIGNlYXNlIHRv IGFtYXplIG1lIDstKQpUaGF0J3MgYWxsIHdlIG5lZWQ6CgogQ29udGV4dDogTm9ybWFsLCBzb2Z0 aXJxLCBpcnEsIE5NSQoKSXMgdGhlcmUgYW55IG90aGVyIHdheSB0byBuZXN0PwoKLS0gU3RldmUK Cj4gKyNkZWZpbmUgRlRSQUNFX0tTVEFDS19ORVNUSU5HCShQQUdFX1NJWkUgLyBzaXplb2Yoc3Ry dWN0IGZ0cmFjZV9zdGFjaykpCj4gKwo+ICtzdHJ1Y3QgZnRyYWNlX3N0YWNrcyB7Cj4gKwlzdHJ1 Y3QgZnRyYWNlX3N0YWNrCXN0YWNrc1tGVFJBQ0VfS1NUQUNLX05FU1RJTkddOwo+ICt9Owo+ICsK PiArc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBmdHJhY2Vfc3RhY2tzLCBmdHJhY2Vfc3Rh Y2tzKTsKPiAgc3RhdGljIERFRklORV9QRVJfQ1BVKGludCwgZnRyYWNlX3N0YWNrX3Jlc2VydmUp Owo+ICAKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.kernel.org ([198.145.29.99]:39810 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388301AbfDROxk (ORCPT ); Thu, 18 Apr 2019 10:53:40 -0400 Date: Thu, 18 Apr 2019 10:53:34 -0400 From: Steven Rostedt Subject: Re: [patch V2 21/29] tracing: Use percpu stack trace buffer more intelligently Message-ID: <20190418105334.5093528d@gandalf.local.home> In-Reply-To: <20190418084254.999521114@linutronix.de> References: <20190418084119.056416939@linutronix.de> <20190418084254.999521114@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: Thomas Gleixner Cc: LKML , Josh Poimboeuf , x86@kernel.org, Andy Lutomirski , Alexander Potapenko , Alexey Dobriyan , Andrew Morton , Pekka Enberg , linux-mm@kvack.org, David Rientjes , Christoph Lameter , Catalin Marinas , Dmitry Vyukov , Andrey Ryabinin , kasan-dev@googlegroups.com, Mike Rapoport , Akinobu Mita , iommu@lists.linux-foundation.org, Robin Murphy , Christoph Hellwig , Marek Szyprowski , Johannes Thumshirn , David Sterba , Chris Mason , Josef Bacik , linux-btrfs@vger.kernel.org, dm-devel@redhat.com, Mike Snitzer , Alasdair Kergon , intel-gfx@lists.freedesktop.org, Joonas Lahtinen , Maarten Lankhorst , dri-devel@lists.freedesktop.org, David Airlie , Jani Nikula , Daniel Vetter , Rodrigo Vivi , linux-arch@vger.kernel.org Message-ID: <20190418145334.-qwuhHYR6KNPbzQMF21qx_MI8LNvU_sOjI_KnWgNlpo@z> On Thu, 18 Apr 2019 10:41:40 +0200 Thomas Gleixner wrote: > The per cpu stack trace buffer usage pattern is odd at best. The buffer has > place for 512 stack trace entries on 64-bit and 1024 on 32-bit. When > interrupts or exceptions nest after the per cpu buffer was acquired the > stacktrace length is hardcoded to 8 entries. 512/1024 stack trace entries > in kernel stacks are unrealistic so the buffer is a complete waste. > > Split the buffer into chunks of 64 stack entries which is plenty. This > allows nesting contexts (interrupts, exceptions) to utilize the cpu buffer > for stack retrieval and avoids the fixed length allocation along with the > conditional execution pathes. > > Signed-off-by: Thomas Gleixner > Cc: Steven Rostedt > --- > kernel/trace/trace.c | 77 +++++++++++++++++++++++++-------------------------- > 1 file changed, 39 insertions(+), 38 deletions(-) > > --- a/kernel/trace/trace.c > +++ b/kernel/trace/trace.c > @@ -2749,12 +2749,21 @@ trace_function(struct trace_array *tr, > > #ifdef CONFIG_STACKTRACE > > -#define FTRACE_STACK_MAX_ENTRIES (PAGE_SIZE / sizeof(unsigned long)) > +/* 64 entries for kernel stacks are plenty */ > +#define FTRACE_KSTACK_ENTRIES 64 > + > struct ftrace_stack { > - unsigned long calls[FTRACE_STACK_MAX_ENTRIES]; > + unsigned long calls[FTRACE_KSTACK_ENTRIES]; > }; > > -static DEFINE_PER_CPU(struct ftrace_stack, ftrace_stack); > +/* This allows 8 level nesting which is plenty */ Can we make this 4 level nesting and increase the size? (I can see us going more than 64 deep, kernel developers never cease to amaze me ;-) That's all we need: Context: Normal, softirq, irq, NMI Is there any other way to nest? -- Steve > +#define FTRACE_KSTACK_NESTING (PAGE_SIZE / sizeof(struct ftrace_stack)) > + > +struct ftrace_stacks { > + struct ftrace_stack stacks[FTRACE_KSTACK_NESTING]; > +}; > + > +static DEFINE_PER_CPU(struct ftrace_stacks, ftrace_stacks); > static DEFINE_PER_CPU(int, ftrace_stack_reserve); > >