Resident Resource Results 56d KO - teamswyg/laya-tools GitHub Wiki

์ƒ์ฃผ Go ํžŒํŠธ ๋„๊ตฌ์˜ ์‹ค์ œ ์™•๋ณต ๋น„์šฉ: 56d ๊ฒฐ๊ณผ

English ยท ์›๋ณธ ๊ฒฐ๊ณผ ยท ์š”์•ฝ ์ˆ˜์น˜ ยท ์‚ฌ์ „ ์„ค๊ณ„ ยท ์‹คํ–‰ ๊ณ„ํš ยท ๋ด‰์ธ ๊ธฐ๋ก

๋ด‰์ธํ•œ 24๊ฐœ ์‹คํ–‰ ํ–‰์ด ๋ชจ๋‘ ์™„๋ฃŒ๋๋‹ค. ์žฌ์‹œ๋„ ์—†์ด 25,080๊ฐœ์˜ ๋ฐ˜๋ณต ์š”์ฒญ์„ ๊ฒ€์ฆํ–ˆ๊ณ , ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ lifetime peak RSS๋Š” 9.21875โ€“10.515625MiB์˜€๋‹ค. ํ•œ ๋ฒˆ ์ผœ ๋‘” ์ž‘์€ Go ๋„๊ตฌ์— JSON ํ•œ ์ค„์„ ๋ณด๋‚ด๊ณ  ๊ฒ€์‚ฌ ์ˆœ์„œ ํ•œ ์ค„์„ ๋ฐ›๋Š” ์‹ค์ œ ๋น„์šฉ์„ ์ธก์ •ํ–ˆ๋‹ค. Laya ๋ชจ๋ธ ์ถ”๋ก ยทํ•™์Šตยท์˜๋ฏธ ์ •ํ™•๋„ยท์‹ค์ œ LLM ์‚ฌ์šฉ๋Ÿ‰ ์ ˆ๊ฐ์„ ์ธก์ •ํ•œ ๊ฒฐ๊ณผ๋Š” ์•„๋‹ˆ๋‹ค. ์ด ๋กœ์ปฌ ๊ธฐ๋ก ์ž‘์„ฑ์€ CI ์‹คํ–‰์— ์•ž์„ ๋‹ค. ์‹ค์ œ CI ์™„๋ฃŒ ๋งํฌ์™€ ์ž๋™ ๋ณ‘ํ•ฉ ํ™•์ธ์€ ๊ฒ€์ฆ ๋’ค ์ด์Šˆ19์˜ ๋ณ„๋„ ์™„๋ฃŒ ๋Œ“๊ธ€์— ๊ธฐ๋กํ•œ๋‹ค.

์‚ฌ๋žŒ๊ณผ ์—์ด์ „ํŠธ๊ฐ€ ์ด ๊ฒฐ๊ณผ๋ฅผ ์ฝ๋Š” ๋ฐฉ๋ฒ•

๊ฐ€์ƒ ์‚ฌ์šฉ์ž๋Š” ์ž‘์€ ํžŒํŠธ ๋„๊ตฌ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜๋Š” ์—์ด์ „ํŠธ๋‹ค. ์š”์ฒญ๊ณผ ํ›„๋ณด ์„ค๋ช… 3๊ฐœ๋ฅผ ๋ณด๋‚ด๋ฉด riido-shortclaim --stream์ด ๋ชจ๋‘ ๋‚จ๊ฒจ ๋‘” ์ฑ„ ๊ฒ€์‚ฌ ์ˆœ์„œ๋ฅผ ์ œ์•ˆํ•œ๋‹ค. ์™ธ๋ถ€์˜ ๋…๋ฆฝ ๊ฒ€์‚ฌ๊ฐ€ ์‹ค์ œ ์˜๋ฏธ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋ฉฐ, ์‘๋‹ต์€ ๊ณ„์† unverified_heuristic์ด๋‹ค. ์ด๋ฒˆ ์‹คํ—˜์€ ์ด๋Ÿฌํ•œ ํ˜ธ์ถœ ๊ฒฝ๋กœ์˜ ๋น„์šฉ๊ณผ ์ž…๋ ฅยท์ถœ๋ ฅ ๋Œ€์‘์„ ํ™•์ธํ–ˆ๋‹ค.

