aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/040-document-service-capacity.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/research/040-document-service-capacity.md')
-rw-r--r--docs/research/040-document-service-capacity.md48
1 files changed, 48 insertions, 0 deletions
diff --git a/docs/research/040-document-service-capacity.md b/docs/research/040-document-service-capacity.md
new file mode 100644
index 0000000..4016089
--- /dev/null
+++ b/docs/research/040-document-service-capacity.md
@@ -0,0 +1,48 @@
+# 040 — 한 문서 앱의 다중 객체·동시 요청 용량 확인
+
+2026-09-24. 작은 코어와 한 문서 예제만으로 서비스 규모의 메모리 특성을
+판단할 수 없다. 기존 `editor.pure`를 그대로 사용하고, 소스 정의 HTTP 호스트와
+빌드 시 준비한 고정 정의 HTTP 호스트에 동일한 앱 작업을 실행했다. 새 런타임
+타입이나 전용 저장 형식을 추가하지 않았다.
+
+[재현 검사](../../prototypes/connections/check_service_scale.py)는 각 호스트에
+**8개 클라이언트**를 연결해 **1,024개 키**를 분담한다. 키마다 8,192 B 문서를
+생성하고, 읽고, 마지막 1 B를 조건부 수정하고, 새 버전을 다시 읽는다.
+각 응답의 상태·버전·본문을 검증하고, 두 호스트가 만든 모든 최종 문서의
+해시를 비교한다. 호스트 종료 후에는 별도 CLI 프로세스로 네 문서를 읽어
+저장된 내용과 버전을 확인한다. 한 호스트당 **4,096 HTTP 작업**과 2,048개 저장 효과,
+2,048개 읽기 효과다. 키별 작업은 순차적이며, 서로 다른 키 사이에 동시성이
+있다. 이전 검사에서 같은 키의 충돌과 느린 수신자는 별도로 검증했다.
+
+[현재 호스트의 실행 결과](../../prototypes/connections/results/2026-09-24-posix-idle/service-scale.json):
+
+| 한 호스트 기준 | 고정 정의 | 소스 정의 |
+|---|---:|---:|
+| 최종 저장 객체 | 1,024 | 1,024 |
+| 저장 파일 총량 | 8,413,184 B | 8,413,184 B |
+| 서버 유휴 RSS | 1,504 KiB | 1,552 KiB |
+| 이 작업의 피크 RSS | **1,680 KiB** | **1,712 KiB** |
+| 최대 동시 연결 | 8 | 8 |
+| 최대 보유 payload | 49,185 B | 49,168 B |
+| 종료 시 보유 payload | 0 B | 0 B |
+| 거절·기한 만료 | 0 | 0 |
+
+두 호스트의 최종 문서 해시는 같다. 1 MiB 서버 payload 예산과 4 MiB
+프로세스 피크 RSS 회귀 상한을 통과했다. 응답으로 빌려 보낸 논리적 본문은
+호스트당 25,166,848 B였고, 요청 헤더와 같은 첫 수신에 실린 본문을 입력
+버퍼로 옮긴 바이트는 이 실행에서 고정 정의 326,623 B, 소스 정의
+366,236 B였다. [앞선 동일 작업](../../prototypes/connections/results/2026-09-24-signal-safe-idle/service-scale-restored.json)에서는
+각각 696,751 B와 410,074 B였다.
+TCP 분할·스케줄링에 따라 달라지는 값이므로 두 호스트의 우열을 뜻하지
+않지만, 복사 제거가 아직 완전하지 않다는 근거다. 빌린 출력 바이트는 실제
+네트워크·커널 복사량이나 고유 물리 메모리량을 뜻하지 않는다.
+
+이 검사는 **실제 문서 앱의 다중 객체·8연결 정확성 및 자원 상한**을 보여준다.
+Python 클라이언트가 만든 요청의 실행 시간을 서버 처리량으로 취급하지
+않는다. 저장 파일과 페이지 캐시, 파일 디스크립터, OS 네트워크 버퍼,
+클라이언트 메모리는 서버 RSS에 포함되지 않는다. 1,024개 파일을 쓰는
+운영·복구 비용, 다수의 1 MiB 동시 응답, 장시간 부하, 여러 Pure 프로세스,
+실서비스 동등 비교와 macOS는 아직 검증하지 않았다. 한 바이트 수정에도
+기본 저장소가 문서 전체를 다시 쓰는 비용 역시 남아 있다.
+
+재현 명령은 `make -C prototypes/connections check-service-scale`이다.