mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
08b6aeeb17
* fix(perf): skip Performance Probe CPU snapshot poll on Windows Windows has no Rust CPU/RSS sampler, but the probe still invoked performance_cpu_snapshot every 2s when the modal or overlay pins were active. Skip the IPC on unsupported platforms and only poll JS-side metrics; do not start overlay polling for CPU/memory pins alone. * fix(analysis): park backfill coordinator until Advanced is configured #881 started run_coordinator_forever at app init with a 2s sleep even when disabled, waking tokio on every platform for no work. Park on Notify instead; wake on configure (enable/disable) and library sync-idle. Long sleeps use select with wake so sync-idle can interrupt COMPLETED_RECHECK waits. Investigation branch — not for merge until periodic CPU root cause is confirmed. * fix(perf): stop probe overlay flicker on live poll updates Publish CPU samples only after a valid jiffies baseline, skip no-op snapshot emits, and sync sparkline history atomically in the store. Overlay uses wall-clock sparkline time and auto-scales low CPU values. * fix(perf): cut idle Rust CPU from probe scan, cover prefetch, and storage poll Move performance_cpu_snapshot /proc work to spawn_blocking so tokio workers are not charged with probe sampling. Stop lazy cover strategy from running route prefetch disk stats every 1.5s, and slow hot-cache size refresh on Settings → Storage to 15s. * fix(perf): stabilize probe sparkline clock between live poll ticks Track sampleAt separately from updatedAt so CPU rate history and overlay sparklines only advance on real % changes, not FPS re-renders or RSS-only poll ticks. Hold CPU sparkline Y scale with a peak ref to avoid scale jumps. * fix(cover): restore lazy route prefetch without idle disk stats poll Re-enable lazy cover registry warm-up so cached WebP paths reach diskSrcCache before cells mount. Skip cover_cache_stats on every 1.5s tick — drain batches via ensure only, poll full disk usage every 30s when the registry is idle. * docs: CHANGELOG and credits for PR #939 idle CPU perf fix * fix(cover): peek before route prefetch ensure to match main responsiveness Route prefetch moved batch drain ahead of cover_cache_stats for idle CPU, which removed the accidental throttle and flooded ensure invoke slots. Use warmCoverDiskSrcBatch first (cached hits skip ensure), ensure misses only, and yield while high-priority viewport work is queued.
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
import { perfLiveCpuSnapshotSupported } from '../../../utils/perf/perfLiveCpuSnapshot';
|
|
import {
|
|
PERF_LIVE_POLL_MS_MAX,
|
|
PERF_LIVE_POLL_MS_MIN,
|
|
PERF_LIVE_POLL_MS_STEP,
|
|
setPerfLiveIncludeThreadGroups,
|
|
setPerfLivePollIntervalMs,
|
|
usePerfLiveIncludeThreadGroups,
|
|
usePerfLivePollIntervalMs,
|
|
} from '../../../utils/perf/perfLivePollSettings';
|
|
|
|
export default function PerfLivePollControls() {
|
|
const pollMs = usePerfLivePollIntervalMs();
|
|
const includeThreadGroups = usePerfLiveIncludeThreadGroups();
|
|
if (!perfLiveCpuSnapshotSupported()) return null;
|
|
|
|
const pollSec = (pollMs / 1000).toFixed(1);
|
|
|
|
return (
|
|
<section className="perf-live-poll" aria-label="Live poll interval">
|
|
<div className="perf-live-poll__title">Live sampling</div>
|
|
<label className="perf-live-poll__row">
|
|
<span className="perf-live-poll__label">
|
|
Poll interval
|
|
{' '}
|
|
<span className="perf-live-poll__value">{pollSec}s</span>
|
|
</span>
|
|
<input
|
|
type="range"
|
|
min={PERF_LIVE_POLL_MS_MIN}
|
|
max={PERF_LIVE_POLL_MS_MAX}
|
|
step={PERF_LIVE_POLL_MS_STEP}
|
|
value={pollMs}
|
|
onChange={e => setPerfLivePollIntervalMs(Number(e.target.value))}
|
|
/>
|
|
</label>
|
|
<label className="perf-live-poll__row perf-live-poll__row--check">
|
|
<input
|
|
type="checkbox"
|
|
checked={includeThreadGroups}
|
|
onChange={e => setPerfLiveIncludeThreadGroups(e.target.checked)}
|
|
/>
|
|
<span className="perf-live-poll__check-label">
|
|
CPU by psysonic threads
|
|
</span>
|
|
</label>
|
|
<p className="perf-live-poll__hint">
|
|
Scans in-process thread groups each poll (Linux). Off by default — enable only while diagnosing.
|
|
</p>
|
|
</section>
|
|
);
|
|
}
|