์‹คํ–‰ํ•œ ๊ฒƒ์€ fixed_order, BM25, ๋‹จ์–ดยท์—ฐ์† ๋‹จ์–ด ์ผ์น˜, ์ข์€ ๊ทœ์น™์˜ ๋ฌดํ•™์Šต Go ๊ธฐ์ค€์„ ์ด๋‹ค. ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ค€๋น„ยท๊ฒ€์ฆยท์ˆœ์œ„ยทdigestยท์ถœ๋ ฅ ์ง๋ ฌํ™”๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ cache hit๋Š” 0์ด๋‹ค. GPUยท์ธ์ฝ”๋”ยทLaya ๊ฐ€์ค‘์น˜ยท๋ชจ๋ธ ํ˜ธ์ถœ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ โ€œLaya ๋ชจ๋ธ ์ „์ฒด๊ฐ€ ์“ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌโ€๋กœ ์ฝ์œผ๋ฉด ์•ˆ ๋œ๋‹ค. Pool์˜ 48๊ฐœ ์ž…๋ ฅ์€ ๋ชจ๋‘ ์ข์€ ๊ทœ์น™ ๋ฌธ๋ฒ• ๋ฐ–์ด์–ด์„œ narrow_rule๋„ ์ „๋ถ€ unsupported_rule_request๋ฅผ ๊ธฐ๋กํ•˜๋ฉฐ BM25๋กœ fallbackํ–ˆ๋‹ค. ์„ฑ๊ณตํ•œ ์ข์€ ๋ฌธ๋ฒ• ๊ฒฝ๋กœ์˜ ์„ฑ๋Šฅ์€ ์ด๋ฒˆ ์ž๋ฃŒ์—์„œ ๊ด€์ธกํ•˜์ง€ ์•Š์•˜๋‹ค.

๋ฐ˜๋ณต ๊ด€์ธก๊ณผ ๋…๋ฆฝ ์ž๋ฃŒ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค

๊ธฐ์กด ๊ณต๊ฐœ ์›๋ณธ 72๊ฐœ์—์„œ ํ›„๋ณด๊ฐ€ ์›๋ž˜ 3๊ฐœ์ธ 48๊ฐœ๋งŒ ์„ ํƒํ–ˆ๋‹ค. ๋‚˜๋จธ์ง€ 24๊ฐœ๋Š” ์›๋ž˜ ํ›„๋ณด ์ˆ˜๊ฐ€ 2๊ฐœ ๋˜๋Š” 4๊ฐœ๋ผ ์ œ์™ธํ–ˆ์œผ๋ฉฐ, ํ›„๋ณด๋ฅผ ์ž˜๋ผ 3๊ฐœ๋กœ ๋งž์ถ”์ง€ ์•Š์•˜๋‹ค. ์ •๊ทœํ™”๋œ ํ…์ŠคํŠธ ํŠน์ง•์˜ ์ค‘๋ณต์€ 0๊ฐœ์—ฌ์„œ pool ํฌ๊ธฐ๋„ 48๊ฐœ๋‹ค. ์›๋ž˜ ๋ถ€๋ชจยทํ›„๋ณด ID์™€ ์ˆœ์„œ๋Š” corpus์˜ 72๊ฐœ origin link์— ๋ณด์กด๋œ๋‹ค. ID์™€ ์ถœ์ฒ˜๋Š” ์ˆœ์œ„ ํŠน์ง•์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

์›์ฒœ ์›๋ž˜ ๋ถ€๋ชจ ์„ ํƒ ์ œ์™ธ
๊ธฐ์กด probes-56 48 24 24: 2ํ›„๋ณด 12๊ฐœ, 4ํ›„๋ณด 12๊ฐœ
Typed probes-56b 24 24 0
ํ•ฉ๊ณ„ 72 48 24

