Skip to content

perf: pool VIS, OCC CMS fast path, inline ReadSet, reuse task maps#2844

Draft
pdrobnjak wants to merge 2 commits intoperf/per-index-slots-evm-poolfrom
perf/pool-vis-occ-cms-fastpath
Draft

perf: pool VIS, OCC CMS fast path, inline ReadSet, reuse task maps#2844
pdrobnjak wants to merge 2 commits intoperf/per-index-slots-evm-poolfrom
perf/pool-vis-occ-cms-fastpath

Conversation

@pdrobnjak
Copy link
Contributor

Summary

  • Pool VIS instances, add OCC CacheMultiStore fast path, inline ReadSet operations, and reuse task maps

Stack

9/13 — depends on perf/per-index-slots-evm-pool

🤖 Generated with Claude Code

@github-actions
Copy link

github-actions bot commented Feb 11, 2026

The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedFeb 11, 2026, 1:38 PM

Comment on lines +409 to +411
for k, s := range cms.stores {
stores[k] = kvHandler(k, s.(types.KVStore))
}

Check warning

Code scanning / CodeQL

Iteration over map Warning

Iteration over map may be a possible source of non-determinism
Comment on lines +412 to +416
for k, parent := range cms.storeParents {
if _, exists := stores[k]; !exists {
stores[k] = kvHandler(k, parent.(types.KVStore))
}
}

Check warning

Code scanning / CodeQL

Iteration over map Warning

Iteration over map may be a possible source of non-determinism
@pdrobnjak pdrobnjak force-pushed the perf/pool-vis-occ-cms-fastpath branch from d5ca49b to db03810 Compare February 11, 2026 13:19
@pdrobnjak pdrobnjak force-pushed the perf/per-index-slots-evm-pool branch from 97596b1 to 58ede27 Compare February 11, 2026 13:19
pdrobnjak and others added 2 commits February 11, 2026 14:37
1. Remove redundant sort.Strings in SetWriteset/SetEstimatedWriteset
2. Replace 3 global RWMutex+maps with per-tx-index txSlot array
3. Replace select{} workers with for-range + defer close
4. Pool giga EVM executors via sync.Pool within a block

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Pool VersionIndexedStore via sync.Pool to avoid per-tx per-store
  map allocations (~10 GB reduction)
- Add CacheMultiStoreForOCC to build child CMS directly with VIS
  stores, bypassing intermediate storeParents copy (~16 GB reduction)
- Change ReadSet from map[string][][]byte to map[string]ReadSetEntry
  to eliminate per-key slice allocations (~4.5 GB reduction)
- Reuse versionStoresBuf map across task incarnations (~1 GB reduction)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@pdrobnjak pdrobnjak force-pushed the perf/per-index-slots-evm-pool branch from 58ede27 to 8e31c55 Compare February 11, 2026 13:37
@pdrobnjak pdrobnjak force-pushed the perf/pool-vis-occ-cms-fastpath branch from db03810 to 5732ec9 Compare February 11, 2026 13:37
@pdrobnjak pdrobnjak marked this pull request as draft February 11, 2026 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant