From patchwork Sun Dec 10 03:54:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 17796 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp6353818vqy; Sat, 9 Dec 2023 20:04:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IFbkePiN+nA+Bw8tFxSKM6DXoVNXl3Tn+CZaiJZ75CdIXZLos01C2xa77eH2/tUc5gZGTDv X-Received: by 2002:a17:902:ab0b:b0:1ce:9a59:da29 with SMTP id ik11-20020a170902ab0b00b001ce9a59da29mr1206333plb.5.1702181075384; Sat, 09 Dec 2023 20:04:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702181075; cv=none; d=google.com; s=arc-20160816; b=URgWwAPDKCHfjLFo7cYdT9iojN6eb4zqAjv6C41dHjygSsGSWwJIKka1hKkNcLhEeO T8Cal3meUFhIsEhkHynNXzjzPQRzt4v4U7eIYSGngXcQdzNTqdqP7ishWqs3LZem9MrI xrSMJDp6HaWFtBHMM9+U/q8HEV/tq7kccXdH8H6Q5LvFGeJPbJQk4K9lLhKU8yzyQgtp VyLy3Lrgx/NUq+9OKnXBWeCr/HXrz8UjD0//GYKjH9MdxZhWoE7byTDNSdyDaV7P2Zf/ xqd3jOIukGzB0j2XCpFmiDJ3p5fzXathA4X0i/ZT621dm48v8LtW/hEK4Gmtxs6Jni3G //qA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:cc:to:from:date:user-agent:message-id; bh=0Mqo/LiRQNrAdT9S4Wah4JMgs2OcG+aXpVxXCPXmnug=; fh=pL1t9p0RxD5qCgSUniSa3P4+XmpksJYPzX6TE+dndao=; b=zKjSQEfQbyLG2GHnvlaNRwPTfZndXbLVoYEONNro8qA8ghcemwn9KXBGuSxf4580sM XF6CG0D1Bn5Cpup8Urr61gZ+183aKeCgw4H7h4+VhUg69/XK1kJH+GcSyPZI7yDYICGc iFkAXHuS+eufAObH6GTGN+X7W2NLuovwmdJwPHmkgoeAJplKnw/TODDWL1PDXP6l6UO8 oAJVGcxdJyg8IXMNcoVLVj36pZEcAwmbByPvyXOq0U2zP1pzYgqLGE32Ic//f/lB7a5I Lh7rBuGPF9FTG7V5dmBjbcNK13W3XK3w838rXTlqwsZm+2E/8FH2ZZOP9rd06zneij8Y jIeQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id d4-20020a170902b70400b001d00a9256adsi3957685pls.488.2023.12.09.20.04.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Dec 2023 20:04:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id C0CBB80659AF; Sat, 9 Dec 2023 20:04:30 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231485AbjLJEEH (ORCPT + 99 others); Sat, 9 Dec 2023 23:04:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229488AbjLJEEG (ORCPT ); Sat, 9 Dec 2023 23:04:06 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4594DB4 for ; Sat, 9 Dec 2023 20:04:12 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C25C3C433C7; Sun, 10 Dec 2023 04:04:11 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97) (envelope-from ) id 1rCB3g-000000021LJ-21zR; Sat, 09 Dec 2023 23:04:48 -0500 Message-ID: <20231210035404.053677508@goodmis.org> User-Agent: quilt/0.67 Date: Sat, 09 Dec 2023 22:54:04 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Tzvetomir Stoyanov , Vincent Donnefort , Kent Overstreet Subject: [PATCH 00/14] ring-buffer/tracing: Allow ring buffer to have bigger sub buffers X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.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 (morse.vger.email [0.0.0.0]); Sat, 09 Dec 2023 20:04:30 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784866223321942606 X-GMAIL-MSGID: 1784866223321942606 Note, this has been on my todo list since the ring buffer was created back in 2008. Tzvetomir last worked on this in 2020 and I need to finally get it in. His last series was: https://lore.kernel.org/linux-trace-devel/20211213094825.61876-1-tz.stoyanov@gmail.com/ With the description of: Currently the size of one sub buffer page is global for all buffers and it is hard coded to one system page. The patch set introduces configurable ring buffer sub page size, per ring buffer. A new user space interface is introduced, which allows to change the sub page size of the ftrace buffer, per ftrace instance. I'm pulling in his patches mostly untouched, except that I had to tweak a few things to forward port them. The issues I found I added as the last 7 patches to the series, and then I added documentation and a selftest. Basically, events to the tracing subsystem are limited to just under a PAGE_SIZE, as the ring buffer is split into "sub buffers" of one page size, and an event can not be bigger than a sub buffer. This allows users to change the size of a sub buffer by the order: echo 3 > /sys/kernel/tracing/buffer_subbuf_order Will make each sub buffer a size of 8 pages, allowing events to be almost as big as 8 pages in size (sub buffers do have meta data on them as well, keeping an event from reaching the same size as a sub buffer). Steven Rostedt (Google) (9): ring-buffer: Clear pages on error in ring_buffer_subbuf_order_set() failure ring-buffer: Do no swap cpu buffers if order is different ring-buffer: Make sure the spare sub buffer used for reads has same size tracing: Update snapshot order along with main buffer order tracing: Stop the tracing while changing the ring buffer subbuf size ring-buffer: Keep the same size when updating the order ring-buffer: Just update the subbuffers when changing their allocation order ring-buffer: Add documentation on the buffer_subbuf_order file ringbuffer/selftest: Add basic selftest to test chaning subbuf order Tzvetomir Stoyanov (VMware) (5): ring-buffer: Refactor ring buffer implementation ring-buffer: Page size per ring buffer ring-buffer: Add interface for configuring trace sub buffer size ring-buffer: Set new size of the ring buffer sub page ring-buffer: Read and write to ring buffers with custom sub buffer size ---- Documentation/trace/ftrace.rst | 27 ++ include/linux/ring_buffer.h | 17 +- kernel/trace/ring_buffer.c | 406 ++++++++++++++++----- kernel/trace/ring_buffer_benchmark.c | 10 +- kernel/trace/trace.c | 143 +++++++- kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 59 ++- .../ftrace/test.d/00basic/ringbuffer_order.tc | 46 +++ 8 files changed, 588 insertions(+), 121 deletions(-) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_order.tc