Repository navigation
v0.0.168
rePIU v0.0.168
이전 릴리스 v0.0.167 이후의 변경입니다. v0.0.167의 결론 하나를 정정합니다.
시그널 전달은 범인이 아니었습니다
v0.0.167은 Linux 격차의 68%를 "시그널 전달"이라고 적었습니다. 그 68%를 두 인자로 갈랐더니
이름이 틀렸습니다.
| Windows | Linux | 배율 | |
|---|---|---|---|
| 프레임당 배달 | 18.8 | 256.3 | 13.6x |
| 배달당 cycle (핸들러 본문) | 104,002 | 341,557 | 3.3x |
| 커널 왕복 바닥 | 21,756 | 9,632 | 0.44x |
| 커널 왕복 single-step 평균 | 28,185 | 16,466 | 0.58x |
Linux의 시그널 전달은 Windows의 예외 디스패치보다 두 배 이상 쌉니다. 비싼 것은 전달이
아니라 경계를 13.6배 더 밟는 것과 밟을 때마다 핸들러 본문이 3.3배인 것입니다.
보고 줄이 하나 늘었습니다
[repiu-live-veh] #8 veh_count=617579 per_frame=263 cycles_per_veh=344198 gap_min=9472 gap_ss_mean=16427 gap_ss_count=22082
REPIU_EXECUTION_TIME_PROFILE=1과 REPIU_LIVE_PROFILE_INTERVAL_MS로 켭니다. 새로 세는
것은 없습니다 — 이 값들은 이미 쌓이고 있었고 찍히지 않았을 뿐입니다.
알려진 것
- 아직 성능을 고치지 않았습니다. 원인을 좁히는 데까지입니다.
- 초과 경계가 무엇인지는 아직 모릅니다. single-step은 아닙니다(Linux 배달의 3.6%,
Windows 24.4%). - 프레임당과 초당 정규화가 서로 다른 말을 합니다. 초당으로는 Linux가 폴트를 40% 적게
냅니다 — 프레임이 24배 드물기 때문입니다.
rePIU v0.0.168
Changes since v0.0.167, which corrects one of that release's conclusions.
Signal delivery was not the culprit
v0.0.167 recorded 68% of Linux's gap as "signal delivery". Splitting that 68% into its two factors
shows the name was wrong.
| Windows | Linux | Factor | |
|---|---|---|---|
| Deliveries per frame | 18.8 | 256.3 | 13.6x |
| Cycles per delivery (handler body) | 104,002 | 341,557 | 3.3x |
| Kernel round-trip floor | 21,756 | 9,632 | 0.44x |
| Kernel round trip, single-step mean | 28,185 | 16,466 | 0.58x |
Linux's signal delivery is more than twice as cheap as Windows' exception dispatch. What costs is
not delivery but taking 13.6x more boundaries a frame and a handler body 3.3x more expensive
each time.
One more report line
[repiu-live-veh] #8 veh_count=617579 per_frame=263 cycles_per_veh=344198 gap_min=9472 gap_ss_mean=16427 gap_ss_count=22082
Enabled by REPIU_EXECUTION_TIME_PROFILE=1 with REPIU_LIVE_PROFILE_INTERVAL_MS. Nothing new is
counted -- these values already accumulated and simply were not printed.
Known
- No performance has been fixed yet. This narrows the cause.
- What the excess boundaries are is still unknown. Not single steps (3.6% of Linux's deliveries
against Windows' 24.4%). - The per-frame and per-second normalisations say different things. Per second Linux takes 40%
fewer faults -- because frames are 24x rarer.