- Update environment profile presets and visibility analysis - Enhance small object and tiny segment v4 box implementations - Refine C7 ultra and C6 heavy allocation strategies - Add comprehensive performance metrics and design documentation ð€ Generated with Claude Code Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
17 KiB
AGENTS: ç®±çè«ïŒBox TheoryïŒèšèšã¬ã€ãã©ã€ã³
æ¬ãªããžããªã§ã¯ã倿Žã»æé©åã»ãããã°ãäžè²«ããŠãç®±çè«ïŒBox TheoryïŒãã§é²ããŸãããã¹ãŠãâç®±âã§åããå¢çã§æ¥ç¶ãããã€ã§ãæ»ããããã«ç©ã¿äžããããšã§ãè€éæ§ãæãã€ã€å€±æã³ã¹ããæå°åããŸãã
äœãå¹ãã®ãïŒå®çžŸïŒ
- â Rust/inkwell: è€éãªã©ã€ãã¿ã€ã 管ç â
- â ç®±çè«é©çš: 650è¡ â 100è¡ïŒSSAæ§ç¯ïŒ
ãªã广ãããã:
- PHI/Block/Value ããç®±ããšããŠæ±ããå¢çïŒå€æç¹ïŒã1ç®æã«éçŽ
- è€éãªäŸåé¢ä¿ãç®±ã®å¢çã§åãããšã§åäœæ€èšŒã容æ
- ã·ã³ãã«ãª Python/llvmlite ã§ 2000è¡ã§å®çµïŒéå ·ã«äŸåããâç®±âã§åå²ããŠç¹ãïŒ
è£è¶³ïŒC å®è£ æã®å©ç¹ïŒ
- C ã®å Žåã¯
static inlineã«ããç®±éã®ãªãŒããŒãããããŒãã«è¿ã¥ããããïŒã€ã³ã©ã€ã³å±éïŒ
ð¯ AIååã§ã®åèšèïŒ5ååïŒ
- ãç®±ã«ããã: èšå®ã»ç¶æ
ã»æ©æž¡ã㯠Box å
- äŸ: TLS ç¶æ ãSuperSlab adoptãremote queue ãªã©ã¯åœ¹å²ããšã«ç®±ãåé¢
- ãå¢çãäœãã: 倿ã¯å¢ç1ç®æã§
- äŸ: adopt â bindãremote â freelist çµ±åãowner ç§»è²ãªã©ã®å€æç¹ã颿°1ç®æã«éçŽ
- ãæ»ããã: ãã©ã°ã»feature ã§åæ¿å¯èœã«
#ifdef FEATURE_X/ ç°å¢å€æ° ã§æ°æ§çµè·¯ã A/B å¯èœã«ïŒååž°ãåãæ»ãã峿åïŒ
- ãèŠããåã: ãã³ã/JSON/DOT ã§å¯èŠå
- 1åã ãã®ã¯ã³ã·ã§ãããã°ãçµ±èšã«ãŠã³ã¿ã§âè¯âãæŽãïŒåžžæãã°ã¯é¿ããïŒ
- ãFail-Fastã: ãšã©ãŒé ããå³åº§ã«å€±æ
- ENOMEM/æŽåæ§éåã¯æ©æã«é²åãããïŒå®æãªãã©ãŒã«ããã¯ã§é ããªãïŒ
èŠããã«: ããã¹ãŠãç®±ã§åããŠããã€ã§ãæ»ããããã«ç©ã¿äžãããèšèšå²åŠã«ãðºð
é©çšã¬ã€ãïŒãã®ãªããžããªïŒ
-
å°ããç©ãïŒBox åïŒ
- Remote Free Queue, Partial SS Adopt, TLS Bind/Unbind ãç¬ç«ããâç®±âãšããŠå®çŸ©
- 箱㮠API ã¯æå°ã»æç¢ºïŒinit/publish/adopt/drain/bind ãªã©ïŒ
-
å¢çã¯1ç®æ
- Superslab åå©çšã®å¢çã¯
superslab_refill()ã«éçŽïŒpublish/adopt ã®æ¥ç¹ïŒ - Free ã®å¢ç㯠âsame-thread / cross-threadâ ã®å€å®1å
- Superslab åå©çšã®å¢çã¯
-
åæ¿å¯èœïŒæ»ããïŒ
- æ°çµè·¯ã¯
#ifdef/ ç°å¢å€æ°ã§ãªã³ãªãïŒA/B ãšå垰容æåïŒ - äŸ:
HAKMEM_TINY_PHASE6_ULTRA_SIMPLEãHAKMEM_DEBUG_VERBOSEãHAKMEM_TINY_*env
- æ°çµè·¯ã¯
-
èŠããåïŒæå°éïŒ
- 1åã ãã®ãããã°åºåïŒã¯ã³ã·ã§ããïŒãšçµ±èšã«ãŠã³ã¿ã§è¯ãæŽã
- äŸ: [SS OOM]ã[SS REFILL] ã®ã¯ã³ã·ã§ãããã°ãalloc/freed/bytes ã®ç¬éå€
-
Fail-Fast
- ENOMEMã»æŽåæ§éåã¯ãã¹ã¯ããé²åºããã©ãŒã«ããã¯ã¯â忢ããªãããã®æåŸã®ææ®µâã«éå®
-
éçšã«ãŒã«ïŒPool flattenïŒ
- Pool v1 flatten / Zero Mode 㯠LEGACY mid/smallmid ãã³ãå°çšã®ç®±ãC7_SAFE ãããã¡ã€ã«ã§ã¯ flatten ãè§ŠããªãïŒå®å®æ§åªå ã®ããåžžæ OFFïŒã
å®è£ èŠçŽïŒCåãã®å ·äœïŒ
static inlineãå€çšãç®±éã®åŒã³åºãããŒãã³ã¹ãå- å
±æç¶æ
ã¯
_Atomicã§æç€ºãCAS ã«ãŒãã¯å±æåïŒMPSC push/pop ã¯ãŠãŒãã£ãªãã£åïŒ - ç«¶åå¶åŸ¡ã¯ãç®±ã®å åŽãã«éã蟌ããå€åŽã¯ã·ã³ãã«ã«ä¿ã€
- 1ã€ã®ç®±ã« 1ã€ã®è²¬åïŒpublish/adoptãdrainãbindãowner ç§»è² ãªã©ïŒ
ãã§ãã¯ãªã¹ãïŒPR/ã¬ãã¥ãŒæïŒ
- ç®±ã®å¢çã¯æç¢ºãïŒå€æç¹ã1ç®æã«éçŽãããŠãããïŒ
- ãã©ã°ã§æ»ãããïŒA/B ã峿ã«å¯èœãïŒ
- å¯èŠåã®ããã¯ã¯æå°ãïŒã¯ã³ã·ã§ãã or ã«ãŠã³ã¿ïŒ
- Fail-Fast ã«ãªã£ãŠãããïŒèª€éåãã®ãã©ãŒã«ããã¯ãå ¥ããŠããªããïŒ
- C ã§ã¯
static inlineã§ãªãŒããŒããããæ¶ããŠããã
ãã® AGENTS.md ã¯ãç®±çè«ã®é©çšã»ã³ãŒãã£ã³ã°ã»ãããã°ã»A/B è©äŸ¡ã®âå ±éèšèªâã§ããæ°ããæé©åãçµè·¯ãè¶³ãåã«ããŸãç®±ãšå¢çãèšèšããŠããæãåãããŸãããã
Learning LayerïŒACE / ELO / LearnerïŒã®ç®±åããªã·ãŒ
ACE/ELO/CAP Learner ãªã©ã®ãåŠç¿ããæ©èœãããTiny ã Superslab ãšåæ§ã« Box ãšããŠæ±ããŸãã ããããã¹ãæ±ããããã€ã§ã FROZEN/OFF ã«æ»ããããã«ããããšãååã§ãã
-
åŠç¿ã¯äžå±€ã®ç®±ã«éã蟌ãã
- L0 Tiny / L1 Superslab / TLS SLL / Remote Queue 㯠åŠç¿ããžãã¯ãæããªãã
- ELO / ACE Controller / CAP Learner ã¯ãããªã·ãŒç®±ããšããŠãããããããå€ã ããæŽæ°ããã
- ããããã¹åŽã¯ãçŸåšã®ããªã·ãŒå€ããèªãã ãã«ããåŠç¿ã®æç¡ãæèããªãã
-
FROZEN / LEARN / OBSERVE ãæç¢ºã«åãã
- FROZEN: åŠç¿ OFFãåºå®ããªã·ãŒã®ã¿äœ¿çšïŒããã©ã«ãéçšïŒã
- LEARN: ããã¯ã°ã©ãŠã³ãã§ããªã·ãŒæŽæ°ãè¡ãïŒãã³ã / ç ç©¶çšïŒã
- OBSERVE: Tiny ãªã©ã®äžå±€ã®ç®±ãã芳枬ã ããããã¢ãŒãïŒåäœã¯å€ããªãïŒã
- ã¢ãŒãåãæ¿ãã¯
HAKMEM_MODE/HAKMEM_ACE_ENABLED/HAKMEM_LEARNçã® ENV ããè¡ãããã€ã§ãæ»ããããã«ããã
-
ããã¥ã¡ã³ããšèšèšã®çªå£
- åŠç¿ã¬ã€ã€å
šäœã®æ§é ãšè²¬åã¯
docs/analysis/LEARNING_LAYER_OVERVIEW.mdã«ãŸãšããã - ååŠç¿ BoxïŒELO / ACE Controller / CAP LearnerïŒã®è©³çް仿§ã A/B çµæã¯ãdocs/analysis / docs/benchmarks / docs/paper é äžã«ç®±ããšã«æŽçããã
- AGENTS.md ã§ã¯ãåŠç¿ã¯å¿ ãå¥ç®±ããããããã¹ãæ±ããªãããENV ã§åãæ»ããããšããã«ãŒã«ã ããå®ãã
- åŠç¿ã¬ã€ã€å
šäœã®æ§é ãšè²¬åã¯
Tiny åããç©ã¿æ¹ v2ã(å±€ãäžããåºãã)
äžå±€ã®ç®±ãå£ããŠããç¶æ ã§äžå±€ãç©ããšå¿ ã厩ããŸãããŸãäžããé ã«ç®±ãâå ç¢åâããŠããäžãèŒãããã培åºããŸãã
å±€ãšè²¬å
-
Box 1: Atomic Ops (æäžå±€)
- 圹å²:
stdatomic.hã«ãã CAS/Exchange ã®ç§©åºä»ãïŒAcquire/ReleaseïŒã - ã«ãŒã«: ã¡ã¢ãªé åºãç®±å ã§å®çµãããïŒå€åŽã«åŒ±ãé åºãæŒãããªãïŒã
- 圹å²:
-
Box 2: Remote Queue (äžå±€)
- 圹å²: cross-thread free ã® MPSC ã¹ã¿ãã¯ïŒpush/exchangeïŒãšã«ãŠã³ã管çã
- API:
ss_remote_push(ss, slab_idx, ptr) -> transitioned(0/1)ãss_remote_drain_to_freelist(ss, slab_idx)ãss_remote_drain_light(ss) - äžå€æ¡ä»¶ (Invariants):
- push ã¯ããŒãã® next ãæžãæãã以å€ã«å¯äœçšãæããªãïŒfreelist/owner ãžã¯è§ŠããªãïŒã
- head 㯠SuperSlab ç¯å²å ïŒFail-Fast ç¯å²æ€èšŒïŒã
remote_counts[s]㯠push/drain ã§åèª¿ã«æŽåããïŒdrain åŸã¯ 0ïŒã
- å¢ç: freelist ãžã®çµ±åã¯å¿ ã drain 颿°å ïŒ1 ç®æïŒãpublish/adopt ããã®çŽæ¥ drain ã¯çŠæ¢ã
-
Box 3: Ownership (äžå±€)
- 圹å²: slab ã®ææè
é·ç§»ïŒ
owner_tidïŒã - API:
ss_owner_try_acquire(meta, tid) -> boolïŒowner_tid==0ã®æã®ã¿ CAS ã§ååŸïŒãss_owner_release(meta, tid)ãss_owner_is_mine(meta, tid) - äžå€æ¡ä»¶:
- Remote Queue 㯠owner ã«è§ŠããªãïŒBox 2â3 ãžã®äŸµå ¥çŠæ¢ïŒã
- Acquire æååŸã®ã¿ âåäžã¹ã¬ããâ ã®é«éçµè·¯ã䜿çšããã
- å¢ç: bind æã«ã®ã¿ acquire/release ãè¡ãïŒæ¡çšå¢ç 1 ç®æïŒã
- 圹å²: slab ã®ææè
é·ç§»ïŒ
-
Box 4: Publish / Adopt (äžå±€)
- 圹å²: äŸçµŠã®æç€ºïŒpublishïŒãšæ¶è²»ïŒadoptïŒã
- API:
tiny_publish_notify(class, ss, slab)âtiny_mailbox_publish()ãtiny_mailbox_fetch()ãss_partial_publish()ãss_partial_adopt() - äžå€æ¡ä»¶:
- publish 㯠âéç¥ãšãã³ãâ ã®ã¿ïŒfreelist/remote/owner ã«è§ŠããªãïŒã
ss_partial_publish()㯠unsafe drain ãããªããå¿ èŠãªã drain ã¯æ¡çšåŽå¢çã§å®æœã- publish æã«
owner_tid=0ãèšå®ããŠãããããå®éã® acquire ã¯æ¡çšå¢çã§ã®ã¿è¡ãã
- å¢ç: adopt æåçŽåŸã«ã ã
drain â bind â owner_acquireãè¡ãïŒé åºã¯å¿ ããã® 1 ç®æïŒã
å®è£ ã¬ã€ãïŒå¢çã® 1 ãæåïŒ
- Refill çµè·¯ïŒ
superslab_refill()/tiny_refill_try_fast()ïŒã§ã®ã¿:- sticky/hot/bench/mailbox/reg ã âpeek ããŠâ åè£ãåŸã
- åè£ãèŠã€ãã£ããåœè©² slab ã§
ss_remote_drain_to_freelist()ã 1 åã ãå®è¡ïŒå¿ èŠæïŒ - freelist ãé空ã§ããã°
tiny_tls_bind_slab()âss_owner_try_acquire()ã®é ã§ç¢ºå® - 確å®åŸã«ã®ã¿ publish/overflow ã¯æ±ãïŒäžèŠãªå publish/drain ã¯ããªãïŒ
Do / DonâtïŒå£ãããããã¿ãŒã³ã®çŠæ¢ïŒ
- Donât: Remote Queue ãã publish ãçŽæ¥åŒã°ãªãæ¡ä»¶åå²ãå¢ããïŒéç¥ã®æ¿«çšïŒã
- Donât: publish åŽã§ drain / owner ããããã
- Do: Remote Queue 㯠push ãš count æŽæ°ã®ã¿ãpublish ã¯éç¥ã®ã¿ãæ¡çšå¢çã§ drain/bind/owner ãäžåºŠã«è¡ãã
ãããã°ã»ããªã¢ãŒãžé åºïŒFailâFastïŒ
- Box 2ïŒRemoteïŒåäœ: pushâdrainâfreelist ã®æŽåãã¢ãµãŒãïŒç¯å²æ€èšŒ ON,
remote_counts笊åïŒã - Box 3ïŒOwnershipïŒåäœ:
owner_tid==0ããã® acquire/release ã䞊è¡ã§é£ç¶è©Šéšã - Box 4ïŒPublish/AdoptïŒåäœ: publishâmailbox_register/fetch ã®éé»ïŒfetch ãããæã®ã¿ adopt ãèš±å¯ïŒã
- å
šäœ: adopt å¢çã§ã®ã¿
drainâbindâowner_acquireãèžãã§ããããªã³ã°ã§ç¢ºèªã
å¯èŠåãšå®å šåïŒæå°æ§æïŒ
- Tiny Ring:
TINY_RING_EVENT_REMOTE_PUSH/REMOTE_DRAIN/MAILBOX_PUBLISH/MAILBOX_FETCH/BINDãæ¡çšå¢çååŸã«èšé²ã - EnvïŒA/Bã»åæ»ãïŒ:
HAKMEM_TINY_SS_ADOPT=1/0ïŒpublish/adopt å šäœã® ON/OFFïŒHAKMEM_TINY_RF_FORCE_NOTIFY=1ïŒååéç¥ã®èŠéãæ€åºïŒHAKMEM_TINY_MAILBOX_SLOWDISC(_PERIOD)ïŒé å»¶ç»é²ã®çºèŠïŒHAKMEM_TINY_MUST_ADOPT=1ïŒmmap çŽåã®æ¡çšã²ãŒãïŒ
æå°ãã¹ãïŒç®±åäœã® smokeïŒ
- Remote Queue: åäž slab ãž N å
ss_remote_push()âss_remote_drain_to_freelist()âremote_counts==0ãš freelist é·ã®äžèŽã - Ownership: è€æ°ã¹ã¬ããã§
ss_owner_try_acquire()ã®æåã 1 æ¬ã ãã«ãªãããšãreleaseåŸã«åååŸå¯èœã - Publish/Mailbox:
tiny_mailbox_publish()âtiny_mailbox_fetch()ã®ãããã 1 åä¿èšŒãfetch_nullã®ãšãusedæ¡åŒµãæå¹ã
éçšã®å¿åŸ
- äžå±€ïŒRemote/OwnershipïŒã«ç矩ãããéã¯ãäžå±€ïŒPublish/AdoptïŒã âç¡çã«â ç©ã¿å¢ããªãã
- 倿Žã¯åžžã« A/B ã¬ãŒãä»ãã§å°å ¥ããSIGUSR2/ãªã³ã°ãšã¯ã³ã·ã§ãããã°ã§è¯ãæŽãã§ããäžã«é²ãã
å¥åº·èšºæã©ã³ãšæ³šæäºé ïŒSuperslab / madvise / Pool çšïŒ
ãã®ãªããžããªã¯ Superslab / madvise / Pool v1 flatten ãªã© OS äŸåã®çµè·¯ãå€çšããŸãã
ããã€ã®éã«ãå£ããŠããããé²ãããã«ã次ã®âå¥åº·èšºæã©ã³âãšæ³šæäºé
ãå®ã£ãŠãã ããã
â» éçºãã·ã³ãš OS ç°å¢ã¯ãåºæ¬çã«ã»ãã·ã§ã³ãéããŠåäžæ§æïŒåäžããŒããŠã§ã¢ã»åäžã«ãŒãã«èšå®ïŒãç¶æããŠéçšããŠããŸããæ§èœã®å€åã¯ãã³ãŒãå·®åãããæç€ºçã«å€æŽãã ENVãã®åœ±é¿ãšããŠæ±ãããã·ã³åŽã®æºããã§èª¬æããªãæ¹éã§ãã
-
Perf / ãã³ãèšæž¬ã®åå
- ããããã¹ïŒTiny front / SmallObject v3/v4 / Pool / SuperslabïŒã«æãå ¥ãããšãã¯ãå¿ ã 倿Žåãšå€æŽåŸã§åããããã¡ã€ã«ã®ãã³ããš perf ã 1 æ¬ãã€åã£ãŠããè©äŸ¡ããããšïŒãperf ãèŠãã«æé©åããªããïŒã
- Mixed 16â1024B ã¯
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFEãmid/smallmid ã¯HAKMEM_PROFILE=C6_HEAVY_LEGACY_POOLV1ãåºæºãšããA/B ã¯ååãã® 2 æ¬ã§è¡ãã - æ°ããç®±ã远å ããããCURRENT_TASK.md / docs/analysis é äžã« A/B ã® ops/s ãšäž»èŠ self% ãå¿ ãã¡ã¢ããŠããæ¬¡ã®ç®±ã«é²ãã
-
DSO é åã«ã¯è§ŠããªãïŒSuperslab OS Box ã®ãã§ã³ã¹ïŒ
core/box/ss_os_acquire_box.hã®ss_os_madvise_guarded()㯠libc/libm/ld.so ãªã© DSO é åã dladdr ã§æ€åºãããå³ã¹ããã ããŸãã- DSO ã«å¯Ÿãã madvise 詊è¡ã¯ ãã°æ±ãã
g_ss_madvise_disabled/ DSO-skip ãã°ãå¿ ã 1 åã ãåºãã以éã¯è§Šããªãåæã§ãã - éçº/CI ã§ã¯ïŒå¿
èŠãªãïŒ
HAKMEM_SS_MADVISE_DSO_FAILFAST=1ã䜿ã£ãŠããDSO ã«äžåºŠã§ãè§Šãããšãããå³ abortããããã§ãã¯ã©ã³ã远å ããŠãã ããã
-
madvise / vm.max_map_count çš å¥åº·èšºæã©ã³
- ç®ç: Superslab OS Box ã ENOMEM(vm.max_map_count) ã«éããŠãå®å šã«éé¿ã§ããŠããããDSO é åã誀ã£ãŠè§Šã£ãŠããªããã確èªããã
- æšå¥šã³ãã³ãïŒC7_SAFE + mid/smallmid, Superslab/madvise çµè·¯ã® smoke çšïŒ:
HAKMEM_BENCH_MIN_SIZE=257 \ HAKMEM_BENCH_MAX_SIZE=768 \ HAKMEM_TINY_HEAP_PROFILE=C7_SAFE \ HAKMEM_TINY_C7_HOT=1 \ HAKMEM_TINY_HOTHEAP_V2=0 \ HAKMEM_SMALL_HEAP_V3_ENABLED=1 \ HAKMEM_SMALL_HEAP_V3_CLASSES=0x80 \ HAKMEM_POOL_V2_ENABLED=0 \ HAKMEM_POOL_V1_FLATTEN_ENABLED=0 \ HAKMEM_SS_OS_STATS=1 \ ./bench_mid_large_mt_hakmem 5000 256 1 - ãã§ãã¯ãã€ã³ã:
- çµäºæã«
[SS_OS_STATS] ... madvise_enomem=0 madvise_disabled=0ãçæ³ïŒç°å¢æ¬¡ç¬¬ã§ ENOMEM ã¯èš±å®¹ããã ã disabled=1 ã«ãªã£ãŠããã°ä»¥éã® madvise ã¯æ¢ãŸã£ãŠããïŒã - DSO-skip ã DSO Fail-Fast ãã°ãåºãŠããªãããšïŒåºãå Žå㯠ptr åé¡/çµè·¯ãåªå çã«ããªã¢ãŒãžïŒã
- çµäºæã«
-
Pool v1 flatten ã®ãããã¡ã€ã«æ³šæ
- LEGACY ãããã¡ã€ã«å°çšã®æé©åã§ãã
HAKMEM_TINY_HEAP_PROFILE=C7_SAFE/C7_ULTRA_BENCHã®ãšã㯠ã³ãŒãåŽã§åŒ·å¶OFF ãããŸãã - flatten ãè§Šããšãã®å¥åº·èšºæã©ã³ïŒLEGACYæ³å®ïŒ:
HAKMEM_BENCH_MIN_SIZE=257 \ HAKMEM_BENCH_MAX_SIZE=768 \ HAKMEM_TINY_HEAP_PROFILE=LEGACY \ HAKMEM_POOL_V2_ENABLED=0 \ HAKMEM_POOL_V1_FLATTEN_ENABLED=1 \ HAKMEM_POOL_V1_FLATTEN_STATS=1 \ ./bench_mid_large_mt_hakmem 1 1000000 400 1 - ãã§ãã¯ãã€ã³ã:
[POOL_V1_FLAT] alloc_tls_hit/free_tls_hitãå¢ããŠããããšïŒflatten çµè·¯ãå¹ããŠããïŒãfree_fb_*ïŒpage_null / not_mine / otherïŒã¯å°æ°ã«åãŸã£ãŠããããšãå¢ããŠããã owner å€å®/lookup åŽãåªå ããªã¢ãŒãžããã
- LEGACY ãããã¡ã€ã«å°çšã®æé©åã§ãã
-
C6 㯠Phase C6-FREEZE äžïŒæšæºã§ã¯ Tiny/SmallObject/ULTRA ã«èŒããªãïŒ
- æšæºãããã¡ã€ã«ïŒMIXED_TINYV3_C7_SAFE / C6_HEAVY_LEGACY_POOLV1ïŒã¯ C6 ã mid/pool ã®éåžžã¯ã©ã¹ãšããŠæ±ããC6_HOT ã smallheap(v3/v4)/ULTRA ã¯ãã¹ãŠç ç©¶çšã® opt-in ã«éå®ã
- C6 ãè§Šããšã㯠ENV_PROFILE_PRESETS.md ã®ç ç©¶ããªã»ããïŒC6_SMALL_HEAP_V3_EXPERIMENT / C6_SMALL_HEAP_V4_EXPERIMENT ãªã©ïŒããéå§ããæšæºããªã»ããã«æ··ã蟌ãŸãªãããšã
- mid/smallmid ã®æ§èœãæ»ãããšãã¯ããŸã pool/mid åŽã® HotBox èšèšïŒSmallObject v4 ã mid çš ULTRAïŒãèããC6 å°çšã®ç¹å¥æ±ãã¯åŸæ®µãã§ãŒãºãŸã§åçµããã
-
C7 ULTRA 㯠UF-3 ã»ã°ã¡ã³ãçãæšæºïŒENV ã§ OFF ã«æ»ããïŒ
HAKMEM_TINY_C7_ULTRA_ENABLEDããã©ã«ã ONã2MiB ã»ã°ã¡ã³ãïŒ64KiB ããŒãž, mask å€å®ïŒäžã§ carve/pushãã»ã°ã¡ã³ãå€ã® ptr ã¯å¿ ãæ¢å v3 free ã«ãã©ãŒã«ããã¯ããã- ON/OFF ã®ååŸã§å¿ ãå¥åº·èšºæã©ã³ã 1 åãã€åããå·®åãåºãããŸã ULTRA åŽãçãã
- ããã軜éåïŒ
HAKMEM_TINY_C7_ULTRA_HEADER_LIGHTïŒã¯ç ç©¶ç®±ãMixed/C7-only ã® A/B ãåã£ãŠããè§Šãããšãããã©ã«ã㯠OFFã - å°æ¥çã«ãããã¬ã¹èšèšãåºãããšãã¯ããŸã C7 ULTRA ã®åã¡ãã¿ãŒã³ã small-object v4ïŒ16ã2KiBïŒã«ã³ããŒããåãµã€ãºã¯ã©ã¹ãäžã€ã® SmallObjectHotBox v4 ã«çµ±åããŠãã mid/pool åŽãè§Šãã
-
äžè¬ã«ãŒã«ïŒå£ããããŸãå¥åº·èšºæã©ã³ïŒ
- Tiny / Superslab / Pool ã«æãå ¥ããããšããŸãäžèšã®å¥åº·èšºæã©ã³ã 1 åã ãåããŠããé·å°ºãã³ãã»æ¬çª A/B ã«é²ãã§ãã ããã
- å¥åº·èšºæã©ã³ãèœã¡ãå Žå㯠æ°ããæé©åãç©ãåã« Box å¢çïŒptr åé¡ / Superslab OS Box / Pool v1 flatten BoxïŒãåªå çã«çŽããŸãã
- ãã³ããè©äŸ¡ãå§ãããšãã¯ã
docs/analysis/ENV_PROFILE_PRESETS.mdã®ããªã»ããïŒMIXED_TINYV3_C7_SAFE / C6_HEAVY_LEGACY_POOLV1 / DEBUG_TINY_FRONT_PERFïŒããå¿ ãã¹ã¿ãŒããã远å ãã ENV ã¯ã¡ã¢ãæ®ããŠãã ãããåçºã® ENV ãæ£ãããšåçŸãé£ãããªããŸãã - å¥åº·èšºæã©ã³ïŒç°¡æãã§ãã¯ïŒã¯æ¬¡ã® 2 æ¬ãå¿
ãéã:
- Tiny/Mixed:
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE ./bench_random_mixed_hakmem 1000000 400 1ïŒ35ã38M ops/s / segv/assert ãªãã§ OKïŒ - mid/smallmid C6:
HAKMEM_PROFILE=C6_HEAVY_LEGACY_POOLV1 ./bench_mid_large_mt_hakmem 1 1000000 400 1ïŒçŽ29M ops/s / segv/assert ãªãã§ OKïŒ
- Tiny/Mixed:
- ãŸãšããŠå®è¡ããå Žåã¯
scripts/verify_health_profiles.shã 1 åå©ãã° OKïŒã¹ã«ãŒãããã¯ç®å®è¡šç€ºã®ã¿ãexit code ã ãã§å€å®ïŒã