Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp2101708lqt; Mon, 22 Apr 2024 01:06:04 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXJ9Q8zAepw4JWyWJlca5jxI0H2rnMdzTEjtbZY6dwoKnYsuifo5wy9IysW2mVsS415+LoTSOKUqWyFW+kjgllPxgHBYCCFqF5sxFWbQA== X-Google-Smtp-Source: AGHT+IGRjNl2O6l2q1lE/bwLnq5gFKr3iKSK97FnCB9lqvztKKu6qbvtVcMzreHwgNsV4IXMiX2o X-Received: by 2002:a50:d658:0:b0:56e:34db:f5ef with SMTP id c24-20020a50d658000000b0056e34dbf5efmr5694700edj.28.1713773164668; Mon, 22 Apr 2024 01:06:04 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713773164; cv=pass; d=google.com; s=arc-20160816; b=UeYY5ghH42zXaozg4sE1P81D1TFqtGouQjAV/nE9sb4xp7P0QFIklNMjYV1GaPEpOK Gc/CAXcF2/r9Za3AZiAqRcYeLH1pibZ2C16y5+4L/JJPgvRkOdCFkDPGHdj/BMjZejNN 6mCUftrRmOynJ0J51fl7mRIjF4fiVWjeCnP3n5va4KjSiXg+C5unKxAP08+3Ncn1Pdy+ d/xZspk9HWlxt0YT5nUHqvst7mr9f5BTTT97IYy3g2b2hgjHKCQdMEmsp21e5Fu/aKL3 G3RTjIMpE1ZOLqDIhJfAoX6H5RGjAo5Va2ngonatoOr330wx+f1s3YpjOmLgn+UH9CR8 gwnA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=n4Ld606VREySuBvvbpoJ4lVHq8DXsMyZcPtIwiLYOTw=; fh=Cgk3XTM+Su+9IKz7mnc1nmL6vPVpN4ty9oQNdEbleAE=; b=gVdbqdXeykCoMsX8PTtUCnmWK0WswIF+E577oaCRSWx7YTm+rqsgJAXMHcUcE1Nh2i cgS5W30Aqub5bipwmimlBodmhO2f3/pKairNArsj20aoDxu+UEQdvDehjkEFf3HNGKVm sf4kSNwtbhFWUL4sibFncFuITei9neEWHmW1O7s8oLN4+EhqTQMcQrHaxlg4X+TnZBxC uS4ugVUmK95Tgn0etGG7njY3y+7oqW2SELlv9C3jHkO5kwZJts7MHOOMpw2+WJh23Pdm K3qALmwyepTjFxifOpEQ2Hj3GbRzVbxq1lUuXWW7fG0hl077MX3kl2avZfFAT20RdK9E aY5A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=MF7bhdrP; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-152929-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-152929-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id y8-20020a056402440800b00571db29909fsi3776304eda.348.2024.04.22.01.06.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 01:06:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-152929-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=MF7bhdrP; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-152929-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-152929-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 3BECF1F217EE for ; Mon, 22 Apr 2024 08:06:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E1E034F205; Mon, 22 Apr 2024 08:05:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MF7bhdrP" Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 436324DA14; Mon, 22 Apr 2024 08:05:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713773151; cv=none; b=N/m3EPQI+vuXx8c+kJkfzJoxEvXYybpXHcjQQFW0RYhAfcn9rrFK3a03WNszq30RGkGBVkPP4FLZYWEagfFxAqa/5SVPcoMoUMaGwLWYwskQg7C9K2FkjpyyjaYKd5Nwfb3F1Nx1rJQXIDlnNYtV/EyxdUxwUzs7lZ4cjuUjqa4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713773151; c=relaxed/simple; bh=uVhWNiAMfNDp/b9IeuNVtP5nn6HBNzCWGB9iGqhdiLQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=FXunZ4KAyASMoCy779s19i2FZ0/t4+n0VKgyowdv1gEI7SF7za0zZiEOZqEIqfkllPAKcfeN7MuwN/Lxm52+QstO7XEq7tpBfAJueHGIANrDM7o0nNrhSFhNuvq8ve4NFUrS76TZkZxbkNswtXwkQzD+tBXuHL1VQ1xKAXbMUxM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MF7bhdrP; arc=none smtp.client-ip=209.85.215.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-5cdbc4334edso2029237a12.3; Mon, 22 Apr 2024 01:05:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713773145; x=1714377945; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=n4Ld606VREySuBvvbpoJ4lVHq8DXsMyZcPtIwiLYOTw=; b=MF7bhdrPeokn4GStVp0kMvzij6sYL1TjycWWydWwa/0Kyrqn0S82/TdAYMYCrX0osH e+R0rzaoYTm9uKc8UtfXO9tkrmu5WYItDqCVEKZnZxyfImcnhSZuDHa1zcu12ebVuptR G9dG0vpblcnUqayclS6rpSNTR8amifIruAEG/MvqbSGpKJToEKVQ2uGqxFEzm2ZtNPlM YDAQHhlp4Cw0WUi5tGAVFyasev6/xU2jXpKdbyPiNbI5mBzuv8/ROjmTZvy+wXOq1xmc JwReEN8QPVmt27COsOPPRA9oUSnPABAi5jtTUc4EPSUvHwxOcWsTa4hLX9HSCpnzOBeH 8wow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713773145; x=1714377945; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=n4Ld606VREySuBvvbpoJ4lVHq8DXsMyZcPtIwiLYOTw=; b=h54rXPMKLzs858zt0qQXy8AgcsRrEzDKoe4RARUEc6SSrrd1Wu3EeoAHM6OTPh4arW Em+qWbNvpIXzGZCrOlXxBbnyHZnzY5IE25J9w4Ij57I5bdS6ZGE0nPYCJJp1k7d0BbgF dz7mnlDFrq1m+yUQKBN2aE3kaLxu/1HG4xOa59i5aPUJGxv/69b2FWPt38V5ftdJtjjf g8h3HI9wGpYHfbQ9O1oXQCkIyMwB2hPh+iKtfqw2TXdp8ffmAsdptaVkCniW/kZVxOw8 gY274oF9Hb83yrL8h6laZj4ciSWJ7Jsko+/cs8XhQFQpJMc7HVZCSLosz8yaPuIYsP8h H30Q== X-Forwarded-Encrypted: i=1; AJvYcCXz7IB7oY7tpeFaRpcJv6fyxPHdYlfy57bzXgaRlSRDUg5XH+TngTe19GCcBsYMuV9iaJv/aOGo4Z+t2e38BOFfaJdqec7BC96y1Hdg8uVFs+pKKJy4iQy2qL9hMUWu3Xlt5jZ+RcCQE8KB0i8JsSlTTqNlIr6kSkf0WQBPsc1S2ScDzg== X-Gm-Message-State: AOJu0YzlVWD1cRZzg4BcEIzCXT+ejo7ytt1nO5omcyoMm81BFgZvN58V Lch0lBIKpMh1mWA4TCkTvNKdDRIAHbOwKESOpCMENfWpjknWRT4N X-Received: by 2002:a05:6a20:244d:b0:1aa:8442:21ba with SMTP id t13-20020a056a20244d00b001aa844221bamr10148312pzc.21.1713773145406; Mon, 22 Apr 2024 01:05:45 -0700 (PDT) Received: from localhost.localdomain ([120.229.49.236]) by smtp.gmail.com with ESMTPSA id fv4-20020a056a00618400b006e64ddfa71asm7468208pfb.170.2024.04.22.01.05.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 01:05:44 -0700 (PDT) From: Howard Chu To: peterz@infradead.org Cc: mingo@redhat.com, acme@kernel.org, namhyung@kernel.org, mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, kan.liang@linux.intel.com, yangjihong1@huawei.com, zegao2021@gmail.com, leo.yan@linux.dev, ravi.bangoria@amd.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Howard Chu Subject: [PATCH v1 0/4] Dump off-cpu samples directly Date: Mon, 22 Apr 2024 16:05:52 +0800 Message-ID: <20240422080552.1913893-1-howardchu95@gmail.com> X-Mailer: git-send-email 2.44.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit As mentioned in: https://bugzilla.kernel.org/show_bug.cgi?id=207323 Currently, off-cpu samples are dumped when perf record is exiting. This results in off-cpu samples being after the regular samples. Also, samples are stored in large BPF maps which contain all the stack traces and accumulated off-cpu time, but they are eventually going to fill up after running for an extensive period. This patch fixes those problems by dumping samples directly into perf ring buffer, and dispatching those samples to the correct format. Before, off-cpu samples are after regular samples ``` swapper 0 [000] 963432.136150: 2812933 cycles:P: ffffffffb7db1bc2 intel_idle+0x62 ([kernel.kallsyms]) swapper 0 [000] 963432.637911: 4932876 cycles:P: ffffffffb7db1bc2 intel_idle+0x62 ([kernel.kallsyms]) swapper 0 [001] 963432.798072: 6273398 cycles:P: ffffffffb7db1bc2 intel_idle+0x62 ([kernel.kallsyms]) swapper 0 [000] 963433.541152: 5279005 cycles:P: ffffffffb7db1bc2 intel_idle+0x62 ([kernel.kallsyms]) sh 1410180 [000] 18446744069.414584: 2528851 offcpu-time: 7837148e6e87 wait4+0x17 (/usr/lib/libc.so.6) sh 1410185 [000] 18446744069.414584: 2314223 offcpu-time: 7837148e6e87 wait4+0x17 (/usr/lib/libc.so.6) awk 1409644 [000] 18446744069.414584: 191785 offcpu-time: 702609d03681 read+0x11 (/usr/lib/libc.so.6) 4a02a4 [unknown] ([unknown]) ``` After, regular samples(cycles:P) and off-cpu(offcpu-time) samples are collected simultaneously: ``` upowerd 741 [000] 963757.428701: 297848 offcpu-time: 72b2da11e6bc read+0x4c (/usr/lib/libc.so.6) irq/9-acpi 56 [000] 963757.429116: 8760875 cycles:P: ffffffffb779849f acpi_os_read_port+0x2f ([kernel.kallsyms]) upowerd 741 [000] 963757.429172: 459522 offcpu-time: 72b2da11e6bc read+0x4c (/usr/lib/libc.so.6) swapper 0 [002] 963757.434529: 5759904 cycles:P: ffffffffb7db1bc2 intel_idle+0x62 ([kernel.kallsyms]) perf 1419260 [000] 963757.434550: 1001012116 offcpu-time: 7274e5d190bf __poll+0x4f (/usr/lib/libc.so.6) 591acfc5daf0 perf_evlist__poll+0x24 (/root/hw/perf-tools-next/tools/perf/perf) 591acfb1ca50 perf_evlist__poll_thread+0x160 (/root/hw/perf-tools-next/tools/perf/perf) 7274e5ca955a [unknown] (/usr/lib/libc.so.6) ``` Here's a simple flowchart: [parse_event (sample type: PERF_SAMPLE_RAW)] --> [config (bind fds, sample_id, sample_type)] --> [off_cpu_strip (sample type: PERF_SAMPLE_RAW)] --> [record_done(hooks off_cpu_finish)] --> [change_type(sample type: OFFCPU_SAMPLE_TYPES)] --- tools/perf/builtin-record.c | 98 ++++++++++++++++++++-- tools/perf/tests/shell/record_offcpu.sh | 29 ------- tools/perf/util/bpf_off_cpu.c | 245 +++++++++++++++++++++++++------------------------------ tools/perf/util/bpf_skel/off_cpu.bpf.c | 163 +++++++++++++++++++++++++++++------- tools/perf/util/evsel.c | 8 -- tools/perf/util/off_cpu.h | 14 +++- tools/perf/util/perf-hooks-list.h | 1 + 7 files changed, 347 insertions(+), 211 deletions(-) -- 2.44.0