test: Add SHA256 precompile tests#10910
Merged
Merged
Conversation
smartprogrammer93
approved these changes
Mar 21, 2026
LukaszRozmej
approved these changes
Mar 21, 2026
benaadams
added a commit
that referenced
this pull request
Mar 22, 2026
commit f3c2c6d08b1b838ca961b03fc3ba4839563b3576
Merge: 3b301ad3ae e1cc5d8e39
Author: Ben {chmark} Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 18:57:34 2026 +0000
Merge branch 'master' into pgo-2
commit 3b301ad3aefe0e6cc8b9a2c6f31ce5421af9af89
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun Mar 22 18:28:12 2026 +0000
chore(pgo): update PGO profile
commit 158fa9837dece4eeafb96544e33cbc3fb54be965
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 17:52:47 2026 +0000
fix(pgo): fail if CPU sampling pass fails — SPGO is not optional
commit 03721e6aab7dc79a586d1ccda02f6e7f3b1e6a0a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 17:39:48 2026 +0000
chore(pgo): reduce artifact retention — profiles are committed to repo
commit 17efce17d06cce0f5a5df2b3c1489a5f49245021
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 17:38:02 2026 +0000
fix(pgo): fail update if .jit.gz artifact is missing
commit 1113c64f50ce8846e0907bdb0e4273729685e667
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 17:37:02 2026 +0000
fix(pgo): remove continue-on-error from EXPB step — fail fast if collection fails
commit ef66fb953d59595b54d4c1bdf121e301ba9a4033
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 17:36:05 2026 +0000
fix(pgo): remove unnecessary if:always() from upload and extract steps
commit 661879eddebf8c0a00d83223a1acc08c31e2d317
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 17:32:21 2026 +0000
fix(pgo): always exit if EXPB lock exists — use cleanup workflow to clear
commit 57a4f0b1f22dfde9633461c0ffc3a5e658221b8b
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 16:45:05 2026 +0000
refactor(pgo): respect EXPB lock, clean only own resources
- Replace aggressive startup cleanup (kill all containers, prune images,
delete lock) with a lock-file age check: exit if lock is <1h old
(another run is active), only remove if stale (>1h)
- Pre-sampling cleanup now only removes this run's containers/volumes
(filter by expb-executor-nethermind-pgo-collect), not everything
- End-of-job cleanup only removes this run's resources (PGO_TAG images,
expb-executor-nethermind-pgo containers/networks/volumes)
- Never delete /tmp/expb.lock from the collect workflow — EXPB manages it
- New manual workflow clean-expb-runner.yml for recovering from cancelled
jobs: kills all EXPB containers, removes networks/volumes/overlays,
deletes lock file, prunes images, cleans old output directories
commit f5b641bfa66d4fc6174cc42e64676b7161908062
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 16:18:50 2026 +0000
refactor(pgo): move PGO Dockerfiles into tools/PgoTrim
Reduces root directory noise. Dockerfile.pgo, Dockerfile.pgo-sampling,
and Dockerfile.lttng-coreclr are only used by the PGO collection
pipeline. The docker buildx context is still '.' (repo root) so COPY
paths in the Dockerfiles work unchanged.
commit 435c128edda4ecd94680e795873a655daaf4c56b
Merge: 2dced5e638 cb643b819c
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 16:11:34 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 2dced5e6384bb8ee5f59cc10168bfabc02f82fb2
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 16:11:09 2026 +0000
chore(pgo): remove debug scaffolding from Dockerfile and TraceConverter
Dockerfile: remove PGO profile check (ls, cat Directory.Build.targets),
verbose publish output (tee, grep filter, PublishReadyToRunShowWarnings).
These were investigative aids that obscured build failures.
TraceConverter: remove _eventMapping key dump, AllEvents per-event
counter (fires millions of times on large traces), and second full-pass
foreach counting raw ID 190 events. Verification via ByEventType
is retained.
commit e1cc5d8e395d798e1cdc7cbe6e78729fc5077dda
Author: Ahmad Bitar <33181301+smartprogrammer93@users.noreply.github.com>
Date: Sun Mar 22 15:41:54 2026 +0300
fix(db): reuse ReadOptions in ColumnDbSnapshot to reduce GC pressure (#10894)
* fix(db): reuse ReadOptions in ColumnDbSnapshot to eliminate GC finalizer pressure
ColumnDbSnapshot previously created 14 ReadOptions per snapshot (2 per column
× 7 columns). ReadOptions in RocksDbSharp has a finalizer but no IDisposable,
so these objects survive Gen0, get promoted to Gen1/Gen2, and cause expensive
GC pauses. In FlatState block processing, 2000+ snapshots per BDN round
produce 28,000+ finalizable objects, causing Gen1 (9/round) and Gen2 (1-2/round)
collections that create timing spikes.
Fix: Create 2 shared ReadOptions (normal + cache-miss) per ColumnDbSnapshot
and pass them to all RocksDbReader instances. Explicitly destroy the native
handles via rocksdb_readoptions_destroy + GC.SuppressFinalize in Dispose().
This reduces finalizable objects from 14 to 0 per snapshot scope.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(db): replace Dictionary with array in ColumnDbSnapshot, share delegate
ColumnDbSnapshot used Dictionary<T, IReadOnlyKeyValueStore> to map columns
to readers, plus 7 separate Func<ReadOptions> closure allocations. Replace
with a flat array indexed by enum ordinal and a single shared delegate.
This eliminates per-snapshot: 1 Dictionary + backing array + 6 extra delegate
allocations (from 7 down to 1 shared).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(db): address review feedback on ColumnDbSnapshot
- Replace Unsafe.As<T, int> with Convert.ToInt32 for safe enum-to-int
conversion regardless of underlying type (critical: buffer overread)
- Add _disposed guard to Dispose() to prevent double-free on native
ReadOptions handles (critical: use-after-free)
- Use volatile fields for _cachedColumnKeys/_cachedMaxOrdinal to ensure
cross-thread visibility (moderate: data race)
- Replace LINQ ToArray() with manual loop (minor: style)
- Clarify comment on readOptionsFactory noting GetViewBetween still
creates per-call ReadOptions (minor: documentation)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* apply suggestions
* refactor a bit
* fix: add dispose guard to GetColumn, fix field visibility, add regression tests
Add ObjectDisposedException guard in ColumnDbSnapshot.GetColumn() to
prevent use-after-free on destroyed native ReadOptions handles. Add
explicit private modifier to RocksDbReader fields for style consistency.
Add regression tests for idempotent double-dispose and post-dispose
GetColumn behavior.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: address review feedback on ColumnDbSnapshot
- Use captured _rocksDbNative instead of Native.Instance in DestroyReadOptions for consistency with injectable native interop
- Add bounds/null check in GetColumn to throw KeyNotFoundException (matching prior Dictionary behavior) instead of IndexOutOfRangeException/NRE
- Replace boxing Convert.ToInt32(object) with Unsafe.As<T, int> in EnumToInt to avoid per-call allocation on the read path
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: use size-dispatched EnumToInt, avoid unconditional volatile write
- Replace Unsafe.As<T, int> with size-dispatched helper that handles
byte, short, and int-backed enums safely (JIT eliminates dead branches)
- Move _cachedMaxOrdinal volatile write inside GetCachedMaxOrdinal so it
only writes when not yet cached, avoiding unnecessary memory fence on
every CreateSnapshot call
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: use Volatile.Read for _disposed in GetColumn
Ensures cross-platform visibility of the dispose flag, matching
the Interlocked.Exchange write in Dispose().
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: lukasz.rozmej <lukasz.rozmej@gmail.com>
commit e930aa474260aec6804470b69bc21afe5d3f149a
Author: Ksenchi <152424738+kseniaeremekno@users.noreply.github.com>
Date: Sun Mar 22 12:22:41 2026 +0100
fix: fix inverted dispose logic in BackgroundTaskScheduler (#10907)
Update BackgroundTaskScheduler.cs
commit ff1321757de14e005764692f19d165048a141a04
Author: core-repository-dispatch-app[bot] <173070810+core-repository-dispatch-app[bot]@users.noreply.github.com>
Date: Sun Mar 22 10:14:19 2026 +0100
Update OP Superchain chains (#10913)
Co-authored-by: emlautarom1 <emlautarom1@users.noreply.github.com>
commit d01e891f6d000b6b44edace1c8401618334f22b8
Author: core-repository-dispatch-app[bot] <173070810+core-repository-dispatch-app[bot]@users.noreply.github.com>
Date: Sun Mar 22 10:14:03 2026 +0100
Auto-update fast sync settings (#10914)
Co-authored-by: rubo <rubo@users.noreply.github.com>
commit cb643b819ca9d640bc513e7aff7379b7dbf72bfd
Merge: dbf1576228 2749643801
Author: Ben {chmark} Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 08:03:04 2026 +0000
Merge branch 'master' into pgo-2
commit dbf1576228389fca42dd50577306e7b90b287d72
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 08:00:31 2026 +0000
fix(pgo): reduce COLLECTSEC to 580 — more margin before container stops
commit 35a01271b8d4ac08d676eb2e1528f6ba30d371ba
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun Mar 22 07:42:36 2026 +0000
chore(pgo): update PGO profile
commit b7233b557b5653c86ce276cb180843215fa32b59
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 07:12:01 2026 +0000
fix(pgo): reduce COLLECTSEC to 600 — 720 outlasted container lifetime
perfcollect was killed mid-zip-write (sampling.trace/ dir exists but
no .zip). 10K blocks take ~13m24s; 720s collection + ~30s startup
delay = finishes at exactly the container shutdown boundary.
600s (10 min) gives ~3 min margin for zip write + container teardown.
commit da5a7bd76d591c36eeb6edd6cf798d5bdd63768d
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 06:58:18 2026 +0000
fix(pgo): remove TC delay from main collection — Tier-1 gives richer .jit
TC_CallCountingDelayMs=900000 halved the .jit file (34MB -> 16MB) because
Tier-0 produces less edge/block profiling data. The TC delay is only
needed for the sampling pass where perf map validity matters. The main
EventPipe collection benefits from Tier-1 recompilation.
commit 6d860f10a48840c9583e84f231df9a98555a8b24
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 06:34:06 2026 +0000
fix(pgo): remove unused COLLECTSEC from main collection, fix comments
Main PGO image uses EventPipe not perfcollect — COLLECTSEC does nothing.
Also fix stale comment referencing 420000 TC delay (now 900000).
commit a559735cfc1623a99f77577e7a78647a16f81972
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 06:33:07 2026 +0000
fix(pgo): match main collection to sampling — TC_delay=15min, 10K blocks, 720s
Apply the same settings that improved SPGO from 112 to 1020 methods:
- DOTNET_TC_CallCountingDelayMs=900000 via extra_env
- COLLECTSEC=720 for EventPipe tracing
- amount=10000 blocks for broader coverage
commit 161a3771efa9f2b3d3fab2de647e46a15673ad66
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 06:29:28 2026 +0000
fix(pgo): increase sampling window — TC_delay=15min, collect=12min
Previous run with 420s delay / 300s collect yielded 926K attributed
samples across 1020 methods (253 EVM) — 3x improvement over baseline.
Increase further:
- TC_CallCountingDelayMs=900000 (15 min) — full Tier-0 throughout
- COLLECTSEC=720 (12 min) — 10K blocks at ~31 blk/s = ~320s, so
12min covers all blocks with margin and more sampling time
commit f65a4b7bb1379bb867439d8a31e00cb996cd7d6d
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun Mar 22 06:25:17 2026 +0000
chore(pgo): update PGO profile
commit 28de12ad2f05e901239091bd926dfff12b2d099f
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 05:58:05 2026 +0000
fix(pgo): reduce COLLECTSEC to 300 — must finish before container stops
perfcollect needs to complete collection + post-processing before EXPB
tears down the container. 10K blocks at ~31 blocks/s = ~320s, so 300s
collection finishes with headroom for the zip write.
commit 2de827f800999996e4e2ae03178a5cd57191730a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 05:56:37 2026 +0000
fix(pgo): use extra_env not environment, send 10K blocks for sampling
EXPB uses 'extra_env' for container environment variables, not
'environment'. Also increase amount from 5000 to 10000 blocks for
the sampling pass to get more representative CPU sampling coverage.
commit 8777832a6f3819be19fb577595d539a448aa9e62
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 05:54:59 2026 +0000
fix(pgo): drop payloads-15000 swap — file may not exist on runner
The runner only has payloads-10000.jsonl. With 400s collection window
all 10K blocks are covered (5K blocks take ~155s).
commit b4341d71e0c6b69d81d30da40e20b9937cd59842
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 05:53:25 2026 +0000
fix(pgo): move TC_CallCountingDelayMs into sampling Dockerfile
DOTNET_TC_CallCountingDelayMs=420000 belongs in the sampling image
itself, not passed as EXPB environment.
commit af6f19fad29674b34e5b8080e106478a046c3563
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 05:52:41 2026 +0000
fix(pgo): improve SPGO sampling — delay Tier-1, 15K blocks, 400s collection
97% of CPU samples were falling outside managed code because Tier-1
recompilation changes method addresses while perfcollect is sampling,
invalidating the perf map. Only 3.3% of ~1.9M samples could be
attributed to managed methods (down from 7.9% in previous profile).
For the sampling pass only:
- Set DOTNET_TC_CallCountingDelayMs=420000 (7 min) to keep methods at
Tier-0 addresses throughout the entire perfcollect window
- Increase perfcollect collection time from 120s to 400s via COLLECTSEC
env var (Dockerfile.pgo-sampling now reads this)
- Use 15000-block payloads file (3x default) for more representative
CPU sampling coverage
These changes only affect the CPU sampling container, not the main PGO
collection container (which still uses default TC delay for realistic
edge/block profiling).
commit 8e3e27dfc23294d598cdb634984b0e5e9f136afe
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun Mar 22 05:17:12 2026 +0000
chore(pgo): update PGO profile
commit c356dd36404f44e42d27857a54aa473e27f7a94c
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 05:01:14 2026 +0000
fix(pgo): render sampling config from base — don't depend on RUNNER_TEMP
The rendered config from the earlier step may be missing by the time
the sampling step runs. Render directly from the base EXPB config
file instead of reading from RUNNER_TEMP.
commit 48f9edf41a6bec70ed0183fd6a9846077c8e9690
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 04:48:15 2026 +0000
fix(pgo): remove stale Docker volumes before EXPB runs
EXPB creates named Docker volumes (e.g. expb-executor-*-pgo) with
bind mounts into output directories. When old output directories are
cleaned up, these volumes become dangling and cause "no such file or
directory" mount failures on the next run.
Add `docker volume rm` for expb-executor volumes in all three cleanup
locations (start-of-job, pre-sampling, end-of-job).
Also fix deprecated --keep-storage flag → --max-storage.
commit 6ce7946280eec9c54c6c96ae816e887a0cc0d934
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 04:24:43 2026 +0000
fix(pgo): do full disk cleanup at start of job — out of disk causes infinite restart loop
When disk is full, overlay mount fails (EBUSY), Nethermind crashes,
Docker restarts it, loop forever. Must free disk BEFORE running EXPB.
Moved image pruning, build cache cleanup, and old EXPB output removal
to the start-of-job step. Also cleans EXPB outputs keeping only last 3.
commit d0f35b87bbb505a08f6cefb7226f2606d63a705f
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 04:11:16 2026 +0000
fix(pgo): add timeout to docker rm in sampling cleanup — prevents hanging on stuck containers
commit 1336513971c055fa0375da6784054b4716cda1e6
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 04:07:58 2026 +0000
fix(pgo): lazy unmount + rm overlay work dirs to fully clear stale mounts
commit 2a4c9977b1ea2d290086dced39a4e4cce97f99b2
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:50:10 2026 +0000
fix(pgo): unmount stale overlay mounts at startup — overlay EBUSY blocks snapshot creation
commit 5cd2fcbb4d84a99299d405ad7f81a40608aa6458
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:49:34 2026 +0000
fix(pgo): remove if:always() from processing steps — fail fast on errors
Only cleanup and artifact upload steps should run always(). Processing
steps (sampling, PgoTrim, dotnet-pgo build, conversion) should skip
if earlier steps failed instead of running pointlessly.
commit 207cca44182facb49f6f5b0b395379c6e39611c3
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:37:18 2026 +0000
feat(pgo): pre-build LTTng coreclr image — skip 10min rebuild every run
Replace inline lttng-build stage with pre-built image
nethermindeth/nethermind:lttng-coreclr-10.0.5. Only needs rebuilding
when .NET version changes.
Added Dockerfile.lttng-coreclr for the one-time build & push.
commit b45aef7309c608a157dfc564b9c002df5362c363
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:33:36 2026 +0000
fix(pgo): keep 4G buildx cache to avoid rebuilding coreclr every run
commit e1ff56a5076ae241bb8e454d4e6301e3d05ab7ba
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:28:19 2026 +0000
TEMPORARY: force kill all containers + remove lock to recover from stuck state
commit e7872054a523c83b7695c1228a25cfa7c7d3f807
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:26:00 2026 +0000
fix(pgo): prevent container restart loops with sentinel file
Write a .started sentinel on first run. If the container is restarted
by Docker's unless-stopped policy, the sentinel exists and the
entrypoint exits cleanly (code 0), breaking the restart loop.
commit 1a4191660f2ca007dcb9f041f8c7063e7a1d1d9f
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:20:31 2026 +0000
fix(pgo): respect EXPB lock file — abort if another run is active (<1h), clean if stale
commit a71ef16e91d41dca92c89764b85098727e32cd4e
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:17:35 2026 +0000
fix(pgo): kill ALL expb containers at start — Alloy/k6 hold network refs preventing removal
commit 208f1fb4b3cf68f6b456b255f954de40b60d771f
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 03:10:57 2026 +0000
fix(pgo): move Docker cleanup to end of job, keep start minimal
Start of job: only kill stale containers + networks (needed for run)
End of job: full cleanup — containers, old images, build cache, lock
This ensures no disk space is wasted between runs while not interfering
with the current run's data or concurrent workflows.
commit 28afdf7f1a26b4b238b4ae17431bc9f4f393f506
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:57:32 2026 +0000
fix(pgo): prune all buildx cache — old coreclr builds are wasting disk
commit 95d64b446ff37de4c68bcc374bc01d46b9b21130
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:55:53 2026 +0000
fix(pgo): keep 10G buildx cache to preserve coreclr lttng-build layers
commit a3aa24096c5afde1c61868b02667c5acf5efb3dc
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:53:47 2026 +0000
fix(pgo): also clean up old EXPB infra images (Alloy, k6) during disk cleanup
commit 888a577bf1fdb8830b1893dd9ef5823ec667383d
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:51:05 2026 +0000
fix(pgo): clean up old Docker images to free disk space
Remove stopped containers, old images (keeping current run's PGO tags
and base images), dangling images, and build cache >5GB. Logs disk
usage before/after cleanup.
commit d22bfcba6536396c617ee537a4ac6d3c7fc64cad
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:23:40 2026 +0000
fix: don't swallow dotnet publish errors — tee to log file and check output exists
commit f409842fd62a71d60b8fa7895cd6f27b2e6b9302
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:21:35 2026 +0000
debug: fix Directory.Build.targets path and broaden crossgen2 grep patterns
commit 28cf12aa45ee7ec789ca71875dccb0f5fae74cd0
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:17:14 2026 +0000
fix: improve real-time Nethermind log tailing in benchmark workflow
- Increase initial wait from 5s to 10s (EXPB needs time to create container)
- Extend retry from 60 to 120 attempts (4 min window instead of 2)
- Use precise container filters (name=expb-executor + ancestor=nethermind)
- Use unbuffered sed (-u) so logs stream in real-time
commit 43b88612bf8b05774167df390797207a9c80c7d9
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 02:01:16 2026 +0000
fix(evm): skip state-touching opcodes during warmup to prevent GDV pollution
State-interacting opcodes (SLOAD, SSTORE, BALANCE, CALL variants,
CREATE, LOG, etc.) during warmup use a different IWorldState type than
real block processing. The JIT's Tier-0 GDV profiling records this
warmup type, creating bimodal type histograms at virtual dispatch
sites. This prevents the JIT from devirtualizing — instead of a direct
call, it emits a type-check guard for both types, which is slower than
no devirtualization at all.
Skip these opcodes during warmup so GDV profiles only capture the
production IWorldState type from real block execution.
commit 12dca67b15efe51fd63fecb715d7d200b9049482
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 01:57:45 2026 +0000
fix(evm): use representative values in opcode warmup for better PGO profiling
PushOne (value=1) caused Tier-0 PGO to profile degenerate branches:
- DIV/MOD by 1 → trivial fast-path
- MULMOD/ADDMOD with modulus 1 → zero result
- EXP with base 1 → identity
- SHL/SHR by 1 → minimal shift
Use multi-word UInt256 values that exercise common arithmetic paths:
- Large dividend / small (>1) divisor → full multi-word division
- Modulus larger than result → normal remainder path
- Different values → no equality fast-paths
This gives crossgen2 and the JIT better branch prediction data from
the Tier-0 instrumentation that runs during warmup.
commit 424240d51d02f6535672e85b334d5a3edab4bfc3
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 01:45:45 2026 +0000
fix(pgo): increase TC_CallCountingDelayMs from 0 to 30ms
0ms causes a recompilation storm at startup — every method gets
call-counting stubs immediately, triggering massive Tier-1
recompilation while blocks are being processed. 30ms lets R2R
handle initial execution, then Tier-1 kicks in with PGO data.
May explain the benchmark regression.
commit 089e9a6df3ce6898ffd2411da5612aa028fb48ba
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 01:38:36 2026 +0000
Add the pgo files to output
commit 7453b7f87d6cd9fa8d8ba0034d97a1fe0938d050
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 01:36:34 2026 +0000
debug: fix PGO diagnostic path and add verbose publish to grep for mibc/crossgen2 usage
commit 68373010be052720c0e51f2ff059692ed68bdc50
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun Mar 22 01:08:06 2026 +0000
chore(pgo): update PGO profile
commit 643911c83879bb79b28965f8d51216d7f7ad9d68
Merge: 34353cd1e9 b3f0ef9ac7
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 00:44:54 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit b3f0ef9ac7b6db524a2005191dcb06b96712a1a8
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun Mar 22 00:43:15 2026 +0000
chore(pgo): update PGO profile
commit 34353cd1e968e7f2e3dacbc513a2b98e113105a7
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 00:42:08 2026 +0000
fix(pgo): revert to 120s — 150s collection + 30s zip exceeds container lifetime
commit 0565c4cc2d79bfc070d3f6671bf0f1e6fc4920a0
Merge: e6c56b93a9 861032e818
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 00:20:26 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit e6c56b93a94b5d861611baf62b2c90b6be50366a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 00:13:05 2026 +0000
fix(pgo): try 150s collection at 1000Hz — frequency was the crash cause, not duration
commit 1d2528d6341169ff118f366333964bb342025520
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sun Mar 22 00:11:46 2026 +0000
fix(pgo): revert to 120s/1000Hz — 4000Hz causes perfcollect to crash instantly
commit 861032e8186a42de37a730b656afd2155a048c8a
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 23:52:42 2026 +0000
chore(pgo): update PGO profile
commit 17184b81d3a3280d558b4bb759a6169492d45351
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 23:22:13 2026 +0000
chore(pgo): update PGO profile
commit 27496438013f51b3bd4b2f22de845c58eedeabff
Author: Copilot <198982749+Copilot@users.noreply.github.com>
Date: Sun Mar 22 01:57:23 2026 +0300
Fix ArgumentException in SnapshotRepository.GetSnapshotBeforeStateId for negative BlockNumber (#10882)
* Initial plan
* Fix ArgumentException in SnapshotRepository.GetSnapshotBeforeStateId when BlockNumber is negative
Guard against negative BlockNumber values in GetSnapshotBeforeStateId to prevent
SortedSet.GetViewBetween from throwing when called with lowerValue > upperValue.
This happens during genesis loading when FlushCache is called and the persisted
state is PreGenesis (BlockNumber=-1) or Sync (BlockNumber=long.MinValue).
Co-authored-by: smartprogrammer93 <33181301+smartprogrammer93@users.noreply.github.com>
* Address review feedback: use ArrayPoolList.Empty() and guard FlushCache against negative BlockNumber
- Use ArrayPoolList<StateId>.Empty() instead of new ArrayPoolList<StateId>(0)
- Add early return in FlushCache when persistedState.BlockNumber < 0, matching
the existing guard pattern in PersistIfNeeded
Co-authored-by: smartprogrammer93 <33181301+smartprogrammer93@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: smartprogrammer93 <33181301+smartprogrammer93@users.noreply.github.com>
commit b2bb33da35a1ccb7d251bb04564d60d1f4c7c0fd
Author: Copilot <198982749+Copilot@users.noreply.github.com>
Date: Sun Mar 22 01:56:56 2026 +0300
Fix flaky test: replace polling with signal-based loop in BecomesNewHead (#10884)
* Initial plan
* Fix flaky test: replace After(1000, 100) polling with signal-based loop in BecomesNewHead
The BecomesNewHead() method used _resetEvent.WaitOne() followed by
Assert.That(...).After(1000, 100) polling. The AutoResetEvent could
consume a stale or unrelated NewHeadBlock signal, leaving only 1 second
of polling — insufficient on slow CI machines.
Replace with a deadline-based loop that re-waits on the event until the
expected block becomes the head or the full ProcessingWait (10s) expires.
This is signal-based, handles stale signals correctly, and uses the full
timeout budget.
Co-authored-by: smartprogrammer93 <33181301+smartprogrammer93@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: smartprogrammer93 <33181301+smartprogrammer93@users.noreply.github.com>
commit 7b0be729fc3052188544d00df779ae4febadcdfd
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 22:52:53 2026 +0000
fix(pgo): increase perf sampling frequency from 1000 Hz to 4000 Hz for 4x more samples
commit f016780df8bd05f102b4446701227597c13ddaae
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 22:50:35 2026 +0000
fix(pgo): lower --spgo-min-samples to 20 for broader method coverage
commit 359c976a0d333a171b91e9f35eefb2331162307c
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 22:47:05 2026 +0000
fix(pgo): increase perfcollect to 150s — captures full block processing with margin for post-processing
commit b2d6d32796bce82a1752ec7e380d91d9bc69bfef
Merge: 11bff70db2 b905c789fb
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 22:45:29 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 11bff70db2365ae364fb567b44053d938bcaf269
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 22:38:57 2026 +0000
fix(pgo): revert to 120s sampling — 240s exceeded container lifetime
commit b905c789fbf2a391b846aea4d917184d9731db3f
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 22:34:57 2026 +0000
chore(pgo): update PGO profile
commit e1b4f82b34cf5ec686e6b9f2948a6e4ab8ea1cd3
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 22:11:38 2026 +0000
fix(pgo): increase perfcollect sampling duration from 120s to 240s for more SPGO coverage
commit e1fd5a4a21bd3f39b75c7aa3924a7414dcdfe3ce
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 22:08:11 2026 +0000
debug: add PGO diagnostic output and PublishReadyToRunShowWarnings to Docker build
commit 541b89746b77205007b06df87b55c1b0f509da3c
Merge: aa727048be 5d062f5d90
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 21:46:06 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 5d062f5d905c28870adb1123f85e0693f64f7955
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 21:45:21 2026 +0000
chore(pgo): update PGO profile
commit aa727048be179388adaea5daa700dd840c18d3df
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 21:37:59 2026 +0000
whitespace
commit dfc55c4b508670df7b39a0183c89c5cb120f1d6b
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 21:21:16 2026 +0000
fix(pgo): catch FlowSmoothing crash so SPGO doesn't lose all 143K samples
FlowSmoothing.MakeGraphFeasible throws "Stack empty" for methods with
disconnected flow graph nodes. Without a try-catch, one bad method
crashes the entire SPGO pass and 143K attributed samples are lost.
Wrap SmoothFlow in try-catch to skip broken methods and keep the rest.
commit 9f0b13db0d75d3590438903f1c7589dfb2b13763
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 21:20:09 2026 +0000
chore(pgo): update PGO profile
commit 8789a38d8842bc82150c20a567d7356cb65b3888
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 20:54:34 2026 +0000
done
commit 63e7dd071e60f69922b8b4aa83fdebd268a7fa2e
Author: Ruben Buniatyan <rubo@users.noreply.github.com>
Date: Sat Mar 21 21:46:40 2026 +0100
test: Add `SHA256` precompile tests (#10910)
commit 2be0d9bf3fd54a620271a0127d5609df0c09e8d8
Author: Ruben Buniatyan <rubo@users.noreply.github.com>
Date: Sat Mar 21 21:46:28 2026 +0100
test: Add `BLAKE2F` precompile tests (#10909)
commit e9232ab960171d7db8224d89a08b731120fc501a
Author: Lukasz Rozmej <lukasz.rozmej@gmail.com>
Date: Sat Mar 21 21:37:22 2026 +0100
fix(test): eliminate flakiness in BlockchainProcessorTests (#10905)
Two root causes:
1. Block fields were static, shared across parallel test instances
([Parallelizable(ParallelScope.All)] + InstancePerTestCase).
RecoverData mutates Header.Author on these shared objects, so one
test's recovery could alter another test's timing non-deterministically.
Fix: make block fields instance-scoped.
2. Mock Monitor.Wait used the same 10s timeout (ProcessingWait) as the
test assertion WaitOne. If a pulse arrived in the brief window between
re-acquiring the lock and the next Monitor.Wait, the mock would sit
idle for the full 10s before re-checking — eating the entire assertion
budget. Fix: introduce MockRecheckInterval (200ms) for the mock loops.
Removed [Retry(3)] from the three tests that had it.
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 3493901f5a3760db2e0cbc20f6c7c4d8bdf4a88f
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 20:36:57 2026 +0000
Undo unrelated change
commit 82e1bb29cc4db94b961b39d01538c5ce23e3816d
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 20:25:35 2026 +0000
fix(pgo): pass KeepAllEvents=true to preserve ILToNativeMap in .etlx
CopyRawEvents drops events with ThreadID=0 when KeepAllEvents is false.
LTTng CLR events (including MethodILToNativeMap_V1) have ThreadID=0 from
the CTF context. Without KeepAllEvents, 41,669 ILToNativeMap events were
dispatched by the CTF source but silently dropped during .etlx serialization.
Also fix V1 mapping to use version=0 so template lookup matches.
Tested locally: 41,669 ILToNativeMap events now in .etlx, all 379,936
CTF events preserved.
commit 5a86c1f731ea14f6a5e3c88148ccefaf056b5a5c
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 20:14:59 2026 +0000
fix(pgo): move debug print inside using block — variable scope error
commit 666ee6f434843453c2911ecf9e3fd6bb80ae3ccd
Merge: 229c5c0ee9 29d8c27238
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 19:52:40 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 229c5c0ee9b7c30e72271838182aecce711ba295
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 19:50:35 2026 +0000
debug(pgo): add CTF event dispatch counting and remove LTTngConfig for diagnostics
commit c117eef59e71c547534b1b5069c3ecd334ae8ff6
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 19:43:55 2026 +0000
fix(pgo): remove DOTNET_LTTngConfig — use ActivateAllKeywordsOfAllProviders to diagnose missing ILToNativeMap
commit 29d8c27238fbc3e0353c6882591f679b3b11066f
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 19:37:10 2026 +0000
chore(pgo): update PGO profile
commit 0828e46d39eb53d0a93d82064c1987b815279d09
Merge: 9a95c6ea86 4b8c587f4e
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 19:14:00 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 9a95c6ea86ca2dce82082caa947a09adf490f9c1
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 19:12:48 2026 +0000
fix(pgo): enable MethodILToNativeMap_V1 — runtime fires V1, not V0
The runtime calls FireEtXplatMethodILToNativeMap_V1 which checks
tracepoint_enabled(DotNETRuntime, MethodILToNativeMap_V1). But
perfcollect only enables MethodILToNativeMap (v0) and TraceEvent's
CTF mapping only has v0. Without the V1 tracepoint enabled, the
EventXplatEnabled check returns false and the event is never fired.
This explains "153K samples in managed code without native<->IL
mappings" and "0 samples attributed".
Fixes:
- Add MethodILToNativeMap_V1 to perfcollect patch
- Add V1 CTF mapping to PgoTrim's injection
- Updated PerfView PR with V1 mapping
commit 4b8c587f4e121ed8de3ab0e4bf98cdee5062ffb0
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 19:10:23 2026 +0000
chore(pgo): update PGO profile
commit 22c61a22add34fad933e73286d07553f939489dd
Merge: 853d6e354e 9461523be1
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 18:47:15 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 853d6e354e249bd1876975dbcbe9ccd29a2f8a20
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 18:46:33 2026 +0000
fix(pgo): add CompilationDiagnostic keyword and ILToNativeMap diagnostics
MethodILToNativeMap events (0 in trace) may need CompilationDiagnostic
(0x2000000000) keyword in addition to JittedMethodILToNativeMapKeyword
(0x20000). Updated keyword to 0x60000A0018 matching dotnet-pgo README.
Also added ILToNativeMap count to PgoTrim convert-trace output for
debugging.
commit 9461523be1044fae5bcf15006a20f0bffbb5c3d0
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 18:39:07 2026 +0000
chore(pgo): update PGO profile
commit f52db2620fd929844c83f82ed52835ce0e1b0a43
Merge: f349088496 a54e733923
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 18:16:24 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit f3490884968b249693ce564cf697f59c38949dab
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 18:15:42 2026 +0000
fix(pgo): add JittedMethodILToNativeMap keyword for SPGO block attribution
SPGO samples were loaded (1.9M) but 0 attributed because the IL-to-native
offset maps were missing. Keyword 0x20000 (JittedMethodILToNativeMap)
wasn't in DOTNET_LTTngConfig or perfcollect's default events.
Updated: 0x4000080018 → 0x40000A0018 (adds 0x20000)
Added: JittedMethodILToNativeMapKeyword to perfcollect defaults
commit a54e73392340a82a643e92340283b1a6d78eddfb
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 18:12:59 2026 +0000
chore(pgo): update PGO profile
commit 0a6f84bf24401262d8805db32497827d63eae357
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 17:37:58 2026 +0000
feat(pgo): add SPGO perf sample extraction and dotnet-pgo injection
PgoTrim extract-spgo: parses perf.data.txt from .trace.zip and writes
a .spgo file (one hex IP per line) alongside the .etlx.
dotnet-pgo patch: reads the .spgo file via Path.ChangeExtension and
feeds IPs to SampleCorrelator.AttributeSamplesToIP() for real SPGO
block count attribution.
Tested locally: 1,918,464 samples extracted from perfcollect trace.
commit d629b1288e52a3b9f6752854a419c32dfb30c8e3
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 15:51:30 2026 +0000
chore(pgo): update PGO profile
commit a038c07bb319761f87f03d445944dee774c16590
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 15:12:02 2026 +0000
fix(pgo): remove --no-build from PgoTrim — no prior build step exists
commit a2858a1e2c2e708c7887cb05ab6f01b3c71131f9
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 14:42:11 2026 +0000
fix(pgo): add Dia2Lib and TraceReloggerLib compile refs for PerfView build
TraceEvent source references Windows COM types (IDiaDataSource3,
TraceReloggerLib) from Dia2Lib.dll and TraceReloggerLib.dll. These
ship in the TraceEvent NuGet package. Copy them from the NuGet cache
as compile-time references so the project builds on Linux.
commit 78743d14845fcf93c814770e391f7fbbb9121d4f
Author: Aayush Giri <101140354+Giri-Aayush@users.noreply.github.com>
Date: Sat Mar 21 19:00:58 2026 +0530
docs: overhaul README structure and content (#10856)
commit ddceeba271dd7c438687856c2c73eedc4d482456
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 10:51:07 2026 +0000
feat(pgo): build dotnet-pgo with PerfView PR branch for full SPGO support
Build TraceEvent from our PerfView PR (fix/add-methoddetails-ctf-mapping)
as a project reference in dotnet-pgo. This gives dotnet-pgo the
MethodDetails CTF mapping AND the full CreateFromLttngTextDataFile path
which processes both LTTng CLR events and perf CPU samples from
.trace.zip — enabling real SPGO with attributed CPU samples.
Removes PgoTrim trace conversion (no longer needed) and the
OpenOrConvert .etlx patch. PgoTrim still handles .jit compression.
commit a139d9e4518352889bc4b84c1405351d0af98bc1
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 10:46:22 2026 +0000
chore(pgo): update PGO profile
commit b879a95be0867057f96dbc2e4217a1e75464d3a3
Merge: 7ef543af30 57a4139a4e
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 10:23:42 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 7ef543af30d1f7ba15616d30925a05690403808a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 10:23:02 2026 +0000
fix(pgo): override dotnet-pgo TraceEvent to 3.1.30 to match PgoTrim
The error "App is version 74, file format accepts >= 76" means
dotnet-pgo's TraceEvent is older than expected (version 74 = pre-3.1.28).
The runtime build system may resolve a different TraceEvent from an
internal feed. Force 3.1.30 to match PgoTrim's .etlx format.
commit 0f3991230dc9ee60ea8b4ee7ce367bcd9737efaa
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 10:19:56 2026 +0000
fix(pgo): add debug output for dotnet-pgo TraceEvent version and .etlx file version
commit 57a4139a4e6eea12e2d16caf367d412138d97bd5
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 10:17:29 2026 +0000
chore(pgo): update PGO profile
commit 7cbf976e67974fbd0f9f9651a93a08737901e95a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:54:07 2026 +0000
fix(pgo): log TraceEvent assembly version in PgoTrim for debugging
commit 1414f59dd575a18c789b309452fbce54e5c09586
Merge: 41e9ecf49b 7e6f8c9f0a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:50:59 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 41e9ecf49b61d5ccd0a44b7d2f08521a76ea9a14
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:42:21 2026 +0000
fix(pgo): clear NuGet caches and stale sources before PgoTrim restore
Previous runs may have added a local-traceevent NuGet source pointing
to a stale/old TraceEvent package. Clear all NuGet locals and remove
the source. Add verbose restore to show which TraceEvent version is
actually resolved.
commit 7e6f8c9f0aff3d8951962345978ce4fb6b8c4785
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 09:39:23 2026 +0000
chore(pgo): update PGO profile
commit 55c34da731cbf19610eee5dc8b9732caedf7b11f
Merge: 41fae7ebc7 fba6865b9d
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:17:01 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 41fae7ebc73458a6c08eb3270e31605b198afbc2
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:15:15 2026 +0000
fix(pgo): use dotnet restore --force + build --no-incremental for PgoTrim
commit 7df050a464519e92520da78221c532a49ec14452
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:11:42 2026 +0000
fix(pgo): consolidate all PgoTrim work into one step before dotnet-pgo
Move both trace conversion and .jit compression into the "Process
traces with PgoTrim" step. Build PgoTrim once with --force, then
run both subcommands with --no-build. Update artifact upload to
reference steps.pgotrim.outputs.jit_gz.
commit f84ee642b1720ca0642478d5292a8e55de4a43c7
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:09:26 2026 +0000
fix(pgo): move PgoTrim convert-trace to its own step before dotnet-pgo build
Running PgoTrim in a separate step ensures it builds fresh with
TraceEvent 3.1.30 before the dotnet-pgo build step caches anything.
Also makes the pipeline clearer — convert trace, build dotnet-pgo,
then use both outputs.
commit e15b6cb40972a88fd076029fdc7f551fd8be1074
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 09:07:44 2026 +0000
fix(pgo): force rebuild PgoTrim to pick up TraceEvent 3.1.30 on cached runner
commit fba6865b9d315f2797d0a60de7dcbf87cb17c80e
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 09:06:15 2026 +0000
chore(pgo): update PGO profile
commit e4678000a35552119b496683312506db7ced0152
Merge: 79fb6b4661 a2ad970086
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 08:44:04 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 79fb6b4661d933eadda87111d9eed1fe8aafe6b6
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 08:43:28 2026 +0000
fix(pgo): upgrade TraceEvent to 3.1.30 — .etlx format version 74 vs 76 mismatch
commit a2ad970086449b440001ad6fddc118b3047773d5
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 08:41:45 2026 +0000
chore(pgo): update PGO profile
commit 22a9187a52689921cd711151e28c0ec476956aa3
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 08:14:58 2026 +0000
fix(pgo): add AssemblyLoad to perfcollect's LoaderKeyword array
perfcollect has a duplicate DotNETRuntime_LoaderKeyword declaration —
the second overwrites the first, losing AssemblyLoad/AssemblyUnload.
dotnet-pgo needs AssemblyLoadUnloadTraceData to find the CLR instance.
commit d00a6dc3065b5d33df7cd9c23a8fcdc7daf88d08
Merge: 0d341d3cba 2b137b0cb6
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 08:05:40 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 0d341d3cba401c0e604376fdf5527f3b224e9b0a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 08:05:09 2026 +0000
fix(pgo): patch dotnet-pgo to use TraceLog() directly for .etlx input
OpenOrConvert falls back to looking for .etl when new TraceLog() fails
on standalone .etlx files. Patch dotnet-pgo source to bypass
OpenOrConvert and use TraceLog constructor directly for .etlx input.
commit 2b137b0cb6a683df20b0fbe187552363dc8d86a0
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 08:01:42 2026 +0000
chore(pgo): update PGO profile
commit bfa5b473a49191fe73e92f0867d3ff1796ae4178
Merge: 7e78e43572 6ab8a0c38e
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 07:39:11 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 7e78e435725ad93df5a27bd574fa0878f1366d97
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 07:38:19 2026 +0000
fix(pgo): add TypeKeyword to perfcollect defaults, add debug output for .etlx path
Enable BulkType events by adding TypeKeyword to perfcollect's default
event set. Add logging to diagnose the .etlx OpenOrConvert failure.
commit faa324d16d73b3e81162ec7b19dda03bb825a90e
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 07:36:05 2026 +0000
fix(pgo): enable TypeKeyword in perfcollect defaults for BulkType events
perfcollect's default event set doesn't include DotNETRuntime_TypeKeyword,
so BulkType events are never captured. dotnet-pgo requires BulkType for
type handle resolution. Patch perfcollect to add TypeKeyword to defaults.
Also fix PgoTrim verification to use OpenOrConvert with KeepAllEvents
(same path as dotnet-pgo), and remove the PerfView source build from
the workflow since PgoTrim handles the CTF mapping workaround.
commit 6ab8a0c38e1421716b69293765415ade10cbacf7
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 07:28:28 2026 +0000
chore(pgo): update PGO profile
commit d6462040a6cadf5171fc48cf37e029678b86e34a
Merge: 5154261a4e 751a9d0dd8
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 07:06:04 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 5154261a4ea61475f58808d5ca4b6473886d06b0
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 07:02:03 2026 +0000
feat(pgo): add PgoTrim convert-trace to inject MethodDetails CTF mapping
PgoTrim now has a convert-trace subcommand that opens a perfcollect
.trace.zip, injects the missing DotNETRuntime:MethodDetails CTF mapping
via reflection into CtfTraceEventSource, and writes a .etlx that
dotnet-pgo can read. This replaces the PerfView source build approach.
Also restore DOTNET_LTTngConfig=0x4000080018:5 to ensure the runtime
fires MethodDetails and BulkType events.
Tested locally: 103,404 MethodDetails events extracted from trace.
commit a5449c2b07d016045912ac2137dfd25da4f93b45
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 06:52:00 2026 +0000
fix(pgo): use python regex to strip SupportFiles — sed broke XML structure
commit 751a9d0dd8b2af857cf12429757c41293e807a8b
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 06:49:20 2026 +0000
chore(pgo): update PGO profile
commit 9c94490a8aa8798b39fbf3b103fb41cb66d3a248
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 06:25:55 2026 +0000
fix(pgo): correct CtfEventMapping args — (opcode, id, version) not (eventId, taskId, version)
commit 7d74df59caaea816b97655d5ae1da472adaf8eb1
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 06:24:36 2026 +0000
fix(pgo): strip SupportFiles dependency from TraceEvent build
SupportFiles 1.0.30 is on a private NuGet feed. The package contains
Windows-only native DLLs (KernelTraceControl, msdia140) not needed
for Linux CTF trace parsing. Remove the dependency and its file
references so TraceEvent builds from source on the CI runner.
commit 1adf4db0534cf3b3cec036f1ee88ccc688d135b1
Merge: d567d8c70d 69e0fc023f
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 06:00:32 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit d567d8c70df3f2615d109732ab229704a6559f7a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 05:59:50 2026 +0000
fix(pgo): build patched TraceEvent as version 3.1.28 to match dotnet-pgo pin
commit b8d009a800316f502476fdd7b8cd1eadd9c8902c
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 05:58:22 2026 +0000
fix(pgo): build TraceEvent from source with MethodDetails CTF mapping
TraceEvent's ClrTraceEventParser.EnumerateCtfEventMappings() is missing
DotNETRuntime:MethodDetails (event ID 72), causing CtfTraceEventSource
to skip these events when parsing perfcollect .trace.zip files.
Clone PerfView, add the one missing yield return line, build the
TraceEvent NuGet, and point dotnet-pgo's build to it.
commit 69e0fc023f8764b4537d210fa4b5787ddb70aa84
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 05:42:21 2026 +0000
chore(pgo): update PGO profile
commit 3bf82c87bb776d99669dbdf7ce728068e38d0971
Merge: 8de45b33c9 7adbdff787
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 05:19:07 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 8de45b33c9a745d861b14fec0b2c683dc6989a91
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 05:16:54 2026 +0000
fix(pgo): remove DOTNET_LTTngConfig — let runtime activate all keywords
Without DOTNET_LTTngConfig, the runtime calls
ActivateAllKeywordsOfAllProviders() which enables ALL keywords including
MethodDiagnostic. The explicit config was potentially restricting events.
commit 7adbdff787f11a9af3d2e9df53f898e570bb70a8
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 05:12:28 2026 +0000
chore(pgo): update PGO profile
commit 42067aa1fd37b20beac3a054c2e07a50c5ffeb2f
Merge: 7b3f3368c7 64652f99dc
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 04:52:00 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 64652f99dc7c94e0df21e3836d7c532da22e478e
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 04:50:29 2026 +0000
chore(pgo): update PGO profile
commit 7b3f3368c7578406b5c30a765ca7ab54cbafdf2c
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 04:43:44 2026 +0000
fix(pgo): patch perfcollect to add MethodDetails tracepoint
Simpler than the runtime wildcard hack — just sed the downloaded
perfcollect script to add DotNETRuntime:MethodDetails to the
JitKeyword tracepoint list. Removes the fragile lttng session
discovery + wildcard enable from the entrypoint.
commit 486e4bb2ffcebf09831f96b2bcdf76e783978212
Merge: e511856a46 0340e382d1
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 04:30:08 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit e511856a46d5fc65580d7e41806ff56fbae78afc
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 04:28:22 2026 +0000
fix(pgo): enable all DotNETRuntime LTTng tracepoints including MethodDetails
perfcollect's hardcoded tracepoint list predates MethodDetails (added
with MethodDiagnostic keyword 0x4000000000). After perfcollect creates
the LTTng session, enable 'DotNETRuntime:*' wildcard to capture all
CLR events including MethodDetails that dotnet-pgo needs for SPGO.
commit 0340e382d1176f7187382372c87d728d418262b1
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 04:24:04 2026 +0000
chore(pgo): update PGO profile
commit 789c98802c41c484fd163680ebc41c6cd220c720
Merge: ae06985af9 abf03a5ec7
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 04:00:50 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit ae06985af90a017db6af8d60cbc94d5fb7bba12a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 03:57:22 2026 +0000
fix(pgo): set DOTNET_LTTngConfig for MethodDiagnostic keyword
dotnet-pgo needs keyword 0x4000080018 (MethodDiagnostic + JitTracing +
Loader + Type) at verbose level 5. perfcollect's default LTTng profile
doesn't include MethodDiagnostic (0x4000000000), causing "No
MethodDetails" error.
commit abf03a5ec701b1ce2022b09932bb9cdfd1b82c20
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 03:56:39 2026 +0000
chore(pgo): update PGO profile
commit 8160e246ae717783469d76c6dc32502f9a74ca80
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 03:34:16 2026 +0000
fix(pgo): clear stale pgo-data before extraction — self-hosted runner persists RUNNER_TEMP
commit 7152533213dc1c1104d3c55519722e8ec1c62a77
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 03:26:59 2026 +0000
fix(pgo): remove platforms input — publish-docker.yml doesn't accept it
commit f37e532e6d43b91bf6e9e8565298cbb11a659e88
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 03:26:08 2026 +0000
Revert "fix: add platforms input to publish-docker workflow"
This reverts commit 6c7ab2529db49a6b36d2980ae6d6dc8b22a7afa8.
commit 6c7ab2529db49a6b36d2980ae6d6dc8b22a7afa8
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 03:25:04 2026 +0000
fix: add platforms input to publish-docker workflow
The composite action supports a platforms parameter but the workflow
didn't expose it as a workflow_dispatch input. PGO collection needs
to pass linux/amd64 only to avoid building coreclr under QEMU arm64.
commit f8cd6a5e286c0c502875f5a7eca08f821996a2c3
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 03:20:15 2026 +0000
fix(pgo): build Docker images for linux/amd64 only — skip arm64
The publish-docker action defaults to linux/amd64,linux/arm64. The
arm64 build runs under QEMU emulation making the coreclr build ~10x
slower. PGO collection only runs on x64 runners.
commit 688e55e54002d3d49f3e83a81f6beca3f016e374
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 03:16:58 2026 +0000
fix(pgo): pin lttng-build stage to linux/amd64 — skip arm build
commit 4490c07f86ae0a2294c362f156f4ffbca0f7c85e
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 02:16:08 2026 +0000
fix(pgo): use build output path directly instead of /tmp
commit 2a56a2e754574dc7e3a75ce0561d442830f33abc
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 02:13:09 2026 +0000
fix(pgo): build coreclr with LTTng — swap both libcoreclr.so and provider
The stub PAL headers approach only registered tracepoints (metadata)
but the FireEtXplat* functions in libcoreclr.so were compiled as no-ops
from the dummy provider. LTTng channels had structure but zero events.
Build the coreclr runtime subset with FEATURE_EVENTSOURCE_XPLAT=1
(~15 min) and replace both libcoreclr.so and libcoreclrtraceptprovider.so
in the SDK image. This gives us real LTTng event dispatch.
commit 204d8ff9053d34b9766c5c15be350d1c9236fb47
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 01:58:36 2026 +0000
chore(pgo): update PGO profile
commit bf5ef5c873b4f25926636e415fb8d4a14c63b93d
Merge: 2235fcd71f fedd8dee7a
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 01:41:51 2026 +0000
Merge branch 'pgo-2' of https://github.com/NethermindEth/nethermind into pgo-2
commit 2235fcd71fe97e04f45fe019af28065491e93b04
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 01:41:00 2026 +0000
fix(pgo): repack sampling.trace.zip to strip container path prefix
perfcollect inside Docker produces zip entries with full container
paths (nethermind/pgo/sampling.trace/lttngTrace/...) but dotnet-pgo's
CtfTraceEventSource expects lttngTrace/ at the zip root. Repack the
zip with the prefix stripped.
commit fedd8dee7a0b33aaf39fa6cfd7dba54b1e29210b
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 21 01:37:43 2026 +0000
chore(pgo): update PGO profile
commit 17dc8b52ec31afb215c0c667e5afb0eb5eea812b
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 01:19:11 2026 +0000
fix(pgo): use stub PAL headers instead of building full coreclr
The generated tracepoint headers include palrt.h/pal.h but only use
BOOL and ULONG typedefs. Create minimal stubs instead of building
the entire coreclr runtime. Drops build time from ~20min to ~30sec
and removes all heavy build dependencies.
commit 2fe5c7a50da73edd5c2e8958306a6b6c3da471d6
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 00:27:37 2026 +0000
fix(pgo): install full coreclr build prerequisites
build.sh clr.runtime needs build-essential, llvm, lld, ninja-build,
libicu-dev, libssl-dev, libkrb5-dev — not just cmake and clang.
commit 41ddcad28b89f4888b685df2e1a1a5c8a3c7416e
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 00:07:38 2026 +0000
fix(pgo): use runtime build system for libcoreclrtraceptprovider.so
Raw clang++ can't compile the tracepoint provider — the PAL headers
require architecture defines (HOST_AMD64, HOST_64BIT), CONTEXT struct
definitions, and transitive includes across pal/inc, native/minipal,
etc. that only the runtime's CMake build sets correctly.
Use ./build.sh clr.runtime which builds the full coreclr including
the tracepoint provider as a natural output.
commit 490387f2c06c57c19e4bf013b109ae104955a451
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Sat Mar 21 00:00:07 2026 +0000
fix(pgo): drop sparse checkout, add minipal include path
The PAL header chain pulls in minipal/guid.h from src/native/minipal
and other transitive headers across the repo. Sparse checkout can't
keep up. Use --filter=blob:none with full checkout instead — Git only
fetches blobs for checked-out files on demand.
commit 35cd9a2cffc9784007562fc83dccba7ae1f53995
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Fri Mar 20 23:54:39 2026 +0000
fix(pgo): add pal/inc to sparse checkout and include paths
palrt.h includes pal.h which is in src/coreclr/pal/inc/, not just
the rt/ subdirectory. Expand the sparse checkout and add -I flag.
commit 4f00a04125206cd213d0f115ded83aea21cf34cc
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Fri Mar 20 23:49:16 2026 +0000
chore(pgo): address review findings — signal trap, sparse checkout, ARG version
- Add SIGTERM/SIGINT trap to forward signals to backgrounded Nethermind
- Use sparse checkout + blob filter for dotnet/runtime clone (~3 dirs vs full repo)
- Extract DOTNET_RUNTIME_VERSION as ARG to single-source the version
- Remove --noinhibit-exec linker flag (suppressed link errors silently)
- Build object files in WORKDIR instead of /tmp
commit bbe12970f83c4d70b11aca50ae53b8ecb0442238
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Fri Mar 20 23:47:59 2026 +0000
chore(pgo): simplify — remove unused cmake, deduplicate cleanup blocks
- Remove cmake from lttng-build stage (not used, compiling with clang directly)
- Simplify duplicated container/network cleanup into single-line xargs pipes
commit e0bfc2ef979a497b53db95deed82f02268e232fe
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Fri Mar 20 23:42:02 2026 +0000
feat(pgo): build libcoreclrtraceptprovider.so from source for LTTng
The Microsoft .NET 10 SDK doesn't ship the LTTng tracepoint provider
(PR dotnet/runtime#113876 made it optional). Without it, the runtime's
PAL_InitializeTracing dlopen finds nothing and LTTng UST events are
never emitted — perfcollect gets perf samples but empty CLR traces.
Add a build stage that:
1. Clones dotnet/runtime v10.0.5
2. Generates LTTng tracepoint sources from ClrEtwAll.man
3. Compiles just libcoreclrtraceptprovider.so
4. Copies it next to libcoreclr.so in the runtime stage
The runtime's constructor (priority 200) dlopen's it automatically.
commit 5aea5b7990f292388e77b7858b579d3184d8f9c2
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri Mar 20 22:42:58 2026 +0000
chore(pgo): update PGO profile
commit 0d0b1a9ce2cfbc626bd762ccdb6fc25c839b5172
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Fri Mar 20 22:28:31 2026 +0000
fix(pgo): wait for LTTng session before starting Nethermind
The .NET runtime registers LTTng UST tracepoints during startup. If
Nethermind starts before perfcollect has created and activated the
LTTng session, the tracepoints are lost and the trace has no CLR
events. Wait for "Collection started" in the perfcollect log before
launching Nethermind.
commit cfabdd8b30a224b9890a634270283fc712c09ca8
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri Mar 20 22:04:14 2026 +0000
chore(pgo): update PGO profile
commit 3cdeec604062351002bdd57cd124223748203896
Author: Ben Adams <thundercat@illyriad.co.uk>
Date: Fri Mar 20 21:42:23 2026 +0000
fix(pgo): let perfcollect finish before container stop signal
Docker container.stop() sends signal then SIGKILL after 10s grace.
The old approach ran Nethermind in foreground and tried to stop
perfcollect after — leaving no time for post-processing (perf inject
+ zip) before SIGKILL.
New a…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Added tests for the
SHA256precompile making sure it does what it's supposed to.Types of changes
What types of changes does your code introduce?
Testing
Requires testing
If yes, did you write tests?