131 lines
5.9 KiB
TeX
131 lines
5.9 KiB
TeX
%% SCRAP: architecture/03-architecture/physics-engine/metrics-and-knobs
|
|
%% SOURCE: docs/working/architecture/03-architecture/physics-engine/metrics-and-knobs.md
|
|
%% STATUS: WORKING
|
|
%% FITS: dev-guide/ch-physics, cookbook/ch-physics
|
|
%% EDITORIAL: lifted — prose rewritten to press voice
|
|
|
|
\section{Instrumentation Gaps and Tuning Knobs}
|
|
|
|
This section catalogs the metrics the runtime does \emph{not} yet collect ---
|
|
the blind spots that currently prevent certain tuning knobs from being driven by
|
|
data. It is a working punch list, organized by subsystem and prioritized for
|
|
the instrumentation campaign internally nicknamed ``twisting the dragon's tail.''
|
|
|
|
\subsection{Dead Code}
|
|
|
|
One routine is defined but never reached.
|
|
\texttt{hotwords\_bucket\_reorder()} at
|
|
\texttt{physics\_hotwords\_cache.c:201--215} implements a bubble sort over
|
|
\texttt{execution\_heat} but is never invoked from the lookup path, with no
|
|
automatic trigger. Whether this is genuine dead code or a forgotten hook
|
|
remains open. If it were enabled, it would need three metrics: reorder
|
|
frequency, bubble-sort cost, and a measurement of whether reordering actually
|
|
improves hit latency.
|
|
%% TODO(bob): decide whether bucket reordering is dead code or an unhooked feature.
|
|
|
|
\subsection{Stack Metrics (Zero Collection)}
|
|
|
|
No stack instrumentation exists, leaving \texttt{STACK\_SIZE} tuning blind and
|
|
tail-call optimization impossible to justify.
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lll}
|
|
\toprule
|
|
Metric & Location & Impact of absence \\
|
|
\midrule
|
|
Data stack peak depth & \texttt{stack\_management.c} & cannot size the stack to workload \\
|
|
Return stack peak depth & \texttt{stack\_management.c} & cannot measure colon nesting \\
|
|
Underflow attempts & \texttt{arithmetic\_words.c:59--62} & fragile paths invisible \\
|
|
Overflow attempts & \texttt{arithmetic\_words.c} & no exhaustion early warning \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Missing stack metrics.}
|
|
\end{table}
|
|
|
|
\subsection{Dictionary Metrics (Zero Visibility)}
|
|
|
|
Dictionary behavior is opaque. First-character bucketing across 26 buckets may
|
|
be unbalanced and would directly affect lookup latency, but no histogram exists
|
|
to confirm. Dictionary growth velocity, \texttt{FORGET} usage, lookup failure
|
|
rate, and word-name length distribution are likewise untracked, leaving
|
|
fragmentation, ``dictionary full'' prediction, error-path frequency, and memory
|
|
efficiency all unknown. Relevant sites include the dictionary lookup in
|
|
\texttt{vm.c}, \texttt{memory\_management.c}, and \texttt{dictionary\_words.c}.
|
|
|
|
\subsection{Block I/O Metrics (Completely Dark)}
|
|
|
|
The block subsystem reports nothing. Read and write frequency, writeback
|
|
frequency (\texttt{block\_subsystem.c:198--200}), RAM cache hit rate, and dirty
|
|
block ratio are all DoE phase-1 targets; I/O latency and fragmentation ratio are
|
|
phase-2 targets. Until these land, writeback behavior --- a plausible
|
|
performance killer --- cannot be characterized.
|
|
|
|
\subsection{Per-Word Execution Metrics}
|
|
|
|
The inner loop in \texttt{vm.c} records no per-word execution frequency, latency
|
|
distribution, word-category breakdown, or colon-versus-native ratio. These
|
|
metrics are the validation evidence for the cache and window decisions and the
|
|
basis for hotspot detection and performance-regression tracking.
|
|
|
|
\subsection{Heat Dynamics (Phase 2)}
|
|
|
|
Heat dynamics are largely a phase-2 placeholder in
|
|
\texttt{physics\_metadata.c}. A heat decay trace is needed to confirm that decay
|
|
does not destroy useful pattern information. The heat percentile distribution is
|
|
stored but never dynamically recalculated, and heat concentration ratio
|
|
(top-10-word heat over total heat), heat velocity, and heat plateau detection
|
|
are not tracked at all.
|
|
|
|
\subsection{Pipelining Metrics (Instrumented, Unused)}
|
|
|
|
Phase-1 pipelining instrumentation exists but feeds nothing. Prediction accuracy
|
|
by depth is not measured, context transition frequency is counted but not
|
|
reported, speculation ROI is not aggregated, misprediction cost is measured but
|
|
not validated, and pipeline stall reduction is not measured --- leaving the
|
|
binary chop over \texttt{TRANSITION\_WINDOW\_SIZE} and the
|
|
\texttt{SPECULATION\_THRESHOLD} tuning without inputs.
|
|
|
|
\subsection{Cache Pollution and Cycles}
|
|
|
|
The hot-words cache offers no view into its own churn. Eviction and
|
|
re-promotion cycles (is the cache thrashing?), false negatives (words evicted
|
|
before promotion, hinting the threshold is too high), eviction candidate value
|
|
(was LRU the right policy?), bucket scan depth, and promotion wait time are all
|
|
uncollected as of day one.
|
|
|
|
\subsection{Priorities}
|
|
|
|
The instrumentation work is ranked in four tiers:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Critical.} Stack peak depth (minutes to add, large insight);
|
|
block I/O metrics (writeback behavior is a likely performance killer);
|
|
dictionary bucket load (imbalance drives the latency tail).
|
|
\item \textbf{High (phase-1 DoE).} Per-word execution frequency; heat decay
|
|
trace; block I/O hit rate.
|
|
\item \textbf{Medium (phase-2 DoE).} Pipelining accuracy by depth; colon
|
|
nesting depth; dictionary growth velocity.
|
|
\item \textbf{Nice to have (phase 3).} Heat concentration ratio; word-category
|
|
breakdown; speculation ROI histogram.
|
|
\end{itemize}
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{llll}
|
|
\toprule
|
|
Category & Files & Est. LOC & Est. time \\
|
|
\midrule
|
|
Stack metrics & \texttt{stack\_management.c}, \texttt{vm.h} & $\sim$30 & 30 min \\
|
|
Dictionary metrics & \texttt{vm.c}, \texttt{memory\_management.c}, \texttt{vm.h} & $\sim$50 & 45 min \\
|
|
Block I/O metrics & \texttt{block\_subsystem.c}, \texttt{vm.h} & $\sim$80 & 1 hr \\
|
|
Per-word metrics & \texttt{vm.c}, \texttt{physics\_metadata.c}, \texttt{vm.h} & $\sim$100 & 1.5 hr \\
|
|
Heat dynamics & \texttt{physics\_metadata.c}, \texttt{vm.h} & $\sim$60 & 1 hr \\
|
|
Pipelining accuracy & \texttt{physics\_pipelining\_metrics.c}, \texttt{vm.h} & $\sim$40 & 45 min \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Implementation effort estimate per metric category.}
|
|
\end{table}
|