From patchwork Wed Dec 13 18:17:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 18005 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:3b04:b0:fb:cd0c:d3e with SMTP id c4csp7977151dys; Wed, 13 Dec 2023 10:21:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IHSc/jNeYWdgYwZrGOTYc6wr1RW4ZbwRI8LPZ8GwzGtgV8iK8tjXKzIsUYEhj9arjE6tzzg X-Received: by 2002:a05:6a20:672f:b0:191:2160:db13 with SMTP id q47-20020a056a20672f00b001912160db13mr4759843pzh.17.1702491668836; Wed, 13 Dec 2023 10:21:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702491668; cv=none; d=google.com; s=arc-20160816; b=rKMH3td60SvxhwbQE0OFfgYTNTlaADLhRvDomTOLw0nhrNyx0wiawaHTJ68cvaJewv EBC2IVewbYWqLI0I0BBJDDSqEXummzE3NgF9iyFAQJrBSYHYiulocsAmrwnffgwxBAz/ 3sDBMu/EOiZ08xVosVuxARzFmxidTW7iepgSfxXAf3C2Q5ZMehYy7PFpMG+wWcSypzBy 2m9prT/2Dne1vqOLpT4sukKy6JflybNAVVmG61olXCaAdUGS6XWvyoVj3EkqdPhZ5OzP NMjMnbQ6MYQsQWE1HOWHOpddeMyq3cMjz/NIodT3/ie8AiuBHUOGsWkc3824DuqtdAjV Js7w== 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=zQUvPPMpraQfjNOq5g+C6fuIr91zx3YjjlQTms+41Fk=; fh=pL1t9p0RxD5qCgSUniSa3P4+XmpksJYPzX6TE+dndao=; b=oST66NU+WPIDjKkumOMYcm/1aUuV/Y6WKn43wIUEQLNrMcxCo7BuhstfcbHx8wC0qQ 0YlLSB88ePhxtcXQMgVjxduDrdhQPfI/moMJ/u3XzZsawfuW06b+YFgAkY6KxYbSGbpE f5AraN+yRwRsEF9esO2Z0w0/CWFpzXqCpM2lj3HGqZdvWMPeW0E/fwD3PfNQu9zLGrLw LVcLtyadUoNDMpb5slZxEs+P60dSlrIt+zw//QTS/GT1bOnUoNKzBCoUkwZBpnUgl4DZ p6tQ03076NJeVdPYUaRkw+DIZrmnLEJGIeqIyfJ8aNMEVveergiYodL4bxjyvB9Tw8Dq ik4g== 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:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id by18-20020a056a02059200b005adba954597si10020424pgb.504.2023.12.13.10.21.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Dec 2023 10:21:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id D02F38057E7D; Wed, 13 Dec 2023 10:21:02 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442181AbjLMSUj (ORCPT + 99 others); Wed, 13 Dec 2023 13:20:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235474AbjLMSUe (ORCPT ); Wed, 13 Dec 2023 13:20:34 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EA3511D for ; Wed, 13 Dec 2023 10:20:37 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E686BC433C7; Wed, 13 Dec 2023 18:20:36 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97) (envelope-from ) id 1rDTrG-00000002a5n-0knF; Wed, 13 Dec 2023 13:21:22 -0500 Message-ID: <20231213181737.791847466@goodmis.org> User-Agent: quilt/0.67 Date: Wed, 13 Dec 2023 13:17:37 -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 v3 00/15] 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 fry.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 (fry.vger.email [0.0.0.0]); Wed, 13 Dec 2023 10:21:03 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785191904263279325 X-GMAIL-MSGID: 1785191904263279325 [ This is hopefully the last version before I push this to Linux next. It's now going though the final phases of my testing. ] Note, this has been on my todo list since the ring buffer was created back in 2008. Tzvetomir last worked on this in 2021 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, and then changed the UI file from buffer_subbuf_order to buffer_subbuf_size_kb. 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 [ last patch updates this to: echo 32 > /sys/kernel/tracing/buffer_subbuf_size_kb ] Will make each sub buffer a size of 8 pages (32KB), 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). Changes since v2: https://lore.kernel.org/all/20231213021914.361709558@goodmis.org/ - Fixed up the subbuf tests to ignore multiple spaces after before the 'buf' string (same fix as was done for the trace_marker test). - This time include Cc'ing linux-trace-kernel :-p Changes since v1: https://lore.kernel.org/all/20231210040448.569462486@goodmis.org/ - Add the last patch that changes the ABI from a file called: buffer_subbuf_order to buffer_subbuf_size_kb That is, I kept the old interface the same, but then added the last patch that converts the interface into the one that makes more sense. I like keeping this in the git history, especially because of the way the implemantion is. - I rebased on top of trace/core in the: git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git - I made the tests a bit more advanced. Still a smoke test, but it now checks if the string written is the same as the string read. Steven Rostedt (Google) (10): 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 changing subbuf order tracing: Update subbuffer with kilobytes not page 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 | 21 ++ include/linux/ring_buffer.h | 17 +- kernel/trace/ring_buffer.c | 409 ++++++++++++++++----- kernel/trace/ring_buffer_benchmark.c | 10 +- kernel/trace/trace.c | 155 +++++++- kernel/trace/trace.h | 1 + kernel/trace/trace_events.c | 59 ++- .../test.d/00basic/ringbuffer_subbuf_size.tc | 95 +++++ 8 files changed, 647 insertions(+), 120 deletions(-) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_subbuf_size.tc