Skip to content

v0.0.168

Choose a tag to compare

@github-actions github-actions released this 27 Aug 23:56
· 93 commits to main since this release

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.