LabHub
배우기 러닝패스 코스

자본시장과 결제 · 주문 경로의 지연을 구간으로 쪼개기 · 실습

어느 구간이 느린가, 그리고 그 음수는 무엇인가

LabHub 에서 이어서 보기

목표

주문 1500건의 구간 타임스탬프에서 구간별 지연을 계산하고, 호스트 시계 오프셋으로 보정해 시계 오차와 진짜 결함을 가른 뒤, 구간별 백분위수와 전체 꼬리를 만드는 구간을 따로 세어 어디를 고쳐야 하는지까지 좁힙니다.

왜 중요한가

"느립니다" 라는 신고에는 고칠 자리가 없습니다. 경로에 자를 대고 구간으로 쪼개야 고칠 팀이 정해집니다. 쪼개고 나면 두 가지 함정이 기다립니다. 첫째는 음수입니다. 양 끝이 다른 기계인 구간에는 두 기계의 시계 오차가 그대로 섞여 있어서 진짜 회선 시간보다 시계 차이가 크면 값이 음수가 됩니다. 이것을 측정 고장으로 여겨 버리면 나중에 상대와 이야기할 근거를 잃고, 반대로 통째로 시계 탓으로 묶으면 그 안에 섞인 진짜 한 건을 놓칩니다. 둘째는 백분위수입니다. 구간별 p99 가 가장 큰 구간과 전체 지연의 꼬리를 만드는 구간은 같지 않습니다. 앞은 구간마다 서로 다른 주문을 보고 있고, 뒤는 한 주문 안에서 무엇이 컸는지를 봅니다. 이 둘을 섞으면 엉뚱한 곳에 돈을 씁니다.

단계

1. python3/root/lat/dataspans.jsonl·offsets.json·spec.json·budget.json 을 만듭니다.
2. 자료의 모양을 세어 /root/lat/shape.json 에 적습니다.
3. 보정하지 않은 구간 지연을 계산해 /root/lat/raw_stats.json/root/lat/raw_negative.csv 에 적습니다.
4. 오프셋으로 보정해 /root/lat/clock_split.csv·/root/lat/defects.csv·/root/lat/adjust_summary.json 에 원인을 가릅니다.
5. 구간별 백분위수를 /root/lat/percentile.csv 에 적습니다.
6. 전체 지연의 꼬리를 뽑아 /root/lat/tail.csv/root/lat/tail.json 에 적습니다.
7. 예산 두 벌의 초과 건수를 /root/lat/budget_over.csv/root/lat/budget_summary.json 에 적습니다.
8. 분 단위 추이를 /root/lat/trend.csv 에, 좁힌 결론을 /root/lat/report.json 에 적습니다.

참고

단계 8개

  1. 구간 타임스탬프와 오프셋 보고 만들기
  2. 자료의 모양 세기
  3. 보정하지 않은 구간 지연과 음수 찾기
  4. 오프셋으로 보정해 시계 오차와 진짜 결함 가르기
  5. 구간별 백분위수 내기
  6. 전체 꼬리를 만드는 구간 세기
  7. 예산 두 벌의 초과 건수 견주기
  8. 언제부터 나빠졌는지와 배제한 가설 적기