knowledge(요구): 요구 497 분석 기록 — 급경사 · 0차곡 느린 까닭 실측 · 고칠 길
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015uTVHHDv583hbLQAFeBmd9
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# 분석 497 — 예정노선(D03) 급경사 · 0차곡 느림 까닭
|
||||
|
||||
조건: 노트북 · 미리 계산 `--steps dem,zero --workers 7` 도는 중 · CPU 58~94 %(논리 20) · 서버 8000 · 화면 5173 · ORCA 내장 · 격자 2 m.
|
||||
대상: 용화 `6067750f`(4.5 × 2.7 km · 303 만 칸 · 6 도엽 · 읽기만) · 검증 D `e50c92f5`(2 × 2 km · 100 만 칸 · 2 도엽).
|
||||
|
||||
## 0. 결론
|
||||
|
||||
- 「아직 저장이 안 돼서」는 반만 맞음.
|
||||
- 급경사 = 공용 창고와 관계없음 · 이미 빠름(처음 0.2~0.7 s · 둘째부터 0.1~0.2 s). 느리게 보이는 때 = 같은 순간 0차곡 첫 셈이 서버를 붙잡음(아래 마).
|
||||
- 0차곡 = 범위가 바뀐 뒤 **첫 번**만 느림(D 3.5 s · 용화 12 s). 둘째부터 0.3~0.5 s.
|
||||
- 용화 · D 는 공용 창고를 **아예 안 씀** — 10-30 21:55(창고 이어 붙임 `707552ec9`) 전에 받은 지형이라 격자가 창고 격자와 어긋남 → 통째 셈. 미리 계산이 끝나도 이 둘은 안 빨라짐.
|
||||
- 줌 · 이동 · 밝음/어두움 = 서버 안 부름 · 긴 작업 0 · 느림 없음.
|
||||
|
||||
## 1. 길(코드)
|
||||
|
||||
| 겹 | 언제 서버 부름 | 서버 셈 | 창고 씀? | 저장본 |
|
||||
|---|---|---|---|---|
|
||||
| 급경사 | 겹 켬(받은 범위마다 한 번) `UI_Layers.ts:288` · 범위 바뀜 `:645` | 사업 DEM 통째 → 기울기 → 값 PNG 한 장(base64 JSON) `Layers.py:215-237` · 한 변 4,096 px 넘으면 솎음 `:71` | 안 씀 | 프로젝트 `_derived/plan_slope`(열쇠 = DEM 지문) `Layers.py:255-281` |
|
||||
| 0차곡 | 같음 `UI_Layers.ts:561` | 사업 DEM 2 m → 창고 격자면 도엽 누적 붙임 · 아니면 통째 D8 `ZeroOrder.py:273 · 293` → 세선화 · 선 따라가기(파이썬) `B05_Profile_Engine_Skeleton.py:166 · 214` → 단순화 · 경위도 | 창고 격자일 때만 `ZeroOrder.py:218` · 없는 도엽 누적은 요청 안에서 차례로 셈 `:169` | 프로젝트 `_derived/plan_zero_order`(열쇠 = DEM 지문 · 임계 · 도엽 누적 지문) |
|
||||
|
||||
- 화면: 급경사 = 값 그림 풀기 → 범위 색 칠하기(`canvas.toBlob` PNG) → MapLibre 그림 소스 `UI_SlopeBands.ts:49-76` · 0차곡 = GeoJSON → MapLibre 선(조각내기는 일꾼 스레드).
|
||||
- 줌 · 이동 = 카메라만(`ui_template_gl_map.ts` camera) · 밝음/어두움 = 겹 꼴만 다시 얹음(자료 안 받음) `ui_template_gl_map.ts:113-145`.
|
||||
- 사업 DEM 출처: 용화 · D 열쇠 = 옛 꼴(`도엽_등고선 … laplace`) · `x0/2−0.5` 정수 아님(용화 .777 · D .316) → `store_accumulation_paths` = None → 통째 셈. 창고 꼴(`"source": "terrain_store"`)은 10-30 23:10 이후 받은 프로젝트 둘뿐.
|
||||
|
||||
## 2. 서버 실측(함수 직접 · 쓰기 없음)
|
||||
|
||||
| 단계 | 용화 303 만 칸 | D 100 만 칸 |
|
||||
|---|---|---|
|
||||
| 사업 DEM 읽기 | 0.09 s | 0.03 s |
|
||||
| 급경사 기울기 셈 | 0.28 s | 0.11 s |
|
||||
| 급경사 PNG 인코딩 | 0.37 s | 0.11 s |
|
||||
| 급경사 처음 합 | **0.71 s** | **0.23 s** |
|
||||
| 급경사 저장본 읽기 | 0.01 s | — |
|
||||
| 0차곡 통째 D8(옛 격자 = 지금 길) | **8.49 s** | **2.49 s** |
|
||||
| 0차곡 선 뽑기(세선화 0.10 + 따라가기 1.86) | 2.62 s | 0.84 s |
|
||||
| 0차곡 단순화 · 경위도 · JSON | 0.79 s | 0.33 s |
|
||||
| 0차곡 처음 합(지금 길) | **11.9 s** | **3.7 s** |
|
||||
| 0차곡 창고 길(창고 격자 · 누적 있음) — 열쇠 대조 + 붙임 + 선 뽑기 + 단순화 | 0.32 + 0.15 + 2.44 + 0.79 ≈ **3.7 s** | 0.11 + 0.05 + 0.80 + 0.33 ≈ **1.3 s** |
|
||||
| 창고에 0차곡 누적 없는 도엽 하나(지형 읽기 0.43 + D8 4.26) | **≈ 4.7 s / 도엽**(요청 안에서 차례로 · 용화 6 장이면 ≈ 28 s 더) | 같음 |
|
||||
| 0차곡 결과 | 4,265 가닥 · 21,110 점 | 1,357 가닥 · 6,759 점 |
|
||||
|
||||
## 3. HTTP 실측(GET)
|
||||
|
||||
| 요청 | 용화 | D |
|
||||
|---|---|---|
|
||||
| 급경사 처음 | (저장본 있음) | 0.40 s |
|
||||
| 급경사 둘째 | 0.20 s · 본문 2.23 MB · 전송 1.72 MB(gzip) | 0.11 s · 0.75 MB · 0.58 MB |
|
||||
| 0차곡 처음 | (저장본 있음 · 함수 셈 11.9 s) | **3.50 s**(임계 1001 m² 로 한 번 더 = 3.71 s) |
|
||||
| 0차곡 둘째 | 0.30~0.52 s · 1.18 MB · 0.35 MB | 0.36 s · 0.38 MB · 0.11 MB |
|
||||
| 0차곡 첫 셈 도중 급경사 GET(용화 저장본) | 평소 0.20 s → **2.64 s** · 0.58 · 0.31 | — |
|
||||
|
||||
- 급경사 = base64 PNG 를 JSON 에 담음 → gzip 이 23 % 만 줄임.
|
||||
|
||||
## 4. 화면 실측(ORCA · D · 서버 저장본 있음)
|
||||
|
||||
| 조작 | 결과 |
|
||||
|---|---|
|
||||
| 페이지 들어옴(급경사 · 0차곡 켬) | 등고선 0.40 s · 0차곡 보임 0.65~0.67 s · 급경사 보임 0.73~0.75 s · 서버 TTFB 0.18~0.20 s · 급경사 · 0차곡 긴 작업 0(192 ms 하나 = 도엽 조각 `UI_SheetTiles`) |
|
||||
| 0차곡 켬(그 페이지 첫 받기) | 받음 0.19 s · GL 보임 0.24 s · 긴 작업 0 |
|
||||
| 급경사 범위 [적용](다시 칠함) | 94 ms |
|
||||
| 줌 12 번 · 끌어 이동 둘 | 급경사 · 0차곡 요청 0 · 긴 작업 0 · 틀 p95 4~8 ms · 최대 38 ms |
|
||||
| 밝음 ↔ 어두움 | 요청 0 · 긴 작업 0 · 틀 최대 13 ms · 급경사 색 값 두 테마 같음(다시 칠할 것 없음) |
|
||||
| 용화 크기 짐 브라우저 처리(같은 탭에서 따로) | 급경사 풀기 53 ms · 값 읽기 35 ms · 칠하기 12 ms · toBlob 42 ms(화면 움직이는 중) / **1,046 ms**(화면 멈춤 · Chromium 한가 작업 1 s 기다림) · 0차곡 JSON 9 ms · 캔버스 준비 13 ms |
|
||||
| MapLibre 첫 올림(따로 만든 지도) | 0차곡 0.33 s(4,265 가닥) · 급경사 그림 0.36 s(2259 × 1341) · 줌마다 17~46 ms · 이동 4~8 ms |
|
||||
|
||||
## 5. 가름
|
||||
|
||||
| 까닭 | 급경사 | 0차곡 |
|
||||
|---|---|---|
|
||||
| (가) 창고에 아직 없음(처음 셈) | 해당 없음(창고 안 씀) | 창고 격자 프로젝트에서 누적 없는 도엽마다 ≈ 4.7 s(차례로) · 지금 0차곡 누적 = 용화 둘레 100 도엽뿐 |
|
||||
| (나) 창고 있어도 프로젝트 범위로 다시 셈 | 처음 0.23 s / 100 만 칸(용화 0.7 s) | **옛 격자(용화 · D)** = 창고 무시 통째 셈 3.9 s / 100 만 칸(용화 11.9 s · D 3.7 s) · 창고 격자도 선 따라가기 · 단순화 ≈ 1.2 s / 100 만 칸 남음 |
|
||||
| (다) 한 장 큰 그림 · 큰 선 묶음 전송 | 2.2 MB(전송 1.7) · 로컬 0.1~0.3 s | 1.2 MB(전송 0.35) · 로컬 0.1~0.2 s |
|
||||
| (라) 브라우저 그리기 | 0.1 s + toBlob 최대 1.0 s(화면 멈춰 있을 때) + GL 0.3 s | GL 0.3 s · 줌 · 이동 0.02~0.05 s |
|
||||
| (마) 그 밖 | 0차곡 첫 셈이 서버 한 프로세스(GIL)를 붙잡아 급경사 · 다른 겹 요청이 0.2 → 2.6 s | 같음(원인 쪽) |
|
||||
|
||||
- 느림이 나는 때 = 범위가 바뀐 첫 번(지형 받기 · 이어 받기 직후 · 열쇠 바뀜). 둘째부터 두 겹 모두 1 s 안.
|
||||
|
||||
## 6. 미리 계산이 끝나면
|
||||
|
||||
| 프로젝트 | 0차곡 첫 번 | 급경사 |
|
||||
|---|---|---|
|
||||
| 새로 받은(창고 격자) | (가) 사라짐 → 붙임 + 선 뽑기만 ≈ 1.2 s / 100 만 칸(용화 크기 ≈ 3.7 s · D ≈ 1.3 s) | 그대로(이미 빠름) |
|
||||
| 옛 격자(용화 · D 포함) | **안 빨라짐** — 통째 셈 그대로(지형 다시 받기 전까지) | 그대로 |
|
||||
|
||||
## 7. 끝나도 남는 느림 · 고칠 길(권함)
|
||||
|
||||
| 차례 | 할 것 | 없애는 것 |
|
||||
|---|---|---|
|
||||
| 1 | 0차곡 셈을 사업 npz 대신 창고 격자(`load_terrain(box)`)에서 — `ZeroOrder.py:218 · 293` 옛 격자 갈래 걷음 | 옛 격자 통째 셈(용화 11.9 s → ≈ 3.7 s) · 다시 받기 불필요 |
|
||||
| 2 | 0차곡 선을 도엽마다 미리 뽑아 창고에(`zero_lines_<epsg>` · 기본 임계 0.1~1 ha) → 요청 = 도엽 선 이어 붙여 상자로 자름 | 선 따라가기 1.86 s / 300 만 칸 · 단순화 0.6 s(예상 0.1~0.3 s · 미측정) |
|
||||
| 3 | 무거운 첫 셈을 API 프로세스 밖(프로세스 풀)으로 | 다른 겹 요청 2.6 s 지연 |
|
||||
| 4 | 보는 화면 조각(위성 · 615 처럼) — 0차곡 선 · 급경사 값 그림을 도엽 · 줌 조각으로 | 넓은 범위(36 도엽 상한)의 4,096 px 솎음 · 큰 묶음 한 번 전송 · 지금 크기(300 만 칸)는 화면 쪽 이득 작음(GL 0.3 s) |
|
||||
| 5 | 급경사 칠하기 = `toBlob` 대신 캔버스 그대로(MapLibre canvas 소스 · 또는 `toDataURL`) · 값 PNG 는 base64 JSON 대신 바이너리 | toBlob 최대 1 s 대기 · 전송 23 % |
|
||||
|
||||
## 8. 남긴 흔적
|
||||
|
||||
- D `_derived/plan_slope` 새 저장본 하나(지문 바뀜으로 처음 셈) · `_derived/plan_zero_order` 둘(기본 · 임계 1001 m² 시험) — 다시 셀 수 있는 저장본 · 값 안 바뀜.
|
||||
- 용화 = 저장본 읽기의 mtime 만(`read_derived` touch).
|
||||
- ORCA 탭 닫음 · `frd_current_project_id` 되돌림(c725d747) · 새로 생긴 `aislo:pref:d03.*` 다섯 지움 · 테마 어두움 그대로.
|
||||
Reference in New Issue
Block a user