diff --git a/FABRIC-3.md b/FABRIC-3.md index de7af37a..70b392ac 100644 --- a/FABRIC-3.md +++ b/FABRIC-3.md @@ -5855,3 +5855,17 @@ That is the natural mechanism a real fix would hook, not something to build from with the workflow") -- find and log these live, keep the campaign running, don't stop to fix each one as found. Real feature, real gap, deliberately deferred. +### XXXV.15 -- Extractor bug: SLOT_FMT never updated after §XXXV.12's alignment fix + +Found checking the real, live campaign's first two trials against the console log. Both slots +read back as "CRC mismatch" in `extract_doe_region.py` even though the kernel-side write path +was correct and the console log showed clean trials. Root cause: §XXXV.12's struct-alignment fix +added an explicit `_align_pad` `uint32_t` field to `doe_trial_slot_t` (`doe_region.h`), but +`extract_doe_region.py`'s `SLOT_FMT`/`SLOT_CRC_SPAN` were never updated to match -- every field +after `isa` was being read from the wrong byte offset, so `slot_crc` itself was read from the +wrong bytes entirely. Fixed (`SLOT_FMT = " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0/1 +0/1 + + +-5% +-2% +0% +3% +5% +2 +8 +Concurrent workers +Fraction of trials with fail_count > 0 +mode + + +uniform +heterogeneous +2 trials +Trial Fail Rate by Concurrency Level x Workload Mode + + + diff --git a/experiments/bare_metal/analysis/charts/multiuser_fleet_k_sequence.svg b/experiments/bare_metal/analysis/charts/multiuser_fleet_k_sequence.svg new file mode 100644 index 00000000..bf648109 --- /dev/null +++ b/experiments/bare_metal/analysis/charts/multiuser_fleet_k_sequence.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.950 +0.975 +1.000 +1.025 +1.050 +0.00 +0.25 +0.50 +0.75 +1.00 +Run id (shuffled trial index) +fleet_k_q48 / 65536 +mode + + +uniform +heterogeneous +Dashed line = Q48.16 conserved value (1.0); trial-end reads, shuffled run order +Fleet Heat Conservation (K) Across the Trial Sequence + + + diff --git a/experiments/bare_metal/analysis/charts/multiuser_placeholder.svg b/experiments/bare_metal/analysis/charts/multiuser_placeholder.svg deleted file mode 100644 index 00d60a29..00000000 --- a/experiments/bare_metal/analysis/charts/multiuser_placeholder.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - -No trials persisted yet -(0 trials so far) - - - diff --git a/experiments/bare_metal/analysis/charts/multiuser_switch_count.svg b/experiments/bare_metal/analysis/charts/multiuser_switch_count.svg new file mode 100644 index 00000000..74418ff3 --- /dev/null +++ b/experiments/bare_metal/analysis/charts/multiuser_switch_count.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-0.050 +-0.025 +0.000 +0.025 +0.050 +2 +8 +Concurrent workers +switch_count_cumulative +Stage-3 switch signal count at trial end, by number of concurrent workers +Cumulative Preemptive Switch Count by Concurrency Level + + + diff --git a/experiments/bare_metal/analysis/report/figures/multiuser_fail_rate.pdf b/experiments/bare_metal/analysis/report/figures/multiuser_fail_rate.pdf new file mode 100644 index 00000000..fb050ed3 Binary files /dev/null and b/experiments/bare_metal/analysis/report/figures/multiuser_fail_rate.pdf differ diff --git a/experiments/bare_metal/analysis/report/figures/multiuser_fleet_k_sequence.pdf b/experiments/bare_metal/analysis/report/figures/multiuser_fleet_k_sequence.pdf new file mode 100644 index 00000000..9eb7b1da Binary files /dev/null and b/experiments/bare_metal/analysis/report/figures/multiuser_fleet_k_sequence.pdf differ diff --git a/experiments/bare_metal/analysis/report/figures/multiuser_placeholder.pdf b/experiments/bare_metal/analysis/report/figures/multiuser_placeholder.pdf deleted file mode 100644 index 496f4a3f..00000000 Binary files a/experiments/bare_metal/analysis/report/figures/multiuser_placeholder.pdf and /dev/null differ diff --git a/experiments/bare_metal/analysis/report/figures/multiuser_switch_count.pdf b/experiments/bare_metal/analysis/report/figures/multiuser_switch_count.pdf new file mode 100644 index 00000000..c55a242c Binary files /dev/null and b/experiments/bare_metal/analysis/report/figures/multiuser_switch_count.pdf differ diff --git a/experiments/bare_metal/analysis/report/multiuser_doe_report.pdf b/experiments/bare_metal/analysis/report/multiuser_doe_report.pdf index e8ef5471..5a6c7741 100644 Binary files a/experiments/bare_metal/analysis/report/multiuser_doe_report.pdf and b/experiments/bare_metal/analysis/report/multiuser_doe_report.pdf differ diff --git a/experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex b/experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex index 9ddcb6ff..9065e06c 100644 --- a/experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex +++ b/experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex @@ -1,4 +1,11 @@ % Auto-generated by analyse_multiuser_doe.R -- do not edit by hand. -No trial data has been persisted to the DoE region yet. This section -will populate automatically the next time this report is built after -the campaign has produced at least one completed trial. +This report reflects \textbf{2} completed trial(s) persisted via +\texttt{DOE-PERSIST-TRIAL} as of the last extraction, spanning ISA(s) +\texttt{amd64}. Overall fail rate across all trials so far is +\textbf{0.0\%}; \textbf{100.0\%} of trials read +\texttt{fleet\_conserved==1} at trial end. + +\begin{itemize} + \item 2 workers, uniform: 1 trials, fail rate 0.0\%, mean fleet K = 1.0000 + \item 8 workers, heterogeneous: 1 trials, fail rate 0.0\%, mean fleet K = 1.0000 +\end{itemize} diff --git a/experiments/bare_metal/analysis/tables/multiuser_cell_summary.csv b/experiments/bare_metal/analysis/tables/multiuser_cell_summary.csv new file mode 100644 index 00000000..eb11382f --- /dev/null +++ b/experiments/bare_metal/analysis/tables/multiuser_cell_summary.csv @@ -0,0 +1,3 @@ +"nw","mode","n_trials","n_fail","fail_rate","mean_fail_count","mean_fleet_k","pct_conserved","mean_switch_cnt" +"2","uniform",1,0,0,0,1,1,0 +"8","heterogeneous",1,0,0,0,1,1,0 diff --git a/experiments/bare_metal/analysis/tables/multiuser_status.csv b/experiments/bare_metal/analysis/tables/multiuser_status.csv deleted file mode 100644 index 57e00894..00000000 --- a/experiments/bare_metal/analysis/tables/multiuser_status.csv +++ /dev/null @@ -1,2 +0,0 @@ -"status","trials_so_far" -"No trials persisted yet",0 diff --git a/experiments/bare_metal/runs/multiuser-doe-trials.csv b/experiments/bare_metal/runs/multiuser-doe-trials.csv index 7e670c9a..b2133d34 100644 --- a/experiments/bare_metal/runs/multiuser-doe-trials.csv +++ b/experiments/bare_metal/runs/multiuser-doe-trials.csv @@ -1 +1,3 @@ isa,run_id,cfg,rep,nw,mode,fail_count,fleet_k_q48,fleet_conserved,switch_count_cumulative +amd64,0,0,14,2,0,0,65536,1,0 +amd64,1,5,8,8,1,0,65536,1,0 diff --git a/scripts/extract_doe_region.py b/scripts/extract_doe_region.py index 58a1a7e2..a415f7a9 100755 --- a/scripts/extract_doe_region.py +++ b/scripts/extract_doe_region.py @@ -73,11 +73,13 @@ CTRL_CRC_SPAN = struct.calcsize("