same์€ ์ฒซ payload ํ•˜๋‚˜๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ , distinct๋Š” 48๊ฐœ pool์„ ์›๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ์ˆœํ™˜ํ•œ๋‹ค. ๊ฐ ๊ธฐ์ค€์„ ยทworkload๋งˆ๋‹ค ์ƒˆ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ 3ํšŒ ์‹œ์ž‘ํ•ด 4 ร— 2 ร— 3 = 24ํ–‰์„ ์‹คํ–‰ํ–ˆ๋‹ค. ํ–‰๋‹น ์ฒซ ์‘๋‹ต 1๊ฐœ + warmup 20๊ฐœ + timed 1,024๊ฐœ = 1,045๊ฐœ๋‹ค. ์ „์ฒด ์ฒซ ์‘๋‹ต์€ 24๊ฐœ, warmup์€ 480๊ฐœ, timed๋Š” 24,576๊ฐœ๋‹ค.

25,080ํšŒ์™€ 24,576ํšŒ๋Š” ๋ฐ˜๋ณต ์ฒ˜๋ฆฌยทํƒ€์ด๋ฐ ๊ด€์ธก ํšŸ์ˆ˜๋‹ค. ์ƒˆ๋กœ์šด ๋…๋ฆฝ ์š”์ฒญ์ด๋‚˜ ํ•™์Šตยท์ตœ์ข… ํ‰๊ฐ€ ํ‘œ๋ณธ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋‹จ๊ณ„์˜ ์ƒˆ ๋…๋ฆฝ ์š”์ฒญ, fit, ๋ชจ๋ธ ํ˜ธ์ถœ, ์ƒˆ ๋ชจ๋ธ, protected final ์ฝ๊ธฐ๋Š” ๋ชจ๋‘ 0์ด๋‹ค. ๋„๋ฉ”์ธ๋ณ„ ์„œ๋กœ ๋‹ค๋ฅธ ๋ณดํ˜ธ๋œ ์ตœ์ข… ์š”์ฒญ ์ตœ์†Œ 2,400๊ฐœ ๋ชฉํ‘œ๋Š” ์ถฉ์กฑํ•˜์ง€ ์•Š์•˜๋‹ค.

์‹ค์ œ ์‹œ๊ฐ„ยทCPUยท๋ฉ”๋ชจ๋ฆฌ

Apple M4 Proยท24GiBยทmacOS 26.6.2ยทdarwin/arm64ยทGo 1.27.1์—์„œ native CPU ๊ฒฝ๋กœ๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค. CGO=0ยทtrimpath ๋นŒ๋“œ์ด๋ฉฐ, controller์™€ child์˜ GOMAXPROCS=1 ๋ฐ Go heap 256MiB soft limit์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•œ ๋ฒˆ์— child 1๊ฐœยท์š”์ฒญ 1๊ฐœ๋งŒ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ด๋Š” OS ์Šค๋ ˆ๋“œ ์ˆ˜ยทCPU affinityยท์ „์ฒด RSS์˜ hard cap์„ ๋ณด์žฅํ•˜๋Š” ์„ค์ •์€ ์•„๋‹ˆ๋‹ค.

์•„๋ž˜ p95๋Š” ๊ฐ ํ–‰์˜ timed 1,024๊ฐœ wire RTT์—์„œ ๊ตฌํ•œ ๋’ค, ๊ฐ™์€ ์กฐ๊ฑด์˜ ์ƒˆ ํ”„๋กœ์„ธ์Šค 3ํ–‰ ์‚ฌ์ด ์ตœ์†Ÿ๊ฐ’โ€“์ตœ๋Œ“๊ฐ’์„ ํ‘œ์‹œํ–ˆ๋‹ค. ํ•ฉ์นœ ํ‘œ๋ณธ์˜ p95๋‚˜ ์‹ ๋ขฐ๊ตฌ๊ฐ„์ด ์•„๋‹ˆ๋‹ค. Wire RTT๋Š” ์š”์ฒญ ์“ฐ๊ธฐ ์‹œ์ž‘๋ถ€ํ„ฐ ์™„์ „ํ•œ ์‘๋‹ต ์ค„ ์ˆ˜์‹ ๊นŒ์ง€์ด๋ฉฐ, ์ดํ›„ controller ๊ฒ€์ฆ ์™„๋ฃŒ๊นŒ์ง€์˜ ์‹œ๊ฐ„์€ ๋”ฐ๋กœ ๊ธฐ๋กํ•œ๋‹ค. RSS์™€ CPU/request ์—ด์€ ํ‘œ์‹œ๋ฅผ ์œ„ํ•ด ๋ฐ˜์˜ฌ๋ฆผํ–ˆ๋‹ค. ์ •ํ™•ํ•œ ๊ฐ’์€ ์›๋ณธ JSON์— ์žˆ๋‹ค.

