ui: Bigtrace UI support for local servers and a server picker The Bigtrace UI changes for the local Bigtrace server, split out so they can land ahead of the server itself. They only touch ui/ and are inert against today's backends: everything new is enabled by what the connected server advertises. - Server picker (connection button): the built-in servers (the Bigtrace service and `Local server` on http://127.0.0.1:5001/v1) and servers the user adds, each with whether it answers (`GET /`, falling back to `GET /trace_presets`). Picking one sets the endpoint and reloads; `?server=` still works. The endpoint field stays, as before: type any URL and `Reload to apply`, or `Reset` to the default; an endpoint that isn't listed shows as "Current server", which can be added to the list. Added servers can be edited (name and URL; the active one follows) and removed. A plain-http server that is not loopback is refused from an https page, with a pointer to SSH tunnelling. Built from the stock widgets (Popup, Form/FormLabel, TextInput, Button with tooltips, Icon, Callout, CodeSnippet, Spinner), laid out like the extension server list; the server in use has a check mark, as menus mark their selection. - `Local server` > `Set up` shows the install and tunnel commands (adding `--cors-origin` for this UI's origin when needed) and switches to the server once it answers. A readable `Origin not allowed` error from the server becomes the command that allows it. - Multi-query tabs: several queries per tab run in one pass ("Add Query"), each into its own result table; tables are named, with overwrite confirmation. - A PerfettoSQL / DuckDB SQL RadioGroup in the topbar, and Add Query, shown only when the server advertises the `duckdb` and `multi_query` features from `GET /` (only the local server does). A DuckDB or multi-query tab restored on a server without them says why it can't run (with a way to a PerfettoSQL tab) instead of failing, and new tabs only inherit an engine the server runs. - Polling and status follow every query of a pass; history items show the engine and result table. - `ui/build --bigtrace` dev servers proxy /v1 and /trace to a local server ($BIGTRACE_SERVER_PORT, default 5001). - zod runs jitless in the Bigtrace bundle: its CSP has no 'unsafe-eval'. Tests: Vitest (server_list, server_capabilities, endpoint_storage, polling_controller, query_tabs_state, bigtrace_query_client); 294/294 in src/bigtrace pass. Checked by hand against a local Bigtrace server.
Perfetto is an open-source suite of SDKs, daemons and tools which use tracing to help developers understand the behaviour of complex systems and root-cause functional and performance issues on client and embedded systems.
It is a production-grade tool that is the default tracing system for the Android operating system and the Chromium browser.
Perfetto is not a single tool, but a collection of components that work together:
Perfetto was designed to be a versatile and powerful tracing system for a wide range of use cases.
ftrace, allowing you to visualize scheduling, syscalls, interrupts, and custom kernel tracepoints on a timeline.chrome://tracing. Use it to debug and root-cause issues in the browser, V8, and Blink.We‘ve designed our documentation to guide you to the right information as quickly as possible, whether you’re a newcomer to performance analysis or an experienced developer.
New to tracing? If you're unfamiliar with concepts like tracing and profiling, start here:
Ready to dive in? Our “Getting Started” guide is the main entry point for all users. It will help you find the right tutorials and documentation for your specific needs:
Want the full overview? For a comprehensive look at what Perfetto is, why it's useful, and who uses it, see our main documentation page:
For users interested in the Debian distribution of Perfetto, the official source of truth and packaging efforts are maintained at Debian Perfetto Salsa Repository
Have questions? Need help?
We follow Google's Open Source Community Guidelines.