Repository navigation
v0.0.170
rePIU v0.0.170
이전 릴리스 v0.0.169 이후의 변경입니다. Linux 성능 축을 **"재진입마다 트랩 하나"**까지
좁혔습니다. 아직 고치지 않았습니다.
좁혀진 사슬
| Windows | Linux | |
|---|---|---|
| 프레임당 재진입 | 160.6 | ~154 (0.90배) |
| 재진입당 breakpoint | 0.0432 | 1.010 |
재진입 비율은 Linux가 오히려 적습니다. 다른 것은 나올 때마다 트랩을 내는가이고, 이 23배가
앞서 잰 breakpoint 24.2배와 맞습니다. Windows가 트랩을 피하는 경로는 Glide direct
dispatch(재진입의 95.1%)이고, Linux에서도 87%가 그 경로로 갑니다 — 그런데 성공해도 트랩이
붙습니다.
실행 중 계측 네 줄
REPIU_EXECUTION_TIME_PROFILE=1과 REPIU_LIVE_PROFILE_INTERVAL_MS로 켭니다.
[repiu-live-profile] veh/glide/port-io/dos/unaccounted 몫
[repiu-live-veh] 배달 수·배달당 cycle·커널 gap·클래스 셋
[repiu-live-aot] 캐시 entry/boundary/재진입, 경계 사유 다섯
[repiu-live-gdd] direct dispatch patched/resolved/relinked/entry/success
Linux는 로더 요약에 닿지 못하므로 이 줄들이 아니면 아무것도 읽을 수 없습니다.
알려진 것
- 성능은 아직 고치지 않았습니다.
- 다음 질문: Windows에서 그 INT3이 왜 다시 밟히지 않는가.
- 이 버전을 만드는 동안 추정이 네 번 틀렸습니다. 모두 카운터의 이름으로 뜻을 짐작하고
증가 지점을 읽지 않은 경우였고, 표로 frontier에 남겼습니다.
rePIU v0.0.170
Changes since v0.0.169. The Linux performance axis is narrowed to one trap per cache
reentry. Nothing is fixed yet.
The chain, narrowed
| Windows | Linux | |
|---|---|---|
| Reentries a frame | 160.6 | ~154 (0.90x) |
| Breakpoints per reentry | 0.0432 | 1.010 |
Linux reenters less often. What differs is whether leaving costs a trap, and that 23x matches
the 24.2x breakpoint excess measured earlier. The path Windows uses to avoid it is Glide direct
dispatch, at 95.1% of its reentries, and 87% of Linux's reentries take it too -- yet a success
still costs a trap.
Four lines of live instrumentation
Enabled with REPIU_EXECUTION_TIME_PROFILE=1 and REPIU_LIVE_PROFILE_INTERVAL_MS.
[repiu-live-profile] veh / glide / port-io / dos / unaccounted shares
[repiu-live-veh] deliveries, cycles per delivery, kernel gap, three classes
[repiu-live-aot] cache entry / boundary / reentry, five boundary reasons
[repiu-live-gdd] direct dispatch patched / resolved / relinked / entry / success
Linux never reaches the loader summary, so without these nothing here can be read.
Known
- No performance has been fixed.
- Next question: why that INT3 stops being hit on Windows.
- Four inferences were wrong while making this version. All took a counter's meaning from its
name instead of from where it increments; the frontier carries the table.