aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-30 18:38:18 +0100
committereunhhu <[email protected]>2026-09-30 18:38:18 +0100
commit2168466cc9302ce95a5f3381f6c663ca4c180a28 (patch)
tree3d8f6b8504b1558b5d9b963f95ca59335ed377ca /docs/research
parentd5b3fe85d7da3131b315410e316d8abe95dab61e (diff)
downloadpure-2168466cc9302ce95a5f3381f6c663ca4c180a28.tar.gz
pure-2168466cc9302ce95a5f3381f6c663ca4c180a28.zip
Measure 07047c3 again on a quiet Pi (110)
The six pairs rerun once the Pi had been quiet for a minute, on the same binaries. Two pairs were still interfered (the first's before at an owner share of 0.54, the sixth at 0.73 on both sides); the four clean ones are -1.7%, -0.4%, +1.8% and +1.1%, CPU per transaction 43.25 to 42.9 us. The bank's queries are as fast or faster after, though the interference fell more on the before runs; the instruction counts stay the comparison to trust.
Diffstat (limited to 'docs/research')
-rw-r--r--docs/research/110-counting-instead-of-timing.md23
1 files changed, 20 insertions, 3 deletions
diff --git a/docs/research/110-counting-instead-of-timing.md b/docs/research/110-counting-instead-of-timing.md
index c84a06c..86fa5f5 100644
--- a/docs/research/110-counting-instead-of-timing.md
+++ b/docs/research/110-counting-instead-of-timing.md
@@ -86,12 +86,29 @@
`cell_at`이 따로 불리는 함수로 나타난다(0% → 2.98%). 전에는 `pure_list_get` 안에 인라인되어 있었다. 기계어로 보면 칸의 종류를
묻는 검사가 `cbz` 하나에서 네 명령이 되며 커졌다. 고친 뒤(`fcc1f67`)에는 다시 0%다.
-**고친 뒤의 여섯 쌍**(`fcc1f67-interfered`). 둘째 라운드부터 다른 세션의 빌드가 부하 평균을 4–12로 올렸다. 소유자의 코어 몫이
-0.55–0.89로 떨어졌고, 쌍마다 −29%에서 +80%까지 흔들린다. 판정에 쓰지 않는다. 지우지 않고 남긴다.
+**고친 뒤의 여섯 쌍.** 처음 잰 것(`fcc1f67-interfered`)은 둘째 라운드부터 다른 세션의 빌드가 부하 평균을 4–12로 올렸다. 소유자의
+코어 몫이 0.55–0.89로 떨어졌고, 쌍마다 −29%에서 +80%까지 흔들린다. 판정에 쓰지 않는다. 지우지 않고 남긴다.
+
+Pi가 1분 넘게 조용해졌을 때 같은 바이너리로 다시 쟀다(`fcc1f67`, 부하 평균은 0.3에서 시작해 1.4–3.9로 올랐다).
+
+| 쌍 | 초당 거래(전 → 후) | 거래당 CPU(µs) | 소유자의 코어 몫 |
+|---|---:|---:|---:|
+| 1 | 17,749 → 43,659 | 62.1 → 42.9 | 0.54 → 0.90 (전이 방해받음) |
+| 2 | 44,346 → 43,576 (−1.7%) | 43.0 → 43.6 | 0.90 → 0.90 |
+| 3 | 44,382 → 44,206 (−0.4%) | 43.1 → 42.6 | 0.91 → 0.91 |
+| 4 | 43,832 → 44,604 (+1.8%) | 43.4 → 42.7 | 0.90 → 0.91 |
+| 5 | 43,447 → 43,905 (+1.1%) | 43.7 → 43.1 | 0.90 → 0.90 |
+| 6 | 31,885 → 32,117 (+0.7%) | 47.7 → 47.1 | 0.73 → 0.73 (둘 다 방해받음) |
+
+여섯 쌍의 중앙값은 43,640 → 43,782(+0.3%)다. 깨끗한 네 쌍(2–5)의 거래당 CPU는 43.25 → 42.9 µs(−0.8%)다. 은행 질의의
+중앙값은 모두 후가 같거나 빠르다(`ranks` 6.84 → 6.80, `per_branch` 5.37 → 5.21, `large` 0.40 → 0.39, `in_credit` 1.00 →
+0.85). 다만 방해가 전의 실행에 더 걸렸다(첫 라운드의 전, `in_credit`의 전 셋). 그래서 빠른 쪽으로 기운 숫자다. 이 비교에서는
+명령 수가 더 믿을 만하다.
## 판정
-- **016의 2단계는 들어간다.** 기준을 채웠다(`fc65d66`의 여섯 쌍). 고친 뒤(`fcc1f67`)는 수의 경로에서 그보다 명령이 적다.
+- **016의 2단계는 들어간다.** 기준을 채웠다(`fc65d66`의 여섯 쌍). 고친 뒤(`fcc1f67`)는 수의 경로에서 그보다 명령이 적고,
+ 시간으로도 전과 가려지지 않는다(깨끗한 네 쌍 −1.7%에서 +1.8%).
- **남은 것**은 명령 +0.4%에서 +1.4%다. 여러 함수에 한두 명령씩 흩어져 있다. 칸의 종류 검사(`text` 표시 한 바이트에서 종류
번호의 비교로), 커진 `run`의 새 경우들이다. 사이클로는 전과 가려지지 않는다.