๊ธฐ์ค€์„  Workload 3ํ–‰์˜ wire RTT p95 ๋ฒ”์œ„, ยตs Child peak RSS ๋ฒ”์œ„, MiB Child lifetime CPU/request ๋ฒ”์œ„, ยตs
fixed_order same 21.875โ€“37.292 9.219โ€“9.281 15.307โ€“32.073
fixed_order distinct 39.875โ€“43.375 10.094โ€“10.391 23.844โ€“24.723
bm25 same 24.125โ€“27.334 9.250โ€“9.469 17.424โ€“17.767
bm25 distinct 45.833โ€“47.375 10.109โ€“10.266 27.104โ€“27.762
lexical_ordered same 23.208โ€“24.708 9.281โ€“9.438 17.414โ€“17.559
lexical_ordered distinct 48.709โ€“50.333 10.031โ€“10.359 28.340โ€“28.801
narrow_rule same 23.916โ€“25.666 9.250โ€“9.453 17.111โ€“17.605
narrow_rule distinct 46.834โ€“49.125 10.219โ€“10.516 27.447โ€“27.847

Child์˜ user+system CPU ํ•ฉ๊ณ„๋Š” 24๊ฐœ lifetime์„ ํ•ฉ์ณ 0.568013์ดˆ๋‹ค. ํ–‰๋ณ„ CPU/request๋Š” ์ฒซ ์‘๋‹ตยทwarmup์„ ํฌํ•จํ•œ 1,045๊ฐœ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด๋ฉฐ, timed ๊ตฌ๊ฐ„๋งŒ์˜ CPU๋‚˜ ์ˆœ์ˆ˜ ์ถ”๋ก  ์‹œ๊ฐ„์€ ์•„๋‹ˆ๋‹ค. ๋ชจ๋“  child์˜ RSS ์›๋ž˜ ๋‹จ์œ„๋Š” Darwin์˜ bytes์ด๊ณ , ๋ณ€ํ™˜ ํ›„๋„ ๊ฐ™์€ ๊ฐ’์ด๋‹ค. Child ์ „์ฒด ๋ฒ”์œ„๋Š” 9,666,560โ€“11,026,432 bytes๋‹ค.

Controller๋Š” ๋ณ„๋„๋กœ user 0.2652์ดˆ + system 0.240851์ดˆ = 0.506051์ดˆ์˜ replay CPU๋ฅผ ์ผ๊ณ , lifetime peak RSS๋Š” 34,717,696 bytes = 33.109375MiB์˜€๋‹ค. Controller RSS๋Š” ์ค€๋น„๋ฅผ ํฌํ•จํ•œ ์ „์ฒด lifetime peak์ด๋ฉฐ ํ–‰๋ณ„ RAM์ด๋‚˜ replay ์ค‘ ์ฆ๊ฐ€๋Ÿ‰์ด ์•„๋‹ˆ๋‹ค. Child์™€ controller์˜ ์„œ๋กœ ๋‹ค๋ฅธ peak๋ฅผ ๋”ํ•ด ๋™์‹œ์— ์“ด ์ด peak๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค. ์ „์ฒด replay wall์€ 1.482910833์ดˆ์˜€๋‹ค. ์ด wall/CPU์—๋Š” ํ–‰๋ณ„ ๊ธฐ๋Œ€ stream ํ•ด์‹œ ์ค€๋น„์™€ ์ •๋ฆฌ๊ฐ€ ํฌํ•จ๋˜๋ฉฐ, child ์‹œ์ž‘ ์ „์˜ ํ–‰๋ณ„ ํ•ด์‹œ ์ค€๋น„๋Š” 204.166โ€“427.041ยตs๋กœ ๋”ฐ๋กœ ๊ธฐ๋ก๋๋‹ค.

Timed controller ๋น„์šฉ์˜ ํ–‰๋ณ„ p95 ๋ฒ”์œ„๋Š” ์ˆ˜์‹ ๋ถ€ํ„ฐ ๊ฒ€์ฆ ์™„๋ฃŒ๊นŒ์ง€ 8.083โ€“17.458ยตs, ์‹ค์ œ ๊ฒ€์ฆ ์ž‘์—… 7.125โ€“15.750ยตs, ์ˆ˜์‹  ํ›„ ๊ฒ€์ฆ ์‹œ์ž‘๊นŒ์ง€์˜ ์ „๋‹ฌ ๊ฐ„๊ฒฉ 1.042โ€“2.125ยตs์˜€๋‹ค. ์“ฐ๊ธฐ ๋Œ€๊ธฐ์˜ p95 ๋ฒ”์œ„๋Š” 1.375โ€“2.333ยตs๋‹ค. ์„œ๋กœ ๊ฒน์น˜๋Š” ์‹œ๊ฐ„์ด๋‚˜ ๋‹ค๋ฅธ ํ•ญ๋ชฉ์˜ p95๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์„œ ์ˆœ์ˆ˜ application ์‹œ๊ฐ„์„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ์ˆœ์ˆ˜ startupยทchild ๋‚ด๋ถ€ ์ฒ˜๋ฆฌยทpipe ๋น„์šฉ์€ unobserved๋‹ค.

์ฒซ ํ–‰ fixed_order/same/repeat 1์˜ ์‹œ์ž‘ ํ˜ธ์ถœ๋ถ€ํ„ฐ ์ฒซ ์‘๋‹ต๊นŒ์ง€๋Š” 577.13ms์˜€๋‹ค. ๋‚˜๋จธ์ง€ 23ํ–‰์€ 2.784792โ€“3.267459ms๋‹ค. ์ฒซ ๊ฐ’์„ ๋ฒ„๋ฆฌ์ง€ ์•Š์•˜์œผ๋ฉฐ ์›์ธ์€ ๋ฏธํ™•์ธ์ด๋‹ค. ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ OS cache๊นŒ์ง€ ๋น„์šด cold๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š์•˜๊ณ  cache flush๋„ ํ•˜์ง€ ์•Š์•˜๋‹ค.

๊ฒฐ๊ณผ๊ฐ€ ์˜จ์ „ํžˆ ์™„๋ฃŒ๋๋Š”๊ฐ€

24ํ–‰ ๋ชจ๋‘ planned/attempted/fully-written/received/validated๊ฐ€ ๋‹จ๊ณ„๋ณ„ ์˜ˆ์ • ์ˆ˜์™€ ๊ฐ™์•˜๋‹ค. Failedยทincompleteยทnot-attemptedยทstderr bytes๋Š” ๋ชจ๋‘ 0์ด๋‹ค. ๋ชจ๋“  ํ–‰์—์„œ ์ž…๋ ฅยท์ถœ๋ ฅ ์‹ค์ œ stream SHA๊ฐ€ ๊ธฐ๋Œ€ SHA์™€ ๊ฐ™๊ณ , EOFยทstdout/stderr reader joinยทwatcher joinยทcleanup completeยทreaped๋ฅผ ํ™•์ธํ–ˆ๋‹ค. Wait ํ˜ธ์ถœ์€ ํ–‰๋‹น ์ •ํ™•ํžˆ 1ํšŒ์˜€์œผ๋ฉฐ ์ข…๋ฃŒ ์ฝ”๋“œ๋Š” ๋ชจ๋‘ 0์ด์—ˆ๋‹ค. ์ทจ์†Œยท์‹œ๊ฐ„ ์ดˆ๊ณผยท์ •๋ฆฌ ์˜ค๋ฅ˜๋„ ๊ธฐ๋ก๋˜์ง€ ์•Š์•˜๋‹ค.

