---
name: chrome-performance-optimizer
description: >-
Autonomous multi-agent performance optimization loop for Chromium and V8.
Supports profile-seeded mode (analyzing Speedometer 3 / JetStream profiles via
pprof or Sagacity MCP) and pattern-driven discovery mode (fan-out exploration of
Blink and V8 macro-patterns grounded in historical wins and past rejected CLs).
Dispatches isolated implementations in git worktrees, verifies local tests, uploads
CLs, triggers 150-iteration Pinpoint try jobs on Apple Silicon M1 hardware, pipelines
subsequent hypotheses asynchronously, evaluates statistical significance, and
manages CL lifecycles.
---
# Chrome & V8 Autonomous Performance Optimization Loop
This skill provides an autonomous multi-agent optimization loop designed to
uncover, implement, and validate engine-level optimizations across Chromium and
V8.
## 🔁 Multi-Agent Architecture & Pipelined Workflow
The optimization process divides responsibilities across specialized subagents
to enable parallel exploration and asynchronous Pinpoint pipelining:
```mermaid
graph TD
Main["Orchestrator Agent
Backlog, Pipelining & Global Decisions"]
subgraph Discovery["Phase 1: Parallel Opportunity Exploration"]
E1["Opportunity Explorer #1
Historical & Pattern Learning"]
E2["Opportunity Explorer #2
Historical & Pattern Learning"]
E3["Opportunity Explorer #3
Historical & Pattern Learning"]
end
subgraph Execution["Phase 2: Isolated Worktrees (Workspace: 'share')"]
Imp1["Implementer & Local Tester #1"]
Imp2["Implementer & Local Tester #2"]
end
subgraph Review["Phase 3: Pre-Upload Review & Refinement (Workspace: 'share')"]
Rev1["Code Reviewer & Refiner #1"]
Rev2["Code Reviewer & Refiner #2"]
end
subgraph RemoteEval["Phase 4: Async Remote Evaluation"]
PP1["Pinpoint & Gerrit Lifecycle Worker #1"]
PP2["Pinpoint & Gerrit Lifecycle Worker #2"]
end
Main -->|1. Fan-out General Exploration| Discovery
Discovery -->|2. Propose Macro-Hypotheses| Main
Main -->|3. Dispatch Candidate| Execution
Execution -->|4. Verified Patch & Smoke Test| Main
Main -->|5. Pre-Upload Code Review & Quality Gate| Review
Review -->|6a. Conceptually Flawed: Veto & Discard| Main
Review -->|6b. Approved & Refined Patch| Main
Main -->|7. Upload WIP CL & Launch Pinpoint on M1| RemoteEval
Main -.->|8. Pipeline Next Candidate (Do not wait idle)| Execution
RemoteEval -->|9. Stat-Significant Win / Regressed| Main
Main -->|10. Accept (Keep CL) or Reject (Abandon CL)| Main
```
______________________________________________________________________
## Step 1: Bottleneck & Opportunity Discovery
Discovery operates either from a provided profile or directly from known
high-leverage architectural patterns and historical learning:
### Mode A: When a Performance Profile is Provided (Profile-Seeded)
Ingest profiles from web pprof links (`https://pprof.corp.google.com/?id=XYZ`),
native IDs (`id:XYZ`), Sagacity MCP tools (`fetch_uploaded_profile`), or local
Crossbench CSVs.
```bash
# 1. Top Cumulative Call Stacks (identify caller subtrees):
vpython3 .agents/skills/chrome-performance-optimizer/scripts/analyze_profile.py "pprof/?id=XYZ" --mode=cum --nodecount=30
# 2. Top Flat Functions (identify hot leaf loops):
vpython3 .agents/skills/chrome-performance-optimizer/scripts/analyze_profile.py "pprof/?id=XYZ" --mode=flat --nodecount=30
# 3. Inspect Callers & Callees for a Specific Symbol:
vpython3 .agents/skills/chrome-performance-optimizer/scripts/analyze_profile.py "pprof/?id=XYZ" --mode=peek --symbol="*HasOwnProperty*"
# 4. Compare Two Profiles (Diff Mode):
vpython3 .agents/skills/chrome-performance-optimizer/scripts/analyze_profile.py "pprof/?id=EXP_ID" --base="pprof/?id=BASE_ID" --mode=cum
```
### Mode B: When No Profile is Provided (General Opportunity Exploration)
When exploring without a seeded profile, spawn parallel Opportunity Explorer
subagents to scan the codebase holistically, guided by past lessons:
1. **Learning from Historical Archetypes**: Internalize the macro-optimization
archetypes documented in
[Macro-Optimization Patterns](references/optimization_patterns.md):
- **Allocation Elimination**: Eliminate heap / GC allocations in hot
per-element or per-token loops.
- **Invariant Caching**: Cache expensive cross-iteration computations (e.g.
style match trees, parsed path/SVG streams, shaped word glyphs).
- **Fast-Path Short-Circuits**: Bypass heavy multi-layer framework code (e.g.
ICU, HarfBuzz, full CSS cascade) for common-case inputs.
- **Devirtualization & Inlining**: Devirtualize hot type checks and indirect
calls.
- **Concurrency & Deferral**: Defer non-critical work to idle tasks or worker
threads (e.g. sweeping, lazy state initialization).
2. **Learning from Past Attempts & Non-Duplication**: Query and study all
previously attempted CLs on Gerrit:
```bash
# Query all accepted winners and rejected attempts:
vpython3 .agents/skills/chrome-performance-optimizer/scripts/fetch_tried_cls.py
# Search for a specific file, class, or subsystem to verify novelty:
vpython3 .agents/skills/chrome-performance-optimizer/scripts/fetch_tried_cls.py --search
# Or inspect accepted winning optimizations specifically:
vpython3 .agents/skills/chrome-performance-optimizer/scripts/fetch_tried_cls.py --accepted-only
```
- **`topic:chrome-perf-opt-rejected`**: CLs that failed Pinpoint evaluation
($p > 0.05$). You **MUST NOT** repeat or re-propose any of these changes or
micro-variations of them.
- **`topic:chrome-perf-opt-accepted`**: Validated benchmark winners. Check
this list to avoid duplicating changes that have already been developed and
accepted on Gerrit. Each optimization must be developed and evaluated on
its own focused, independent CL. Do NOT combine multiple distinct
optimizations into a single compound/aggregate CL.
3. **Subagent Fan-Out via `invoke_subagent`**: Launch general Opportunity
Explorer subagents (see [Agent Roles Guide](references/agent_roles.md) for
full prompt templates) to explore different architectural angles across the
entire engine simultaneously.
______________________________________________________________________
## Step 2: Formulate Macro Hypothesis & Isolated Worktree Implementation
> [!IMPORTANT] **Mandatory High-Impact & Novelty Standard**:
>
> - **Mandatory Automated Novelty Gate**: Before uploading any candidate CL,
> run:
> ```bash
> vpython3 .agents/skills/chrome-performance-optimizer/scripts/check_candidate_novelty.py
> ```
> This machine-independent tool queries Gerrit directly across
> `topic:chrome-perf-opt-*` and verifies that the candidate diff does not
> duplicate or overlap with any previously accepted or rejected attempts. If
> overlap is detected, the check fails immediately and the candidate must be
> discarded.
> - **No Duplication & No Combining**: NEVER repeat changes listed under
> `topic:chrome-perf-opt-rejected` or `topic:chrome-perf-opt-accepted`. Do NOT
> combine multiple separate optimizations into a single CL; each optimization
> must stand on its own merits as an independent CL.
> - **No Micro-Tweaks**: Do NOT propose single variable renames, isolated
> trivial bound checks, or micro-helpers that produce `< 0.1%` change and
> vanish in Pinpoint noise.
> - **Macro Leverage**: Target allocation elimination in hot loops, invariant
> caching across iterations, fast-path short-circuits, or idle
> concurrency/deferral.
### Isolated Implementation (`Workspace: 'share'`)
To allow concurrent development without dirtying or blocking the root workspace,
delegate implementation to an Implementer Subagent with `Workspace: 'share'`
(creates an isolated git worktree sharing repository storage):
1. Create a dedicated branch:
```bash
# For Blink / Chromium root changes:
git checkout -b perf_ origin/main
# For V8 engine submodule changes:
git -C v8 checkout -b perf_ origin/main
```
2. Implement the macro-optimization cleanly adhering to codebase conventions.
______________________________________________________________________
## Step 3: Local Verification & Correctness Testing
Verify correctness locally in the worktree before uploading to Gerrit:
1. **Unit Tests**:
```bash
# For Blink changes:
autoninja -C out/release blink_unittests
./out/release/blink_unittests --gtest_filter=""
# For V8 changes:
autoninja -C out/release v8:d8
./out/release/d8 v8/test/mjsunit/mjsunit.js
```
2. **Web Tests (Layout / Rendering / Canvas)**:
```bash
autoninja -C out/release content_shell
./third_party/blink/tools/run_web_tests.py -t release
```
3. **Crossbench Benchmark Smoke Test**:
```bash
autoninja -C out/release chrome chromedriver
./third_party/crossbench/cb.py speedometer_3.1 --browser=out/release/chrome --driver-path=out/release/chromedriver --stories= --headless
```
______________________________________________________________________
## Step 4: Pre-Upload Code Review & Autonomous Refinement
Before committing and uploading any candidate CL to Gerrit (even as WIP),
dispatch a dedicated **Pre-Upload Code Reviewer & Refiner Subagent**
(`Workspace: 'share'`) to perform an adversarial code audit and refinement pass
on the candidate branch:
1. **Conceptual Correctness Gate (Veto Decision)**:
- Determine if the candidate optimization is **conceptually sound**:
- Does it preserve spec compliance (DOM/CSS/HTML/JS) and engine invariants?
- Does it take prohibited architectural shortcuts (e.g. bypassing security
checks, skipping required style updates, or breaking lifecycle
guarantees) that only create an illusory speedup?
- **Veto Rule**: If the change is fundamentally flawed or unviable, the
subagent issues a `VETO` decision and aborts immediately. The candidate is
**discarded without uploading to Gerrit or triggering Pinpoint**, saving
hours of expensive Apple Silicon bot time.
2. **Chromium & V8 Code Quality Audit Checklist**: If conceptually sound, the
subagent audits the diff against core engine standards:
- **Oilpan GC & Memory Safety**: Verify correct GC tracing (`Trace()`),
absence of forbidden raw pointers to GC objects, proper `Member` /
`WeakMember` usage, and lack of leaks/UAF hazards.
- **Thread & Sequence Safety**: Ensure operations run on valid task runners
(`DCHECK_CALLED_ON_VALID_SEQUENCE`) without lock contention or thread
races.
- **Boundary & Edge Cases**: Verify handling of null pointers, empty
collections, zero-length inputs, integer overflow, and fallback logic for
unhandled types.
- **Chromium Style & Conventions**: Ensure const-correctness, include
hygiene, proper use of `base::span` / `WTF::Vector`, and clean formatting.
- **Performance Preservation**: Ensure cleanup fixes do NOT introduce hidden
allocations, virtual calls, or extra copies on the hot path.
3. **Autonomous Problem Resolution & Refinement**:
- Address the review findings directly on the branch: modify code to fix
bugs, edge cases, and style issues.
4. **Local Re-Verification Gate**:
- Format and lint:
```bash
git cl format
git cl lint
```
- Re-compile and re-run unit tests:
```bash
# For Blink changes:
autoninja -C out/release blink_unittests
./out/release/blink_unittests --gtest_filter=""
# For V8 changes:
autoninja -C out/release v8:d8
./out/release/d8 v8/test/mjsunit/mjsunit.js
```
- Re-run web tests / Crossbench smoke tests if applicable.
- Amend or commit the polished changes on the branch (`perf_`).
- Output `APPROVED` with a summary of resolved comments for the Orchestrator.
______________________________________________________________________
## Step 5: Submit CL to Gerrit (Work In Progress)
1. **Verify Candidate Novelty (Mandatory Gate)**: Run the automated novelty
verifier against authoritative Gerrit performance records:
```bash
vpython3 .agents/skills/chrome-performance-optimizer/scripts/check_candidate_novelty.py
```
Ensure the check outputs `✅ NOVELTY CHECK PASSED`. If any duplicate logic,
re-proposals, or overlapping changes are detected, **abort immediately** and
do not upload.
2. Commit all modified files with descriptive rationale:
```bash
git commit -m "[]
TAG=agy
CONV="
```
3. Upload the CL to Gerrit as **Work In Progress (WIP)** to avoid notifying
reviewers before Pinpoint validation:
```bash
git cl upload -o wip --no-autocc --bypass-hooks -f -m "Performance optimization for Speedometer 3"
```
4. Retrieve the Gerrit Issue ID:
```bash
git cl issue
```
______________________________________________________________________
## Step 6: Launch Pinpoint Try Job & Asynchronous Pipelining
Launch a 150-iteration try job on Apple Silicon M1 bots:
```bash
pp c -c m1 -t sp3 -r 150
```
- `-c m1`: Target M1 hardware bot.
- `-t sp3`: Target Speedometer 3 benchmark template.
- `-r 150`: 150 repetitions per variant for robust statistical confidence.
### Asynchronous Pipelining (Do Not Block Idle):
- Because 150-iteration Pinpoint jobs take 45–90+ minutes, **the Orchestrator
does not sit idle waiting.**
- Record the `JOB_ID` and dispatch a background monitoring task or subagent.
- Immediately proceed to the next candidate hypothesis in the queue,
implementing and verifying it in another isolated worktree.
- Limit active in-flight Pinpoint try jobs to **max 2** concurrent jobs.
______________________________________________________________________
## Step 7: Evaluate Results & Autonomous Decision
1. Check comparison results once the job completes:
```bash
vpython3 .agents/skills/chrome-performance-optimizer/scripts/pinpoint_evaluator.py --action evaluate --job-id
```
Or inspect the comparison table directly:
```bash
pp s
```
2. **Metric Direction Interpretation**:
- **Subtest Workloads (e.g. `TodoMVC-*`, `Editor-*`, `NewsSite-*`)**:
Direction is `smaller-better` (duration/latency in ms).
- **Negative change (`-X.X%`)**: Faster / Improvement (Win).
- **Positive change (`+X.X%`)**: Slower / Regression (Loss).
- **Composite Score (`Score`)**: Direction is `larger-better` (higher score =
faster).
- **Positive change (`+X.X%`)**: Improvement (Win).
- **Negative change (`-X.X%`)**: Regression (Loss).
3. **Decision Rules**:
- ✅ **Statistically Significant Improvement ($p < 0.05$)**:
- Significant reduction in subtest durations (`-X%` on `smaller-better`) or
increase in composite `Score` with zero significant regressions.
- Mark the CL as accepted on Gerrit:
```bash
vpython3 .agents/skills/chrome-performance-optimizer/scripts/pinpoint_evaluator.py --action accept
```
- Add Pinpoint benchmark results to CL description:
```bash
git cl upload -m "Add Pinpoint M1 benchmark results (+X.X% improvement)"
```
- Propose the change to the user and reviewers.
- ❌ **Neutral or Regressed**:
- Positive delta (`+X%`) on `smaller-better` metrics indicates a
**regression**, or no metric reaches $p < 0.05$.
- Mark as rejected on Gerrit and abandon the CL:
```bash
vpython3 .agents/skills/chrome-performance-optimizer/scripts/pinpoint_evaluator.py --action reject
```
*(Note: Gerrit returns `403 Forbidden` if attempting to change the topic
after the CL is already closed/abandoned; `pinpoint_evaluator.py` sets
the topic prior to calling `git cl set-close`).*
- Free the worktree and iterate on the next candidate in the pipeline.
______________________________________________________________________
## References & Utilities
- [Multi-Agent Roles & Pipelining Guide](references/agent_roles.md)
- [Macro-Optimization Patterns](references/optimization_patterns.md)
- [Pinpoint & Gerrit Workflow Guide](references/pinpoint_workflow.md)
- [Candidate Novelty Verifier Script](scripts/check_candidate_novelty.py)
- [Fetch Previously Tried CLs Script](scripts/fetch_tried_cls.py)
- [Profile Analyzer Script](scripts/analyze_profile.py)
- [Pinpoint Evaluator Script](scripts/pinpoint_evaluator.py)