Skip to content

docs(bench): definitive NoEncryptMode A/B results and root-cause explanation (P3d) - #388

Merged
MPCoreDeveloper merged 1 commit into
masterfrom
docs/pk-ab-definitive
Sep 4, 2026
Merged

docs(bench): definitive NoEncryptMode A/B results and root-cause explanation (P3d)#388
MPCoreDeveloper merged 1 commit into
masterfrom
docs/pk-ab-definitive

Conversation

@MPCoreDeveloper

Copy link
Copy Markdown
Owner

Samenvatting

Stap 1 (definitieve paired cijfers) + stap 2 (root cause) afgerond.

Stap 1 — 3-rep same-window --pk-ab (tuned vs plain; alleen NoEncryptMode verschilt)

fase A tuned ops/s B plain ops/s median B/A
UPDATE 100,647 163,083 1.62x
DELETE 87,251 105,932 1.59x
INSERT 95,958 125,400 1.31x
READ 58,742 71,768 1.45x

NoEncryptMode=true levert een uniforme ~1.3-1.6x op ALLE fases, in hetzelfde venster gemeten.

Stap 2 — root cause (code-audit)

Storage heeft twee encryptielagen:

  1. per-record at-rest (EnableAtRestRecordEncryption, default uit), én
  2. file-level wrappers (Storage.ReadWrite.ReadBytes/WriteBytes, PageCache.LoadPageFromDisk,
    effectiveNoEncrypt = noEncrypt || noEncryption) die puur door NoEncryptMode worden geschakeld
    via Storage.noEncryption.

De default (NoEncryptMode=false) betaalt daardoor AES-GCM-werk op resolutie-, point- en
page-cache-reads rond de (wel degelijk werkende, raw plaintext) fixed-width fast paths — vandaar
de uniforme vertraging op alle fases.

Vervolg (pas na --pk-ab-bevestiging per stap)

  • Hot resolution/scan reads via hetzelfde raw range-pad laten lopen dat de wrappers al omzeilt, of
    de file-level wrapper een no-op maken wanneer at-rest encryptie uit staat — zonder echte
    encryptie te verzwakken wanneer EnableAtRestRecordEncryption aan staat.

Documentatie bijgewerkt (docs/benchmarks/default-config-pk.md) + changelog (P3d).

…anation (P3d)

3-rep same-window --pk-ab (tuned vs plain, isolates NoEncryptMode): UPDATE 1.62x,
DELETE 1.59x, INSERT 1.31x, READ 1.45x in favour of NoEncryptMode=true.

Code audit explains it: Storage has two encryption layers - per-record at-rest
(EnableAtRestRecordEncryption, default off) and file-level wrappers
(Storage.ReadWrite/PageCache, effectiveNoEncrypt = noEncrypt || noEncryption)
gated purely by NoEncryptMode. The default NoEncryptMode=false therefore pays
AES work on resolution/point/page-cache reads around the (still engaging) raw
contiguous fast paths. Follow-up: measured --pk-ab gate for routing hot reads
through the raw range path or no-op'ing the wrapper when at-rest encryption is off.
@sonarqubecloud

sonarqubecloud Bot commented Sep 4, 2026

Copy link
Copy Markdown

@MPCoreDeveloper
MPCoreDeveloper merged commit 635145a into master Sep 4, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant