Churn Performance KO - k-p2p-lab/kpl-v3 GitHub Wiki
Controller ์ฑ๋ฅ ์กฐ์ฌ์ ๋ฒค์น๋งํฌ
Wiki home โบ ํ๊ตญ์ด ๋ฌธ์ ยท ์์ด ์๋ฌธ
๋ฌธ์ ์๋ด ยท ์์ค ์ ์ฅ์
๊ตฌํ์ ๋ํ ๊ทผ๊ฑฐ์ด๋ฉฐ ์ฉ๋ ๋ณด์ฅ์ ์๋๋๋ค. ์ด์ ์ค์ธ ๋ฐฐํฌ๋ Agent ์ฉ๋๊ณผ ๋ชจ๋ํฐ๋ง๋ถํฐ ํ์ธํ์ญ์์ค. ์๋๋ ๊ณผ๊ฑฐ ์กฐ์ฌ ๊ธฐ๋ก์ด๋ฉฐ ์ด๋ฒ ๋ฌธ์ ์ฌ๊ตฌ์ฑ์ผ๋ก ์ธก์ ์ ๋ค์ ์ํํ ๊ฒ์ ์๋๋๋ค.
2026-09-22 ์กฐ์ฌ์์ ๋์ Peer ๊ธฐ๋ก์ 65,227๊ฐ์๊ณ , Prometheus์ ์ต๊ทผ 5๋ถ ํ๊ท ์์ Controller๋ ์ฝ 7.17๊ฐ ์ฝ์ด์ ์ด๋น ์ฝ 526MB์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๊ธฐ๋กํ์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋ฅ ์ ์ฌ์ฉ ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ๋ณ๊ฐ์ด๋ฉฐ, ์งง๊ฒ ์ฐ๊ณ ๋ฒ๋ฆฌ๋ ๊ฐ์ฒด์ ์์ฑยทํ์ ๋น์ฉ๋ ํฌํจํฉ๋๋ค.
์กฐ์ฌํ ๊ฒฝ๋ก์ ๊ตฌํ ๋ณ๊ฒฝ
/api/v1/bootstrap์ด ์ฃผ์ ๋ชฉ๋ก์ ๊ตฌํ๊ธฐ ์ํด ์ ์ฒด snapshot์ ์์ฑํ์ต๋๋ค. ์ด ๊ณผ์ ์์ ๊ณผ๊ฑฐ Peer ์ ์ฒด ๋ณต์ฌยท์ ๋ ฌ, ์คํ ์งํ ๋ฐ ํ ํด๋ก์ง ๊ณ์ฐ์ด ๋ฐ์ํ์ต๋๋ค. ์ด์ ํ์ฑ ๋ ธ๋ ์ธ๋ฑ์ค์์ ํด๋น ์คํ์ ready boot ์ฃผ์๋ง ์ฝ์ต๋๋ค.- Discovery์ ๋ถ๋ถ heartbeat์ ์ ์ ๋ ํ์ธ๋ ํ์ฑ ๋ ธ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ถ๋ถ heartbeat์์ ์๋ต๋ ๋ ธ๋๋ฅผ ์ฐพ๊ธฐ ์ํ ์ ์ฒด ์ด๋ ฅ ์ํ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
- ๋์๋ณด๋ SSE๋ ์ข ๋ฃ ๋ ธ๋๋ฅผ ์ ์ธํ ํ snapshot์ ๋ง๋ญ๋๋ค. ๊ณผ๊ฑฐ ๋ ธ๋๋ฅผ ๋ณต์ฌยท์ ๋ ฌํ ๋ค ๋ฒ๋ฆฌ๋ ๋น์ฉ์ ์ ๊ฑฐํ์ต๋๋ค. ์ ์ฒด inventory์ ์ ์ฅ ๊ฒฐ๊ณผ์๋ ์ด๋ ฅ์ ๋ณด์กดํฉ๋๋ค.
- Agentยท์คํยท์ต๊ทผ ์ด๋ฒคํธ ๋ชฉ๋ก REST API๋ ํ์ํ ๋ชฉ๋ก๋ง ๋ณต์ฌํฉ๋๋ค. Agent ๋ฑ๋ก๋ Agent ์ ๋ณด๋ง ๊ตฌ์ฑํ๊ณ Peer ์ ์ฒด snapshot์ ๋ง๋ค์ง ์์ต๋๋ค.
- ์๋ฃ๋์ด ๋ณํ์ง ์๋ ์คํ์ Prometheus ์ ํ ์ง์ฐ ํ์คํ ๊ทธ๋จ์ ์ฌ์ฌ์ฉํฉ๋๋ค. ์๋ก์ด ์ด๋ฒคํธ, ๋ฆ๊ฒ ๋์ฐฉํ ์ฆ๊ฑฐ, ์์ ๊ธฐ๊ฐ ๋ง๋ฃ๋ ๊ธฐ์กด ๊ท์น๋๋ก ์์ฝ๊ณผ ํ์คํ ๊ทธ๋จ์ ๊ฐฑ์ ํฉ๋๋ค. ์งํ ์ ์์ ์ ์ฅ ๊ฒฐ๊ณผ ๊ณ์ฐ์ ์ ์งํฉ๋๋ค.
- Agent์ Controller์ ์ด๋ฒคํธ ํฌ๊ธฐ ๊ฒ์ฆ์ ์ด๋ฒคํธ๋ณ ์ธ์ฝ๋ฉ ๊ฒฐ๊ณผ์ ๊ธธ์ด๋ฅผ ๊ฒ์ฌํ๊ณ ๋ฒ๋ฆฝ๋๋ค. ๊ฒ์ฆ ๋ชฉ์ ์ผ๋ก ์ ์ฒด ์ ์ก ๋ฐฐ์น๋ฅผ ๋ค์ ํ ๋นํ์ง ์์ต๋๋ค. JSON escaping, ์ ํํ 10MiB ๊ฒฝ๊ณ, ์๋ชป๋ ํ์ ์ด๋ฒคํธ์ ์ผ๊ด ๊ฑฐ๋ถ๋ฅผ ์ ์งํฉ๋๋ค.
์ฌํ ๋ฒค์น๋งํฌ
Intel Xeon E5-2620 v3, GOMAXPROCS=2์์ ๋์ผํ ์
๋ ฅ์ผ๋ก ์ธก์ ํ์ต๋๋ค. ์กฐํ ํ
์คํธ๋ ์ข
๋ฃ Peer 65,000๊ฐ์ ํ์ฑ Peer 100๊ฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฒคํธ ๊ฒ์ฆ ํ
์คํธ๋ 4KiB ๋ฌธ์์ด์ ๊ฐ์ง ์ด๋ฒคํธ 250๊ฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. MB์ KB๋ ๊ฐ๊ฐ 1,000,000๋ฐ์ดํธ์ 1,000๋ฐ์ดํธ์
๋๋ค.
| ๊ฒฝ๋ก | ๋ณ๊ฒฝ ์ ์๊ฐ/ํ | ๋ณ๊ฒฝ ํ ์๊ฐ/ํ | ๋ณ๊ฒฝ ์ ํ ๋น/ํ | ๋ณ๊ฒฝ ํ ํ ๋น/ํ |
|---|---|---|---|---|
| Bootstrap ์ฃผ์ ์กฐํ | 196.56ms | 0.111ms | 149.22MB | 28.86KB |
| ๋์๋ณด๋ frame ์์ฑ | 242.60ms | 1.132ms | 171.83MB | 320.91KB |
| ์ด๋ฒคํธ ํฌ๊ธฐ ๊ฒ์ฆ | 4.33ms | 1.70ms | 7.05MB | 12.26KB |
์ข ๋ฃ ์ด๋ ฅ์ด ์๋ ๊ฒฝ์ฐ์ 65,000๊ฐ์ธ ๊ฒฝ์ฐ ๋ชจ๋ ๋ณ๊ฒฝ ํ ํ์ฑ ๋ ธ๋ ์กฐํ์ ํ ๋น๋์ ๋น์ทํ์ต๋๋ค. ์ค์ ์ด์ CPU๋ ํ์ฑ Peer ์, ํ ํด๋ก์ง, ์ด๋ฒคํธ ๋ฐ์๋ฅ , Docker ๋ถํ์๋ ์ํฅ์ ๋ฐ์ต๋๋ค. ์ ์์น๋ ๋ก์ปฌ ๊ฒฝ๋ก๋ณ ๋ฒค์น๋งํฌ์ด๋ฉฐ ์ด์ ๋ฐฐํฌ ํ ์ ์ฒด ์คํ์ CPUยท์ง์ ๋ฅ ์ ๋ค์ ํ์ธํด์ผ ํฉ๋๋ค.
GOMAXPROCS=2 go test ./internal/controller ./internal/model \
-run '^$' \
-bench 'Benchmark(BootstrapChurnHistory|DashboardChurnHistory|ValidateTelemetryBatch)$' \
-benchtime=300ms -benchmem
์์ ์ ์ฉ์๋ Controller์ Agent ์ด๋ฏธ์ง ์ฌ๋น๋ยท์ฌ๋ฐฐํฌ๊ฐ ํ์ํฉ๋๋ค. ์คํ ์ด๋ ฅ ์ญ์ ๋ฅผ ์ ์ ๋ก ํ์ง ์์ต๋๋ค. ๋ฐฐํฌ ํ์๋ ๊ฐ์ ์๋๋ฆฌ์คยท๋์ผ ํ์ฑ Peer ๊ท๋ชจ์์ ๋ค์ Prometheus ์งํ์ Controller์ churn join schedule delayed ๋ก๊ทธ๋ฅผ ํจ๊ป ๋น๊ตํ์ญ์์ค.
rate(process_cpu_seconds_total{job="kpl-controller"}[5m])
rate(go_memstats_alloc_bytes_total{job="kpl-controller"}[5m])
sum by (state) (kpl_nodes)
kpl_local_telemetry_queue_events
SSE ์ ์ก๋ ๊ทผ๊ฑฐ
๊ธฐ์กด ๋์ฉ๋ trace ํฉ์ฑ ํ๊ท ํ ์คํธ๋ 20์ด๊ฐ 21ํ ๊ฐฑ์ ์์ ๊ฒฝ๋ Dashboard ์คํธ๋ฆผ์ JSON ์ ์ก๋์ 85,767,024๋ฐ์ดํธ์์ 170,144๋ฐ์ดํธ๋ก ์ค์์ต๋๋ค. ์ด๋ ํ๊ท ํ ์คํธ ์ ๋ ฅ์ ์ธก์ ๊ฐ์ด๋ฉฐ ๋ชจ๋ฐ์ผ ๋คํธ์ํฌ ์ค์ธก์ด๋ ์์ ๊ท๋ชจ์ ์ ์ก๋ ๋ณด์ฅ์ ์๋๋๋ค. ํ์ฌ ํ์์ Dashboard SSE, ์ด์ ํ์ธ์ ์ฐ๊ฒฐ ์ง๋จ์ ์ฐธ๊ณ ํ์ญ์์ค.
Agent ๋ฉ๋ชจ๋ฆฌ ๋ณด๊ด ํ๊ท ๊ฒ์ฆ
2026-09-28 ์ฝ๋ ๊ฒํ ์์ Agent ํ๋ก์ธ์ค ๊ธฐ๋ก๊ณผ run ์ฐจ๋จ ๋งต์ด Controller ํ์ธ ์ดํ์๋ ๊ณผ๊ฑฐ churn ํ์์ ๋น๋กํด ์ฆ๊ฐํ๋ ๊ฒฝ๋ก๋ฅผ ํ์ธํ์ต๋๋ค. ์ ๊ฑฐ๊ฐ ๋๋ ์คํจ ํ๋ก์ธ์ค๋ ๋ง์ง๋ง ํ ํด๋ก์งยท์ ์ ์ปฌ๋ ์ ์ ๋ณด๊ดํ์ต๋๋ค. ์ด์ ์ค๋๋ ํ์ธ ์๋ฃ ๊ธฐ๋ก๊ณผ ์บ์ ๋ฐ ์ฐจ๋จ ์ ๋ณด๋ ๋ก์ปฌ ๋์คํฌ๋ก ์ด๋ํ๊ณ , ์ ๊ฑฐ๋ ์ปจํ ์ด๋์ ํ ํด๋ก์ง๋ฅผ ํด์ ํ๋ฉฐ, ๋ฐ๋ฆฐ ์์ ์ด ์ค๋ฉด ์ปค์ง map๋ ๋ค์ ๊ตฌ์ฑํฉ๋๋ค. ํ์ธ ์๋ฃ๋ ์คํ ์ฐธ์กฐ๋ ๋น์๋๋ค. ํ์ฑ heartbeat๋ ์ด๋ ฅ ์ ์ฅ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์งํ๊ณ Controller ์ฌ์์ ์ ์ ํ๋ ํ์ด์ง๋ก ์ด๋ ฅ์ ์ฌ์ ์กํฉ๋๋ค.
ํฉ์ฑ ํ๊ท ํ ์คํธ๋ ํ์ฐจ๋ง๋ค ์ข ๋ฃ Peer 256๊ฐ๋ฅผ ์ถ๊ฐํ๊ณ Controller ํ์ธ ๋ฐ ์ด๋ ฅ ์ ๋ฆฌ๋ฅผ 12ํ ๋ฐ๋ณตํฉ๋๋ค(์ด 3,072๊ฐ). ๋งค ํ์ฐจ ์ดํ ๋ฉ๋ชจ๋ฆฌ ์ข ๋ฃ ์ด๋ ฅ์ 64๊ฐ๋ก ์ ์ง๋ฉ๋๋ค. ๋จ์ผ ํ์ผ ์ด๋ ฅ ์ ์ฅ์๋ฅผ ๋์ ํ๊ธฐ ์ ์ํํ ์ด ํ ์คํธ์์ ํ ์คํธ์ฉ GC ํ ๋ก์ปฌ Go heap์ ์ฒซ ํ์ฐจ ์ฝ 1.23MiB, ๋ง์ง๋ง ํ์ฐจ ์ฝ 1.06MiB์์ต๋๋ค. ํ ์คํธ ํ๋ก์ธ์ค๋ฅผ ํฌํจํ ๊ณผ๊ฑฐ ์ธก์ ๊ฐ์ด๋ฉฐ ํ์ฌ ์ ์ฅ์ ๊ตฌํ์ ์ธก์ ๊ฐ์ด๋ ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ํ์ด ์๋๋๋ค. ์ ๋ฌ ์คํจ, ์ปจํ ์ด๋ ์ ๊ฑฐ ์คํจ, ๋ก์ปฌ ์ ์ฅ ์คํจ/๋ณต๊ตฌ, ์ ๋ฆฌยท์ฌ์์ ๋ค ์ค๋ณต ID ์ฐจ๋จ, ์ ์ฅ๋ ์ธ๋ ์ฐจ๋จ, ์์ฑ/์ ๋ฆฌ ๊ต์ฐจ, Controller ์ฌ์์ ์ ์ ํ๋ ์ด๋ ฅ ์ฌ์ ์ก๋ ๊ฒ์ฆํฉ๋๋ค. ์ค์ Docker ๋ฐฐํฌ์์ ์ฅ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ถ์ธ๋ ์ ๋ฐ์ดํธ ํ ๊ด์ฐฐํด์ผ ํฉ๋๋ค.
go test ./internal/agent -run '^TestChurnHistoryMemoryIsBoundedAndRetiredIDsRemainFenced$' -count=1 -v
go test -race ./internal/agent ./internal/controller -run 'History|Retire|RunFenceCache|Heartbeat' -count=1
๋์คํฌ ์ ์ฒด ํ๊ท๋ ์๋ก ๋ค๋ฅธ 32 KiB ๋ณธ๋ฌธ 1,024๊ฐ(์ด 32 MiB)๋ฅผ ์๋ฝํ ๋ค spool์ ๋ค์ ์ด์ด ์ ํ๋ ์ ์ก ๊ตฌ๊ฐ๊ณผ ์ ์ฒด ์ด๋ฒคํธ ์์ยท์ ๋ฌ์ ๊ฒ์ฆํฉ๋๋ค. ๋ก์ปฌ Go 1.27.1์ ํ ์คํธ ์ ์ฉ GC ํ heap์ ์์ 1.21 MiB, ์ ์ฒด ๋์คํฌ ์ ์ฒด ์ํ 1.25 MiB, 31๊ฐ ์ด๋ฒคํธ๋ฅผ ์ ์ฌํ ์ฌ์์ ๋ณต๊ตฌ ์ํ 2.52 MiB์์ต๋๋ค. ํฉ์ฑ ํ ์คํธ ํ๋ก์ธ์ค ์์น์ด๋ฉฐ ์ด์ ์ปจํ ์ด๋ RSS๋ ๋ณด์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ํ์ ์๋๋๋ค. ๊ธฐ์กด spool ํ์ยท๋ถ๋ถ ์์ ํ์ธ ๊ธฐ๋ก ์คํจยท๋ฐ์ดํธ ํ๋ยท๋์ฝ๋ ํฌํ ๋ฐ ์์ ํ๋ก์ธ์ค ์์ด ๋์ํ๋ Engine ๋๊ธฐ 64๊ฐ ๋์ ์ทจ์๋ ๊ฒ์ฆํฉ๋๋ค.
go test ./internal/agent -run 'TestTelemetryDisk|TestTelemetryRecovery|TestTelemetryPartial|TestTelemetryDecoder|TestTelemetryByte|TestDockerEngine' -count=1 -v
Telemetry ์ฒ๋ฆฌ๋๊ณผ ํ์ผ ์์ฑ ๋ถ๋ด
์ถ๊ฐ ํ๊ท๋ ์์ ์ ์ฅ/ํ์ธ 256ํ๋ฅผ ๋ฐ๋ณตํ๋ฉด์ payload์ ACK inode๊ฐ ๊ต์ฒด๋์ง ์๊ณ ์ฌ์ฌ์ฉ๋๋์ง ํ์ธํฉ๋๋ค. payload/ACK ๋ถ๋ถ ์ฐ๊ธฐยท๊ธฐ์กด ํ์ ๋ณต๊ตฌยท์๋ณธ JSON ID์ ์์ยท๋น ํ์ฑ ํ์ผ ์ฌ์ฌ์ฉยท๊ตฌ๋ฒ์ ํ์ ๋ณดํธ๋ ๊ฒ์ฆํฉ๋๋ค. GC ํ Go heap ๊ฒ์ฌ์ ๋ํ๋์ง ์๋ ํ์ผ์์คํ ์์ฑ ๋ถ๋ด์ ์ค์ด๊ธฐ ์ํ ๊ฒ์ฆ์ ๋๋ค.
๋ก์ปฌ Intel Xeon E5-2620 v3์์ ๊ฐ์ 2,000๊ฐ ์ด๋ฒคํธ์ ๋ฐ์ดํธ ํ๋๋ฅผ ๋น๊ตํ๋ฉด ๋์ฝ๋ฉยท์ฌ์ธ์ฝ๋ฉ์ ์ฝ 63.3 ms / ํ ๋น 10.24 MB, ์ ์ฅ๋ JSON ์ง์ ๋ณต์ฌ๋ ์ฝ 7.33 ms / ํ ๋น 0.61 MB์์ต๋๋ค. ์์
๋น ๋ฒค์น๋งํฌ ํ ๋น๋ยท์๊ฐ์ด๋ฉฐ ์๋ฅ heap์ด๋ ์ด์ ์ปจํ
์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ ์๋๋๋ค. ๋ฐฐํฌ ํ ์ฅ์๊ฐ์ cgroup slab_reclaimable, anonymous, ํ๋ก์ธ์ค RSS, Go live heap์ ๋ค์ ํ์ธํด์ผ ํฉ๋๋ค. ํธ์คํธ ์ ์ฒด ์บ์ ์ญ์ ๋ ์ฃผ๊ธฐ์ ๊ฐ์ GC๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
go test ./internal/agent -run 'TestTelemetryLog|TestTelemetryRaw|TestTelemetryFormat' -count=1
go test ./internal/agent -run '^$' -bench '^BenchmarkTelemetryForwardingWindow$' -benchmem
go test ./internal/controller -run 'TestDeferredAgent|TestAmbiguousAgent|TestAdmissionRetry' -count=1
์ข ๋ฃ Peer ์ด๋ ฅ๊ณผ ์ปค๋ ์บ์
2026-09-29 Prometheus๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์กฐํํ์ ๋ telemetry ๊ฐ์ ์ดํ์๋ ์ปจํ
์ด๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฆ๊ฐํ๋ ์ถ์ธ๊ฐ ๋จ์ ์์์ต๋๋ค. ํ Agent์์ ๋์ ์ข
๋ฃ Peer๊ฐ 401๊ฐ์์ 3,133๊ฐ๋ก ๋์ด๋ ๋ cgroup slab_reclaimable์ ์ฝ 1.1MiB์์ 7.5MiB๋ก ๋์์ต๋๋ค. ์ด ๊ตฌ๊ฐ OS ์ค๋ ๋๋ 111๊ฐ๋ก ์ผ์ ํ๊ณ Go live heap์ ์ฝ 3.2โ7.8MiB ์ฌ์ด์์ ์ค๋ฅด๋ด๋ ธ์ต๋๋ค. ๊ทธ๋ณด๋ค ์์ ์ต์ด ๋ถํ ๊ตฌ๊ฐ์๋ ๋ฐํ์ ์ค๋ ๋ยท์คํ ์ฆ๊ฐ๋ ์์์ต๋๋ค. ํ์ผ์์คํ
๋ฉํ๋ฐ์ดํฐ ์ฆ๊ฐ ๊ฒฝ๋ก๋ฅผ ํ์ธํ ๊ฒ์ด๋ฉฐ ์ปจํ
์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ ์ ์ฒด์ ์์ธ์ด ํ๋๋ผ๊ณ ์ฆ๋ช
ํ ๊ฒ์ ์๋๋๋ค.
์ด์ ์ด๋ ฅ ํ์์ ์ข ๋ฃ Peer๋ง๋ค JSON ํ์ผ ํ๋๋ฅผ ์๊ตฌ ๋ณด๊ดํ์ฌ inode/dentry๊ฐ ์์๊ณ ์ ID ์กฐํ์๋ ๊ฒฝ๋ก ํ์์ด ํ์ํ์ต๋๋ค. ์ด์ ์ข ๋ฃ ๊ธฐ๋ก์ ์ธ๋ฑ์ค๊ฐ ์๋ bbolt ํ์ผ ํ๋์ ๋ณด๊ดํฉ๋๋ค. ์ต๊ทผ ๋ฉ๋ชจ๋ฆฌ ์ด๋ ฅ, ์คํ๋ณ ์ธ๋ฑ์ค, ์ธ๋ ์ฐจ๋จ, ์ ๋ฌ ํ์ธ๊ณผ ์ค๋ณต ID ๋ฐฉ์ง๋ ์ ์งํฉ๋๋ค. ๊ธฐ์กด JSON ์ด๋ ฅ์ ์์ ์ ์ปจํ ์ด๋ ์ ๋ฆฌ ์ ์ ์ด์ ํ๋ฉฐ ์ค์น๋ ๋ด์ฉ๊ณผ ๋์กฐํ ๋ค ์๋ณธ ํ์ผ์ ์ ํ๋ ์์ฉ ์ ๋ฆฌํฉ๋๋ค. ์ด์ ๋ฐ ํ์ ํธํ์ฑ์ ์ฐธ๊ณ ํ์ญ์์ค.
ํ๊ท ํ
์คํธ๋ ์คํ๋ง๋ค ์ข
๋ฃ Peer 512๊ฐ์ฉ 12ํ, ์ด 6,144๊ฐ๋ฅผ ์ ์ฅํด๋ Peer ์ด๋ ฅ ํ์ผ์ด ํ๋์ด๋ฉฐ ์คํ๋ณ ์ธ๋ฑ์ค๋ง ๋ณ๋๋ก ์๊ธฐ๋์ง ํ์ธํฉ๋๋ค. ์ด์ ยท์ฌ์์ ํ
์คํธ๋ ๊ธฐ์กด ๊ธฐ๋ก 300๊ฐ๋ฅผ ์ธ ํ์ด์ง๋ก ๋ชจ๋ ๋ณต๊ตฌํ๊ณ ์์๋๊ฑฐ๋ ๋์กฐ๊ฐ ๋ถ์ผ์นํ๋ ์๋ณธ์ ๋ณด์กดํ๋์ง ๊ฒ์ฌํฉ๋๋ค. batch ์ ์ฒด ๋กค๋ฐฑ, ๋ณต์ฌํ ์ฌ์ ์ก ํค, ๋ฐ์ดํธ ์ ํ, ์ทจ์๋ ํ์ธํฉ๋๋ค. ์ด๋ ์ ์ฅ ๋์ ๊ฒ์ฆ์ด๋ฉฐ ๋ฐฐํฌ๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์๋์ ์ธก์ ํ ๊ฒฐ๊ณผ๋ ์๋๋๋ค. Agent ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ยท๋ฐฐํฌํ ๋ค ๊ฐ์ ๋ถํ์ ํด์ง ๊ตฌ๊ฐ์์ slab_reclaimable, live heap, ์ค๋ ๋ ์์ Agent-only working set์ ๋น๊ตํด์ผ ํฉ๋๋ค. ์ด๊ธฐ 20MiB๋ก ๋ณต๊ทํ๋ค๊ณ ๋ณด์ฅํ์ง ์์ผ๋ฉฐ DB ํ์ด์ง์ ์ฌ์ฌ์ฉ ๋ฐํ์ ์์์ OSยท๋ฐํ์ ์ ์ฑ
์ ๋ฐ๋ผ ํ์ ๋๋ ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
go test ./internal/agent -run '^TestHistoryStore' -count=1 -v
GORACE=atexit_sleep_ms=0 go test -race ./internal/agent -run 'Test(History|RunFence|Retir|Registration|Heartbeat|AgentHistory|BlockedConfig|ConfigWrite)' -count=1