111 lines
3.8 KiB
HTML
111 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<html class="light">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Processes — Sovereign Browser</title>
|
|
<link rel="stylesheet" href="sovereign://processes.css">
|
|
</head>
|
|
<body>
|
|
<h1>Processes <button class="btn" id="refresh-btn">Refresh</button></h1>
|
|
|
|
<div class="tabs">
|
|
<button class="tab-btn active" data-tab="processes">Processes</button>
|
|
<button class="tab-btn" data-tab="tabs">Tabs</button>
|
|
</div>
|
|
|
|
<div id="status-msg" class="status"></div>
|
|
|
|
<!-- Processes tab -->
|
|
<div class="tab-panel active" id="tab-processes">
|
|
<p class="note">
|
|
All sovereign_browser processes: the main browser, WebKit renderer
|
|
/ network / GPU processes, and managed Tor/FIPS subprocesses.
|
|
CPU% is computed from <code>/proc</code> utime+stime deltas
|
|
(first sample is always 0). Renderer rows expand to show their
|
|
hosted tabs.
|
|
</p>
|
|
<table id="proc-table">
|
|
<thead>
|
|
<tr>
|
|
<th data-sort="pid">PID</th>
|
|
<th data-sort="name">Name</th>
|
|
<th data-sort="cpu_percent">CPU%</th>
|
|
<th data-sort="rss_kb">RSS</th>
|
|
<th data-sort="pss_kb">PSS</th>
|
|
<th data-sort="threads">Threads</th>
|
|
<th data-sort="uptime_sec">Uptime</th>
|
|
<th data-sort="state">State</th>
|
|
<th data-sort="ownership">Type</th>
|
|
<th>Tabs</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="proc-body"></tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- Tabs tab -->
|
|
<div class="tab-panel" id="tab-tabs">
|
|
<p class="note">
|
|
Per-tab performance from the in-page probe. <b>CPU-busy%</b> is
|
|
the fraction of the last second spent in long (>50ms)
|
|
main-thread tasks — the direct measure of which tab is hogging
|
|
CPU. Click a row for a drill-down (long-task sources, timers,
|
|
network endpoints, heap, workers).
|
|
</p>
|
|
<table id="tabs-table">
|
|
<thead>
|
|
<tr>
|
|
<th data-sort="index">#</th>
|
|
<th data-sort="title">Title</th>
|
|
<th data-sort="cpu_busy_percent">CPU-busy%</th>
|
|
<th data-sort="fps">FPS</th>
|
|
<th data-sort="timer_count">Timers</th>
|
|
<th data-sort="net_in_flight">Net</th>
|
|
<th data-sort="heap_used_mb">Heap</th>
|
|
<th data-sort="dom_node_count">DOM</th>
|
|
<th data-sort="webprocess_pid">WPID</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="tabs-body"></tbody>
|
|
</table>
|
|
|
|
<!-- Drill-down panel -->
|
|
<div id="drilldown" style="display:none">
|
|
<h2 id="dd-title">Tab detail</h2>
|
|
<div class="card" id="dd-summary"></div>
|
|
|
|
<h3>Long-task sources <span class="note">(top scripts by total ms)</span></h3>
|
|
<table class="sub-table" id="dd-lt-sources">
|
|
<thead><tr><th>name</th><th>total ms</th><th>count</th></tr></thead>
|
|
<tbody id="dd-lt-sources-body"></tbody>
|
|
</table>
|
|
|
|
<h3>Active timers <span class="note">(top by frequency)</span></h3>
|
|
<table class="sub-table" id="dd-timers">
|
|
<thead><tr><th>code</th><th>interval ms</th><th>count</th></tr></thead>
|
|
<tbody id="dd-timers-body"></tbody>
|
|
</table>
|
|
|
|
<h3>Network endpoints <span class="note">(top by request count)</span></h3>
|
|
<table class="sub-table" id="dd-net">
|
|
<thead><tr><th>url</th><th>count</th></tr></thead>
|
|
<tbody id="dd-net-body"></tbody>
|
|
</table>
|
|
|
|
<h3>Long-task timeline <span class="note">(last 30s)</span></h3>
|
|
<div id="dd-timeline" class="timeline"></div>
|
|
|
|
<div class="actions">
|
|
<button class="btn" id="dd-reload">Reload tab</button>
|
|
<button class="btn" id="dd-suspend">Suspend tab</button>
|
|
<button class="btn" id="dd-close">Close tab</button>
|
|
<button class="btn" id="dd-close-panel">Close panel</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="sovereign://processes.js"></script>
|
|
</body>
|
|
</html>
|