์‹œ์ž‘ ํ˜ธ์ถœ๋ถ€ํ„ฐ ์ •๋ฆฌ๊นŒ์ง€ ๊ธฐ๋กํ•œ ํ–‰ wall์€ 29.215084โ€“617.744ms๋กœ child 15์ดˆ ์˜ˆ์‚ฐ ์•ˆ์— ์žˆ์—ˆ๊ณ , ์ „์ฒด replay๋Š” 60์ดˆ ์•ˆ์— ์™„๋ฃŒ๋๋‹ค. ์ •๋ฆฌ ์‹œ๊ฐ„์€ 3.250โ€“6.708ยตs๋กœ ๊ณต์œ  1,000ms ์ •๋ฆฌ ์˜ˆ์‚ฐ ์•ˆ์ด์—ˆ๋‹ค. ์ž๋™ ์žฌ์‹œ๋„๋Š” 0ํšŒ๋‹ค. ๊ณต๊ฐœ ์›๋ณธ ๊ฒฐ๊ณผ๋Š” 81,471 bytes, SHA-256์€ d24a50cf71968bb0336f58812ce02a647facff28cb40595e6cebbcd9587c4eaf๋‹ค. JSON ๊ฒฐ๊ณผ ํฌ๊ธฐ๋Š” 8MiB ๊ณต๊ฐœ ์˜ˆ์‚ฐ ์•ˆ์ด๋ฉฐ, ๋ฐ˜๋ณต ์ „์†กํ•œ ์ „์ฒด wire bytes์˜ ํ•ฉ๊ณ„์™€๋Š” ๋‹ค๋ฅธ ํ•ญ๋ชฉ์ด๋‹ค.

๊ธฐ๋Œ€ protocol ์‘๋‹ต์€ ์ค€๋น„ ๋‹จ๊ณ„์—์„œ ๊ฐ™์€ ๊ณต๊ฐœ ๊ตฌํ˜„์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด์‹œ ์ผ์น˜์™€ ์™„๋ฃŒ ์ƒํƒœ๋Š” ์ „๋‹ฌยท๊ฒฐ์ •์  ์ถœ๋ ฅ์˜ ์ •ํ•ฉ์„ฑ์„ ๋ณด์—ฌ ์ฃผ๋ฉฐ, ๋…๋ฆฝ ์˜๋ฏธ ์ •๋‹ต์ด๋‚˜ ์˜ฌ๋ฐ”๋ฅธ ๊ฒ€์‚ฌ ์ˆœ์„œ๋ฅผ ์ธ์ฆํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ด‰์ธ๊ณผ ํ•ด์„์˜ ํ•œ๊ณ„

์ค€๋น„ ์†Œ์Šค๋Š” 60b0350, ์ž…๋ ฅยท๋ฐ”์ด๋„ˆ๋ฆฌยท24ํ–‰ ๊ณ„ํš์„ ๊ณต์‹ ์‹คํ–‰ ์ „์— ๊ณ ์ •ํ•œ matrix commit์€ 891e52d์ด๋‹ค. Freeze์—๋Š” ์‹คํ–‰ ๋‹น์‹œ ์‚ฌ์ „ ํ…Œ์ŠคํŠธ ํŒŒ์ผ 5๊ฐœ๋ฅผ ํฌํ•จํ•œ ๊ตฌํ˜„ pin 31๊ฐœ, ๋‘ ๋ฐ”์ด๋„ˆ๋ฆฌ SHA์™€ build recipeยทcorpusยทplan SHA๊ฐ€ ์žˆ๋‹ค. Git blob 31๊ฐœ ํ™•์ธ์€ ๋ณ„๋„ ๋ด‰์ธ ์ž‘์—…์—์„œ ์ˆ˜ํ–‰ํ–ˆ๊ณ  CLI๋Š” commit ํ˜•์‹๋งŒ ํ™•์ธํ•œ๋‹ค. ๊ฒฐ๊ณผ ์ˆ˜์ง‘ ํ›„ ํšŒ๊ท€ guard๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ, ์ด๋ฅผ ๊ณต์‹ ์‹คํ–‰ ์ „์— ์กด์žฌํ•œ ๊ฒ€์‚ฌ๋‚˜ ๋ด‰์ธ ์›์ฒœ์œผ๋กœ ์†Œ๊ธ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. CI ์™„๋ฃŒ์™€ ์ž๋™ ๋ณ‘ํ•ฉ์€ ์ด์Šˆ19์— ๋ณ„๋„ ๊ธฐ๋กํ•œ๋‹ค.

