From 02aa5c752cb4704c7b8941c2e58acc359034272a Mon Sep 17 00:00:00 2001 From: eunhhu Date: Thu, 1 Oct 2026 07:05:51 +0100 Subject: Say that apps of a host send to each other and to other nodes (017) Stage 2 is built and measured: what was learned (the receiving side needed nothing new, an output goes one way only) and the numbers. The checkpoint adds sending to the many-apps row, and keeps 2b (one loop for the send threads) and stage 3 (apps added and replaced while the host runs) among what is left. --- docs/design/017-apps-on-one-host.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'docs/design') diff --git a/docs/design/017-apps-on-one-host.md b/docs/design/017-apps-on-one-host.md index 5f7aa7e..a192908 100644 --- a/docs/design/017-apps-on-one-host.md +++ b/docs/design/017-apps-on-one-host.md @@ -1,7 +1,7 @@ # 017 — 한 호스트의 여러 앱: 차례, 예산, 실패 경계 -작성일: 2026-10-01. 상태: 1단계 구현, 검사로 고정하고 쟀다([111](../research/111-apps-on-one-host.md)). 2단계는 착수 기준을 -적었다. 3단계는 설계. +작성일: 2026-10-01. 상태: 1·2단계 구현, 검사로 고정하고 쟀다([111](../research/111-apps-on-one-host.md), +[112](../research/112-sending-between-apps.md)). 2b와 3단계는 설계. [외부 리뷰 004](../outside-feedback/feedback-004.md)의 "구현 방향에 대한 평가" 셋째에서 시작한다. 작은 OS의 운영 모델( [007](007-execution-domains.md))을 Pure가 실제로 갖게 하는 단계다. @@ -189,6 +189,17 @@ counter apps/count.pmod stores/counter - 받는 앱에 저장된 보냄의 초당 수가 링크보다 낮지 않다. - 저장된 보냄 하나에 드는 호스트의 CPU가 링크의 절반 이하다. +### 2단계에서 알게 된 것 + +- **받는 쪽은 새로 쓸 것이 없었다.** 안쪽 출구는 링크가 넘기는 기록과 같은 꼴(첫 번호, 건수, source, 저장된 그대로의 기록, 이름으로 + 받을 때의 필드)로 넘긴다. 받는 앱은 링크의 기록을 적용하던 길로 들은 번호 다음부터 적용하고, 저장 뒤의 알림만 갈래가 하나 + 늘었다. 보내는 쪽도 전달선·링크와 같은 출구의 꼴(쌓은 번호, 저장된 번호, 쥔 바이트, 창)이다. +- **출력은 한 길로만 간다.** 한 출력을 두 출구에 걸면, 빠른 쪽이 저장된 만큼 outbox를 다듬어 느린 쪽이 아직 보내지 않은 것을 + 잃는다. 같은 출력을 두 번 배선하면 그 앱이 시작하지 않는다. +- **결과.** 안쪽 출구가 링크의 두 배(초당 114만 건)를 나르고, 보냄 하나에 CPU를 40%(1.17 µs) 쓴다. 다른 호스트의 앱, 같은 + 모양과 이름으로 받는 모양, 메모리가 찬 앱에 보내는 것이 `kill -9`를 지나도 한 번씩 순서대로 간다. 커밋: Pure `8f75b32`(앱마다의 + 배선, 링크 포트 하나), `b7b86df`(안쪽 출구). + ## 하지 않는 것 - 이벤트를 중간에 멈추고 다른 앱에 넘기는 선점. 이벤트는 원자적이고 끝까지 돈다. 그 대신 실행량 예산이 한 이벤트의 길이를, -- cgit v1.2.3