aboutsummaryrefslogtreecommitdiffstats
path: root/docs/design
diff options
context:
space:
mode:
Diffstat (limited to 'docs/design')
-rw-r--r--docs/design/029-past-one-node.md15
1 files changed, 9 insertions, 6 deletions
diff --git a/docs/design/029-past-one-node.md b/docs/design/029-past-one-node.md
index 287fa64..668471c 100644
--- a/docs/design/029-past-one-node.md
+++ b/docs/design/029-past-one-node.md
@@ -244,20 +244,23 @@ C의 속도로 컴파일하기 쉬운 쪽**이어야 한다. 61–183배의 절�
두 저장소는 /dev/shm에 있다. 시험하는 것은 같음과 이어받기이지 매체가 아니다.
- **같음.** 메시지 10만 개(컷 200,081개, 압축 34번, 이미지 다시 쓰기 1번)와 20만 개(컷 400,149개, 압축 67번, 두 번째 로그 조각)에서,
1,999컷과 3,001컷마다 주인을 멈추고 두 저장소를 이름과 바이트까지 견주었다. 표본 233번과 끝에서 다른 바이트는 0이다.
-- **이어받기.** kill -9를 70번 했다. 주인만 죽인 것, 기계째(shipper도) 죽인 것, 기계째에 컷을 512 B와 64 B 레코드로 쪼갠 것이다.
- 따르는 노드의 저장소는 70번 모두 주인으로 열린다. 주인이 끝났다고 한 메시지를 모두 담고, 보내지 않은 것은 없고, 항목은 차례대로다.
- 70번 모두 죽은 주인의 제 저장소와 같은 수를 담았다.
+- **이어받기.** kill -9를 90번 했다. 주인만 죽인 것, 기계째(shipper도) 죽인 것, 기계째에 컷을 512 B와 64 B 레코드로 쪼갠 것이다.
+ 따르는 노드의 저장소는 90번 모두 주인으로 열린다. 주인이 끝났다고 한 메시지를 모두 담고, 보내지 않은 것은 없고, 항목은 차례대로다.
+ 모두 죽은 주인의 제 저장소와 같은 수를 담았다. 나중의 20번은 연 저장소에 메시지 하나를 더 보내, 주인으로서 받는 것까지(total이
+ 하나 늘고 그 항목이 들어감) 확인했다.
- **찢긴 꼬리.** 컷의 레코드는 한 묶음으로 건너가서, kill이 컷의 중간을 남긴 일은 한 번도 없었다. 그래서 따르는 노드가 가질 수 있는
상태를 직접 만들었다(`prefixes.py`). 메시지 10만 개의 연산 흐름(507,150개)에서 연산 경계 867곳까지 적용한 저장소를 주인으로 열었다.
컷 안에서 끝나는 것이 568곳, 압축과 이미지 설치 둘레가 266곳이다. 모두 오류 없이 열리고, 담은 항목이 정확히 처음 메시지들의
- 것이며, 짧은 접두가 담은 것을 긴 접두가 잃지 않는다.
+ 것이며, 짧은 접두가 담은 것을 긴 접두가 잃지 않는다. 다시 돌린 667곳(컷 안 447곳)은 메시지 하나를 더 받는 것까지 확인했다.
+- 실행 내내 shim의 멈춤은 한 번도 일어나지 않았다. 30만 개가 넘는 메시지에서 보낸 연산 밖의 길로 파일이 바뀐 적이 없다는 증거다.
- **원리의 문구와 어긋난 것.** "저장 한 번이 쓰는 것은 모두 스스로 경계를 갖고 스스로 검증하는 구간"은 문구대로는 틀렸다. 저장소는
구간 말고 파일의 연산도 한다. 꼬리에 0을 미리 쓰고, 압축한 새 트리를 프로세스 번호가 든 임시 이름으로 써서 rename으로 설치하고,
이미지도 그렇게 설치하며, 디렉터리를 fsync하고, 로그 조각을 8 MB씩 잡는다. 그래서 구간이 아니라 연산 여덟 가지를 실었다. 029가
"첫 실증이 그것을 드러낸다"고 적은 것이 그것이다. 그래도 복제 계층은 없다. 실은 것은 저장소가 제 sync에서 끊은 제 연산이고,
확인은 heard다.
-- **값.** /dev/shm에서 메시지 하나에 204 µs → 400 µs(두 번 재어 같다)다. 그 가운데 155 µs가 확인을 기다린 시간이다(메시지 하나에
- 컷 둘). 보낸 바이트는 메시지 하나에 903 B다. 압축의 새 파일 371, 트리의 커밋 365, 로그 71, 이미지 7이다. 그 42%(3,800만 B)가
+- **값.** /dev/shm에서 메시지 하나에 48.5 µs → 232 µs(두 번 재어 같다)다. 늘어난 183 µs 가운데 146 µs가 확인을 기다린 시간이다
+ (메시지 하나에 컷 둘, 루프백). /dev/shm의 fsync는 거의 공짜라서 기준이 낮다. 처음 적은 204 → 400 µs는 기준이 부풀었다. 그 앱의 보기
+ `summed`가 메시지마다 모든 항목을 접었다(`--views`가 메시지마다 보기를 보인다). 보기 하나인 `entries-price.aup`로 다시 쟀다. 보낸 바이트는 메시지 하나에 903 B다. 압축의 새 파일 371, 트리의 커밋 365, 로그 71, 이미지 7이다. 그 42%(3,800만 B)가
미리 쓴 0이다. 0은 따르는 노드가 스스로 만들 수 있으니, 연산 하나("여기서부터 이만큼 0")로 보내면 반으로 준다. 재지 않았다.
- **시험하지 않은 것.**
- 따르는 노드를 다시 시작하는 것. heard는 메모리에 있다. 계층을 지우는 다음 답은 heard를 따르는 노드의 파일(트리의 마지막 커밋)에서