์ž…๋ ฅ ํฌ๊ธฐ๋„ ๋‘ workload์—์„œ ๊ฐ™์ง€ ์•Š๋‹ค. same์˜ LF ํฌํ•จ ์ „์†ก ์ค„์€ 385 bytes๋‹ค. ์ „์ฒด pool์€ 385โ€“1,165 bytes, ํ‰๊ท  675.6875 bytes์ด๋ฉฐ ์š”์ฒญ ์ •๊ทœํ™” ๋‹จ์–ด ์ˆ˜๋Š” 4โ€“32๊ฐœ, ํ›„๋ณด๋Š” 4โ€“32๊ฐœ๋‹ค. ์ฒซ ์š”์ฒญ์€ 8๋‹จ์–ด์ด๊ณ  ํ›„๋ณด๋Š” 5/7/8๋‹จ์–ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ same/distinct ์ฐจ์ด๋ฅผ ์ž…๋ ฅ ์žฌ์‚ฌ์šฉ์ด๋‚˜ cache๋งŒ์˜ ์ธ๊ณผ ํšจ๊ณผ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์›๋ฌธ ์š”์ฒญ์€ 36โ€“236 bytes, ํ›„๋ณด๋Š” 28โ€“252 bytes๋กœ, ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  512-byte ์ž…๋ ฅยท์–ธ์–ดยท์ตœ์•… ์กฐ๊ฑด์„ ์ธก์ •ํ•œ ๊ฒƒ๋„ ์•„๋‹ˆ๋‹ค. ์ •๊ทœํ™”๊ฐ€ ๊ธฐํ˜ธ๋ฅผ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ feature SHA๋Š” ๋ฏธ๋ž˜ ์˜๋ฏธยท๊ทœ์น™ยท๋ชจ๋ธ cache key์˜ ์•ˆ์ „์„ฑ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.

56a์˜ ์ฒซ cold 370.932333ms์™€ ๋ณ„๋„ profile์˜ runtime.kevent flat **83.02%**๋Š” ์›์ธยท๊ท€์† ๋ฏธํ•ด๊ฒฐ ์ƒํƒœ๋กœ ๋ณด์กดํ•œ๋‹ค. 56a๋Š” 8ํ›„๋ณด์™€ io.Discard/๋‹จ๊ณ„ benchmark, 56d๋Š” ์„ ํƒํ•œ 3ํ›„๋ณด์™€ ์‹ค์ œ ์ƒ์ฃผ pipe ์™•๋ณต์ด๋ฏ€๋กœ ์ง์ ‘ ์†๋„ ํ–ฅ์ƒ๋ฅ ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋ฒˆ ์‹คํ—˜์€ cacheยทSIMDยทSoAยทlock ๋ณ€๊ฒฝ์˜ ์„ฑ๊ณผ๋‚˜ LLM ์ ˆ๊ฐ์„ ์ž…์ฆํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹ค์Œ ์˜๋ฏธยทํšจ์šฉ ๊ฒ€ํ† ๋Š” 56c ๊ณ„ํš์—์„œ ๋ถ„๋ฆฌํ•ด ์ง„ํ–‰ํ•œ๋‹ค. Open-loop ๋™์‹œ์„ฑยทmatched-byte echo ๋Œ€์กฐยทready ์‹ ํ˜ธยทcache์™€ ๋ฌดํšจํ™”๋Š” ํ›„์† ๋ณ„๋„ ์„ค๊ณ„ ๋Œ€์ƒ์ด๋‹ค. ์ตœ์ข… ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ์ง€ ์•Š๋Š” ์ž‘์€ ํžŒํŠธ์˜ ํ˜ธ์ถœ ๋น„์šฉ์„ ํ™•์ธํ–ˆ๋‹ค๋Š” ๋ฒ”์œ„๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ์˜๋ฏธ ์ •ํ™•๋„ยท์ „์ฒด LLM ์‚ฌ์šฉ๋Ÿ‰ยท์ €์‚ฌ์–‘ ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜/์‹คํ–‰ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ์ž ๋ณ„๋„์˜ ์ฆ๊ฑฐ๋ฅผ ์š”๊ตฌํ•œ๋‹ค.