mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v1 00/13] perf timechart/list/treport: Interactive Textual TUIs and perf python session improvements
@ 2026-10-02 18:26 Ian Rogers
  2026-10-02 18:26 ` [PATCH v1 01/13] perf session: Don't flush remaining events once processing is done Ian Rogers
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: Ian Rogers @ 2026-10-02 18:26 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Jiri Olsa, Ian Rogers, Adrian Hunter, James Clark,
	Thomas Falcon, Alice Rogers, Changbin Du, Tengda Wu, tanze,
	Athira Rajeev, Dapeng Mi, linux-kernel, linux-perf-users

This series adds interactive terminal user interfaces (TUIs) built with
Python's textual framework for 'perf timechart' (--tui and --live) and
'perf list' (--tui), updates 'treport' to progressively display profiles
while loading in the background, adds headless shell tests for all three
TUIs, and improves the 'perf' Python extension module to support
responsive background and live pipe event processing:

1. Session and Python extension improvements (patches 1-5):
   - Skip flushing remaining deferred samples and auxtrace events once
     session_done() is set so stopping event processing is immediate.
   - Quietly stop processing events when a Python session callback raises
     an exception (e.g., to cancel a background load on quit) without
     corrupting TUI output with reader error messages.
   - Lazily copy perf_event and perf_sample in process_events() only when
     a Python callback retains a reference beyond its return, shrinking
     struct pyrf_event to fit in CPython's small-object allocator.
   - Lazily unwind and resolve sample callchains only when
     event.callchain is accessed.
   - Release the Python GIL around perf_session__new() and
     perf_session__process_events() (reacquiring it in callbacks and
     guarding concurrent thread/comm/symbol access) so blocking pipe
     reads do not freeze TUI threads.

2. 'perf list --tui' and ilist test (patches 6-7):
   - Add 'perf list --tui' to launch the interactive ilist script via
     'perf script', and add a shell test driving ilist headlessly.

3. Progressive loading in treport and test (patches 8-9):
   - Load profiles in a background thread in treport.py so the report
     tree and flame graph are interactive while loading, with lazy tree
     node creation and a headless shell test.

4. 'perf timechart --tui' and '--live' and tests (patches 10-13):
   - Add ttimechart.py and 'perf timechart --tui' to interactively view,
     zoom, and pan per-CPU (busy, frequency, idle), per-task (running,
     runnable, blocked, wakeups), and I/O timelines along with a summary
     table.
   - Add 'perf timechart --live' to stream live scheduler, power, or I/O
     events from a 'perf record' subprocess over a pipe with a rolling
     time window, pause/resume via the control pipe, and optional output
     recording (-o).
   - Add headless shell tests covering both '--tui' and '--live' modes.

Alice Rogers (6):
  perf treport: Show the profile while it loads
  perf test: Add a test for the treport script
  perf timechart: Add an interactive --tui mode
  perf test: Add a test for perf timechart --tui
  perf timechart: Add a --live mode to the TUI
  perf test: Test perf timechart --live

Ian Rogers (7):
  perf session: Don't flush remaining events once processing is done
  perf python: Quietly stop processing events when a callback raises
  perf python: Lazily copy events and samples from process_events
  perf python: Lazily resolve sample callchains
  perf python: Release the GIL while processing session events
  perf list: Add a --tui option to launch ilist
  perf test: Add a test for the ilist script

 tools/perf/Documentation/perf-list.txt        |   10 +
 tools/perf/Documentation/perf-timechart.txt   |   24 +
 tools/perf/builtin-list.c                     |   34 +
 tools/perf/builtin-timechart.c                |  114 +-
 tools/perf/python/treport.py                  |  458 ++-
 tools/perf/python/ttimechart.py               | 2467 +++++++++++++++++
 tools/perf/tests/shell/test_ilist_python.sh   |  181 ++
 tools/perf/tests/shell/test_treport_python.sh |  247 ++
 .../tests/shell/test_ttimechart_python.sh     |  537 ++++
 tools/perf/util/auxtrace.c                    |    7 +
 tools/perf/util/python.c                      | 1191 +++++---
 tools/perf/util/session.c                     |    8 +
 12 files changed, 4754 insertions(+), 524 deletions(-)
 create mode 100755 tools/perf/python/ttimechart.py
 create mode 100755 tools/perf/tests/shell/test_ilist_python.sh
 create mode 100755 tools/perf/tests/shell/test_treport_python.sh
 create mode 100755 tools/perf/tests/shell/test_ttimechart_python.sh

-- 
2.56.0.rc1.315.gc6ed9934b7-goog


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2026-10-02 18:27 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-02 18:26 [PATCH v1 00/13] perf timechart/list/treport: Interactive Textual TUIs and perf python session improvements Ian Rogers
2026-10-02 18:26 ` [PATCH v1 01/13] perf session: Don't flush remaining events once processing is done Ian Rogers
2026-10-02 18:26 ` [PATCH v1 02/13] perf python: Quietly stop processing events when a callback raises Ian Rogers
2026-10-02 18:26 ` [PATCH v1 03/13] perf python: Lazily copy events and samples from process_events Ian Rogers
2026-10-02 18:26 ` [PATCH v1 04/13] perf python: Lazily resolve sample callchains Ian Rogers
2026-10-02 18:26 ` [PATCH v1 05/13] perf python: Release the GIL while processing session events Ian Rogers
2026-10-02 18:26 ` [PATCH v1 06/13] perf list: Add a --tui option to launch ilist Ian Rogers
2026-10-02 18:26 ` [PATCH v1 07/13] perf test: Add a test for the ilist script Ian Rogers
2026-10-02 18:26 ` [PATCH v1 08/13] perf treport: Show the profile while it loads Ian Rogers
2026-10-02 18:26 ` [PATCH v1 09/13] perf test: Add a test for the treport script Ian Rogers
2026-10-02 18:26 ` [PATCH v1 10/13] perf timechart: Add an interactive --tui mode Ian Rogers
2026-10-02 18:26 ` [PATCH v1 11/13] perf test: Add a test for perf timechart --tui Ian Rogers
2026-10-02 18:26 ` [PATCH v1 12/13] perf timechart: Add a --live mode to the TUI Ian Rogers
2026-10-02 18:26 ` [PATCH v1 13/13] perf test: Test perf timechart --live Ian Rogers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®