aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/design/011-pure-transport.md5
-rw-r--r--docs/research/100-moved-receiver.md125
-rw-r--r--research/experiments/019-idle-links/2026-09-29-move-linux-aarch64.jsonl4
3 files changed, 134 insertions, 0 deletions
diff --git a/docs/design/011-pure-transport.md b/docs/design/011-pure-transport.md
index d3a327a..6ad02ea 100644
--- a/docs/design/011-pure-transport.md
+++ b/docs/design/011-pure-transport.md
@@ -37,6 +37,11 @@ M6는 [097](../research/097-lossy-paths.md)에 있다. 처음에는 패킷 순�
상태와 재시작은 에폭 전과 같다. 값은 대량으로 처음 만난 뒤 약 40초의 지연(p50 +0.7 ms)과, 메모를 잃은 재시작의 7.7초 따라잡기다.
이것을 재다가 M6와 보안 검사가 기기마다 패킷을 하나씩 더 보내던 것(+10k, +38k)을 찾아 없앴다.
+M3(저장소 옮기기, H3)는 [100](../research/100-moved-receiver.md)에 있다. 링크는 탐침 세 번이 답을 받지 못하거나 시스템이 길이
+없다고 하면 받는 쪽의 이름을 다시 풀고 새 소켓으로 보낸다. 기기 1만 개가 초당 2,000건을 보내는 중에 받는 쪽의 저장소, 키, 메모를
+다른 주소로 옮겨도 저장이 멈춘 칸이 없고, 옮긴 노드의 X25519는 0이며, 잃거나 겹친 기록이 없다. 그 검사를 만들다 받는 쪽이 패킷이
+온 주소가 아닌 곳에서 답하던 결함도 찾아 고쳤다. 이제 H1–H4를 모두 쟀고, 남은 것은 5단계(채택과 명세)다.
+
2026-09-29에 링크를 `link/`로 뗐다([009](009-layout.md)). 프로토콜은 이제 소켓, 스레드, 시계가 없는 상태이고
(`link/link-protocol.h`), UDP와 스레드는 그 위의 층이다. 그래서 한 스레드가 링크 여럿을 들 수 있다. M2를 이 보내는 쪽으로
다시 돌렸더니 결과가 같았다. 다만 재시작 뒤 가장 늦은 저장이 1초였다. 받았다고 했지만 저장 소식이 없는 기록을 1초 기다리기
diff --git a/docs/research/100-moved-receiver.md b/docs/research/100-moved-receiver.md
new file mode 100644
index 0000000..40d5f2f
--- /dev/null
+++ b/docs/research/100-moved-receiver.md
@@ -0,0 +1,125 @@
+# 100 — 받는 쪽을 다른 기계로 옮겨도 링크가 따라간다
+
+2026-09-29. [설계 011](../design/011-pure-transport.md) 4단계의 경로 바뀜과 저장소 옮기기(H3, M3)다.
+
+착수 기준:
+
+- **바꿀 결정.** H3이다. 저장소를 다른 프로세스나 주소로 옮겨도 링크가 이어진다.
+ - QUIC은 연결을 다른 프로세스로 옮기지 못한다. 서버의 주소가 바뀌는 길은 핸드셰이크 때 알린 preferred_address 하나다
+ (RFC 9000 §9.6). 옮긴 서버에는 모든 클라이언트가 새로 연결해야 한다.
+- **최소 확인.**
+ - 받는 쪽의 저장소, 키, 메모를 다른 기계로 옮긴다. 옛 주소는 사라지고, 보내는 쪽이 쓰는 이름이 새 주소를 가리킨다.
+ - 끊긴 시간, 잃거나 겹친 기록, 비대칭 연산을 본다. M2와 같은 부하(기기 1만 개, 초당 2,000건)로 잰다.
+- **중단 기준(011).** H3의 검사에서 한 번이라도 잃거나 겹치면, 되돌리고 원인을 찾는다.
+
+## 쉬운 말로
+
+- 알아낸 것:
+ - 처음 해 보니 링크가 옮겨 간 받는 쪽을 영영 찾지 못했다. 링크는 시작할 때 이름을 한 번만 풀었다.
+ - 그 검사를 만들다 더 오래된 결함이 나왔다.
+ - 받는 쪽은 노드의 모든 주소에서 받지만, 답은 시스템이 고른 주소에서 나갔다.
+ - 보내는 쪽이 노드의 두 번째 주소로 보내면 답이 하나도 닿지 않았다. 기록은 도착했는데 확인이 오지 않았다.
+ - 이제 패킷이 도착한 주소에서 답한다. QUIC 구현들이 하는 대로다.
+ - 이제 링크는 다음 둘 중 하나가 일어나면 이름을 다시 풀고 새 소켓으로 보낸다.
+ - 탐침 세 번이 연달아 답을 받지 못했다.
+ - 보내다가 시스템이 길이 없다고 했다(길 없음, 받는 이 없음).
+ - 받는 쪽이 옮겨 가도, 보내는 쪽의 망이 바뀌어도 같은 규칙이다.
+ - 기기 1만 개가 초당 2,000건을 보내는 중에 받는 쪽을 다른 주소로 옮겼다.
+ - 저장이 멈춘 100 ms 칸이 없다.
+ - 옮긴 노드는 X25519를 하지 않았다. 잃거나 겹친 기록도 없다.
+ - 같은 주소에서 다시 띄운 경우(M2)와 다른 점은 하나다. 옮긴 뒤 기기마다 첫 기록이 탐침 한 번(이 루프백에서 30–45 ms)을
+ 기다린다.
+- 아직 모르는 것:
+ - 보내는 쪽의 망이 바뀌는 경우(와이파이에서 LTE로)는 같은 규칙으로 다룬다. 다만 한 기계의 루프백으로는 옛 망을 끊을 수 없어
+ 따로 재지 않았다.
+ - 실제 DNS에서는 이름이 바뀌어 퍼지는 시간(TTL)이 든다. 재지 않았다.
+- 사용 경험의 차이: 장애 조치가 "저장소를 옮기고 이름을 바꾸는 일"이 된다. 기기들은 핸드셰이크 없이 다음 패킷으로 따라온다.
+
+## 한 것
+
+### 경로는 두 주소다
+
+받는 쪽이 한 run에 대해 기억하는 경로를 (상대의 주소, 패킷이 도착한 노드의 주소) 한 쌍으로 바꿨다(48 B, 전에는 28 B).
+QUIC이 경로를 4-튜플로 보는 것과 같다.
+
+- 리스너는 패킷마다 도착한 주소를 받는다(IP_PKTINFO). IPv4도 IPv6 소켓 하나에서 `::ffff:a.b.c.d`로 받는다.
+- 답은 그 주소에서 나간다.
+- 도착한 노드의 주소가 바뀐 패킷은 상대 주소가 바뀐 패킷과 똑같이 다룬다. 가장 새 번호일 때만 경로를 옮기고, 새 경로는
+ CHALLENGE로 확인한다(098).
+
+### 받는 쪽을 다시 찾는다
+
+링크(`link/link.c`)가 받는 쪽의 이름을 다시 풀고, 새 소켓을 그 주소에 연결한다. 옛 소켓은 닫는다. 다시 찾는 때는 둘이다.
+
+- 탐침 세 번이 연달아 답을 받지 못했을 때, 그리고 그 뒤 탐침마다. 탐침 간격은 두 배씩 늘어 1초에서 멈춘다.
+- 보내다가 시스템이 길이 없다고 했을 때(ECONNREFUSED, EHOSTUNREACH, ENETUNREACH, ENETDOWN, EADDRNOTAVAIL). 이때는 다음
+ 패킷을 보내기 전에 곧바로 찾는다.
+
+두 가지를 조심했다.
+
+- **쉬던 링크는 찾지 않는다.** 답을 들은 지 오래됐다는 것만으로는 찾지 않는다. 5초마다 기록 하나를 보내는 기기가 기록마다
+ 이름을 풀고 소켓을 새로 열 것이기 때문이다. 답을 받지 못한 탐침만 센다.
+- **탐침을 보내기 전에 찾는다.** 처음에는 탐침을 보낸 뒤에 소켓을 바꿨다. 그러자 그 탐침의 답이 방금 닫은 소켓으로 돌아왔고,
+ 다음 탐침에서도 같은 일이 되풀이됐다. 소켓만 번갈아 바뀌고 답은 하나도 받지 못했다.
+
+새 소켓은 새 포트이므로, 받는 쪽은 새 경로로 보고 확인한다. 확인 전의 답은 받은 바이트의 3배까지이고, 보내는 쪽의 다음
+패킷에 RESPONSE가 실려 간다(099).
+
+### 검사와 하네스
+
+- `make check`의 `server_links_moved`는 네트워크와 `/etc/hosts`를 따로 가진 이름공간(`unshare -rmn`)에서 돈다.
+ 1. 보내는 노드는 `pure://receiver.test`로 보낸다. 이 이름은 127.0.0.2를 가리킨다.
+ 2. 주문이 흐르는 중에 받는 노드를 kill -9 한다.
+ 3. 저장소, 키, 메모를 다른 디렉터리로 복사한다.
+ 4. 127.0.0.2를 라우팅에서 닿지 않게 하고, 이름을 127.0.0.3으로 바꾼 뒤, 복사본을 거기서 띄운다.
+ 5. 모든 주문이 한 번씩 적용되고, 옮긴 노드가 X25519를 하지 않으면 통과다.
+- M2 하네스에 `--move`를 더했다([run.py](../../research/experiments/019-idle-links/run.py)). 같은 이름공간에서 같은 옮기기를
+ 한다. 부하 생성기의 기기들도 `link.c`와 같은 규칙으로 다시 찾는다.
+
+## 결과
+
+M2와 같은 부하다. 기기 1만 개가 5초마다 주문 하나를 보낸다(초당 2,000건). 80초를 돌리고 60초에 받는 쪽을 kill -9 한다.
+에폭 수락은 약 40초에 끝나므로, 60초에는 모든 기기가 에폭 1에 있다. 두 라운드씩이다. 원시 결과는
+`research/experiments/019-idle-links/2026-09-29-move-linux-aarch64.jsonl`에 있다.
+
+| | 같은 주소에서 다시 띄움(M2) | 다른 주소로 옮김(M3) |
+|---|---|---|
+| 죽인 뒤 다시 뜨기까지(옮기기 포함) | 18 ms | 24–33 ms |
+| 저장이 멈춘 100 ms 칸 | 0 | 0 |
+| 옮긴 뒤 5초에 만든 기록의 p50 / p99 | 0.6–0.7 / 7.9–8.4 ms | 28–29 / 44–45 ms |
+| 전체 p99 / 최대 | 5.0–5.1 / 36–39 ms | 36–37 / 107–111 ms |
+| 다시 보낸 기록 / 보낸 패킷 | 33 / 160,039–160,043 | 10,022 / 170,028–170,033 |
+| 다시 뜬 노드의 X25519 | 0 | 0 |
+| 다시 뜬 뒤 10초의 CPU, 노드 / 생성기 | 1.17–1.40 / 0.72–0.83초 | 1.08–1.24 / 0.89–1.00초 |
+| 적용 | 160,006–160,010, 모두 한 번 | 160,006–160,011, 모두 한 번 |
+
+- 옮긴 뒤 기기마다 첫 기록 하나가 한 번 더 간다(10,022건).
+ - 옛 주소로 간 첫 패킷은 시스템이 "길 없음"으로 돌려준다.
+ - 기기는 곧바로 이름을 다시 풀지만, 그 기록은 탐침이 울릴 때(30–45 ms 뒤) 새 주소로 간다.
+ - 기기가 5초마다 보내므로, 옮긴 뒤 5초 동안 모든 기기가 한 번씩 이것을 겪는다.
+- 하네스의 "따라잡기"는 옮긴 쪽이 1.4–3.1초로 나온다. 밀린 것이 아니다.
+ - 100 ms 칸의 저장량은 옮긴 직후부터 약 200으로 같다.
+ - 5초 동안 기록마다 약 30 ms씩 늦으니, 누적량이 "정상 속도의 99 %"에 조금 못 미치는 동안이 그만큼 이어진 것이다.
+- quinn은 같은 주소의 재시작에서도 1초 멈추고, 10.9초 뒤 따라잡았다. 그동안 핸드셰이크 1만 번에 서버 CPU 약 7초를 썼다(095).
+ 옮긴 서버라면 적어도 이만큼 든다. 옮긴 서버에는 연결이 하나도 없기 때문이다.
+
+## 판정
+
+- H3이 선다. 받는 쪽의 저장소, 키, 메모를 다른 기계로 옮기면, 기기들은 핸드셰이크 없이 다음 패킷으로 따라온다. 잃거나 겹친
+ 기록이 없고, 옮긴 노드의 비대칭 연산은 0이다.
+- 011의 네 가설을 모두 쟀다.
+ - H1(쉬는 링크의 비용, 094), H2(kill -9, 095), H3(이 문서)은 선다.
+ - H4(전달당 CPU, 096)는 1 KiB와 16 KiB에서 quinn보다 25 % 적다. 61 B에서는 1.06–1.12배라, 채택 기준(10 %)의 경계에 있다.
+ - 보안 검사(098)와 전방 비밀성(099)도 통과했다.
+- 남은 것은 011의 5단계다. 채택 여부를 정하고 명세를 쓴다. 61 B의 전달당 CPU를 먼저 다시 본다.
+
+## 한계와 다음
+
+- **보내는 쪽의 망이 바뀌는 경우.** 규칙은 같다. 옛 망의 소켓이 보내지 못하거나 탐침이 답을 받지 못하면 새 소켓으로 간다.
+ 다만 실제 인터페이스를 바꿔 가며 재지 않았다.
+- **이름 풀기는 링크 자신의 스레드에서 한다.** 실제 DNS가 느리면 그동안 그 링크는 기다린다. 다른 링크는 기다리지 않는다.
+- **새 소켓은 새 경로다.** 받는 쪽은 새 포트를 확인할 때까지 답을 받은 바이트의 3배로 묶는다. 기록 하나에 대한 답은 그보다
+ 작아서 M3에서는 걸리지 않았다.
+- **옮긴 뒤의 첫 기록.** 이 기록을 탐침 없이 곧바로 새 주소로 다시 보내면 30–45 ms를 더 줄일 수 있다. 다만 보낼 것이 없는
+ 링크를 깨울 방법을 따로 두어야 해서 하지 않았다.
+- 다음은 011의 5단계, 채택 여부와 명세다.
diff --git a/research/experiments/019-idle-links/2026-09-29-move-linux-aarch64.jsonl b/research/experiments/019-idle-links/2026-09-29-move-linux-aarch64.jsonl
new file mode 100644
index 0000000..3e84fc9
--- /dev/null
+++ b/research/experiments/019-idle-links/2026-09-29-move-linux-aarch64.jsonl
@@ -0,0 +1,4 @@
+{"kind":"move","round":1,"row":{"devices": 10000, "period_ms": 5000, "memo": true, "moved": true, "restart_ms": 32.7, "steady_cpu_ms_per_s": 90.0, "senders_steady_cpu_ms_per_s": 60.0, "recovery_cpu_ms_first_10s": 1240.0, "senders_cpu_ms_first_10s": 1000.0, "generator": {"devices": 10000, "made": 160006, "stored": 160006, "sends": 170028, "again": 10022, "stored_ms_p50": 0.649, "stored_ms_p99": 36.788, "stored_ms_max": 110.877, "longest_gap_ms": 0, "gap_from_ms": 0, "keyed": 50000, "secrets": 0, "epochs": 10000, "p50_ms_by_second_made": [4.68, 4.69, 4.7, 4.73, 4.69, 0.85, 0.73, 0.78, 0.81, 0.82, 0.9, 1.21, 1.22, 1.28, 1.31, 1.17, 1.21, 1.25, 1.28, 1.3, 0.83, 0.83, 0.74, 0.83, 0.78, 1.12, 0.74, 0.78, 0.86, 0.84, 0.85, 1.18, 1.25, 0.95, 0.8, 0.65, 0.72, 0.7, 1.05, 1.09, 0.33, 0.36, 0.38, 0.43, 0.43, 0.31, 0.33, 0.36, 0.37, 0.4, 0.31, 0.33, 0.32, 0.3, 0.32, 0.25, 0.26, 0.35, 0.39, 0.41, 0.31, 36.02, 36.24, 36.48, 36.65, 36.12, 0.39, 0.37, 0.35, 0.33, 0.24, 0.25, 0.27, 0.37, 0.41, 0.3, 0.31, 0.29, 0.3, 0.33, 0.23], "p99_ms_by_second_made": [5.57, 5.12, 5.19, 5.13, 5.93, 4.89, 1.29, 1.23, 1.39, 1.33, 1.61, 1.8, 1.81, 1.84, 1.79, 2.43, 1.64, 1.95, 1.72, 1.96, 2.5, 1.51, 1.31, 1.25, 1.58, 9.11, 1.28, 1.43, 1.38, 1.3, 1.65, 1.78, 1.93, 2.69, 1.33, 1.44, 1.99, 1.42, 2.16, 2.36, 0.69, 0.75, 0.84, 0.93, 0.86, 0.73, 0.63, 0.7, 0.76, 0.67, 0.62, 0.68, 1.32, 0.56, 0.58, 0.52, 0.5, 0.59, 0.9, 0.69, 0.7, 109.61, 37.85, 38.71, 37.75, 38.31, 36.75, 0.74, 1.85, 0.59, 0.59, 0.57, 0.56, 0.62, 0.7, 0.73, 1.4, 0.52, 0.62, 0.59, 0.46]}, "timeline_100ms": [175, 198, 200, 199, 218, 199, 189, 198, 214, 183, 199, 200, 202, 216, 199, 199, 199, 202, 200, 197, 202, 199, 187, 201, 199, 199, 203, 200, 196, 201, 200, 199, 211, 192, 199, 203, 196, 204, 211, 191, 199, 196, 213, 202, 183, 204, 201, 213, 194, 196, 210, 203, 184, 214, 201, 201, 202, 202, 202, 189, 203, 200, 204, 202, 201, 190, 204, 204, 203, 190, 207, 192, 201, 203, 203, 203, 192, 206, 193, 204, 195, 203, 203, 204, 191, 207, 192, 206, 194, 206, 195, 205, 204, 194, 204, 194, 204, 194, 206, 194, 202, 200, 199, 206, 193, 201, 205, 192, 201, 206, 193, 202, 202, 205, 193, 202, 203, 194, 206, 197, 200, 204, 193, 206, 195, 207, 203, 194, 206, 195, 193, 206, 205, 193, 207, 194, 196, 209, 195, 195, 209, 194, 209, 195, 195, 209, 196, 195, 209, 194, 206, 201, 189, 203, 205, 203, 189, 206, 206, 189, 206, 204, 191, 203, 202, 198, 205, 195, 203, 194, 208, 192, 206, 196, 205, 193, 206, 199, 192, 209, 195, 205, 194, 206, 196, 195, 209, 197, 197, 207, 197, 195, 196, 210, 196, 195, 207, 196, 205, 197, 199, 198, 208, 199, 201, 200, 199, 201, 200, 201, 194, 201, 202, 199, 202, 201, 202, 198, 200, 194, 204, 203, 202, 190, 204, 203, 201, 192, 205, 195, 204, 204, 192, 204, 205, 192, 205, 194, 205, 195, 207, 192, 206, 203, 192, 204, 205, 194, 208, 193, 203, 198, 197, 200, 199, 202, 204, 171, 218, 206, 207, 201, 201, 192, 201, 201, 202, 193, 204, 204, 193, 204, 203, 192, 205, 203, 192, 208, 192, 206, 195, 205, 203, 193, 203, 204, 194, 207, 195, 195, 208, 194, 204, 194, 204, 195, 205, 196, 205, 194, 205, 203, 203, 190, 201, 201, 205, 192, 200, 206, 204, 193, 202, 206, 195, 205, 190, 208, 190, 209, 195, 203, 196, 207, 194, 207, 196, 197, 204, 197, 200, 201, 196, 206, 204, 193, 204, 197, 206, 194, 205, 194, 205, 194, 205, 202, 193, 207, 195, 205, 195, 199, 200, 200, 201, 198, 200, 202, 204, 195, 197, 202, 205, 199, 201, 200, 201, 195, 203, 200, 201, 202, 200, 202, 199, 191, 199, 205, 201, 195, 204, 203, 189, 204, 204, 202, 193, 209, 191, 201, 206, 193, 204, 201, 202, 196, 203, 195, 206, 192, 211, 197, 196, 208, 196, 196, 207, 200, 195, 198, 208, 197, 197, 198, 207, 197, 197, 203, 198, 198, 199, 210, 197, 198, 198, 198, 198, 202, 198, 199, 202, 209, 199, 199, 200, 198, 200, 204, 200, 190, 202, 198, 200, 210, 199, 200, 200, 191, 206, 200, 196, 205, 194, 207, 195, 206, 197, 203, 197, 197, 198, 207, 195, 208, 195, 196, 206, 199, 196, 197, 209, 198, 197, 198, 208, 197, 197, 204, 197, 199, 199, 198, 201, 207, 198, 197, 198, 200, 199, 200, 199, 210, 198, 200, 198, 200, 198, 200, 199, 200, 198, 206, 195, 206, 194, 208, 195, 197, 208, 197, 197, 197, 207, 196, 196, 208, 196, 198, 207, 198, 197, 205, 192, 206, 195, 203, 205, 196, 204, 196, 196, 205, 194, 207, 194, 206, 195, 206, 196, 196, 206, 195, 206, 195, 206, 196, 204, 199, 196, 196, 204, 203, 204, 192, 203, 203, 193, 206, 193, 204, 204, 193, 203, 204, 193, 204, 204, 195, 204, 194, 205, 194, 208, 198, 196, 198, 208, 200, 196, 200, 199, 197, 208, 199, 198, 198, 199, 205, 197, 199, 200, 199, 199, 199, 198, 200, 210, 200, 200, 200, 196, 197, 203, 196, 206, 196, 198, 198, 206, 196, 208, 186, 113, 224, 201, 200, 203, 202, 200, 201, 199, 191, 200, 201, 201, 202, 201, 205, 191, 198, 203, 206, 200, 191, 202, 200, 202, 198, 202, 203, 191, 203, 206, 201, 190, 204, 203, 194, 204, 203, 193, 203, 199, 200, 202, 201, 202, 205, 200, 198, 191, 206, 270, 199, 197, 208, 197, 200, 196, 200, 207, 198, 198, 198, 199, 208, 197, 201, 198, 199, 198, 206, 200, 196, 197, 206, 196, 196, 206, 195, 207, 196, 206, 197, 195, 207, 196, 197, 207, 197, 203, 193, 203, 203, 193, 204, 203, 195, 204, 203, 194, 204, 194, 204, 203, 193, 204, 195, 204, 204, 194, 204, 194, 205, 204, 194, 205, 196, 204, 194, 205, 195, 197, 210, 198, 198, 198, 199, 199, 199, 199, 207, 203, 200, 199, 199, 199, 201, 199, 199, 196, 206, 195, 206, 195, 207, 195, 201, 197, 206, 198, 194, 201, 200, 206, 194, 205, 195, 204, 194, 205, 195, 205, 195, 204, 206, 193, 198, 203, 195, 206, 195, 207, 195, 205, 194, 206, 197, 206, 194, 196, 207, 195, 206, 196, 201, 200, 198, 206, 196, 11], "killed_ms": 61203, "recovery": {"steady_per_100ms": 199.9, "silent_100ms_steps": 0, "caught_up_ms": 3100}, "applied": 160006, "listener": {"listener_packets": 75242, "listener_received": 37621, "listener_deliveries": 37621, "listener_woken": 10000, "listener_remembered": 10000, "listener_swept": 0, "listener_active": 10000, "listener_keyed": 10000, "listener_secrets": 0, "listener_epochs": 0}}}
+{"kind":"restart","round":1,"row":{"devices": 10000, "period_ms": 5000, "memo": true, "moved": false, "restart_ms": 18.4, "steady_cpu_ms_per_s": 90.0, "senders_steady_cpu_ms_per_s": 60.0, "recovery_cpu_ms_first_10s": 1170.0, "senders_cpu_ms_first_10s": 720.0, "generator": {"devices": 10000, "made": 160010, "stored": 160010, "sends": 160043, "again": 33, "stored_ms_p50": 0.623, "stored_ms_p99": 5.09, "stored_ms_max": 36.107, "longest_gap_ms": 0, "gap_from_ms": 0, "keyed": 50000, "secrets": 0, "epochs": 10000, "p50_ms_by_second_made": [4.77, 4.61, 4.66, 4.7, 4.53, 0.76, 0.81, 0.82, 1.29, 1.46, 0.8, 0.77, 0.79, 0.88, 0.97, 1.21, 1.16, 0.8, 0.84, 0.92, 0.75, 0.9, 1.32, 1.33, 1.37, 1.23, 1.23, 1.31, 1.33, 1.39, 1.12, 1.21, 1.23, 0.89, 0.88, 0.71, 0.72, 0.8, 1.14, 1.17, 0.4, 0.43, 0.45, 0.47, 0.52, 0.38, 0.39, 0.42, 0.45, 0.35, 0.29, 0.31, 0.35, 0.35, 0.47, 0.37, 0.39, 0.42, 0.47, 0.35, 0.28, 0.55, 0.59, 0.62, 0.86, 0.54, 0.34, 0.34, 0.36, 0.4, 0.38, 0.3, 0.32, 0.35, 0.36, 0.38, 0.39, 0.42, 0.44, 0.46, 0.37], "p99_ms_by_second_made": [8.02, 5.72, 7.88, 6.01, 5.72, 1.5, 1.63, 1.25, 1.76, 3.4, 2.22, 1.16, 1.32, 1.97, 1.62, 1.57, 2.1, 1.28, 1.25, 1.47, 1.23, 1.56, 1.74, 1.82, 1.88, 1.68, 1.71, 1.77, 1.81, 1.84, 1.7, 2.09, 2.66, 1.38, 1.35, 1.27, 1.61, 1.9, 2.4, 2.09, 0.76, 0.77, 0.86, 0.75, 2.92, 0.82, 0.88, 0.73, 1.22, 0.64, 0.53, 0.63, 6.66, 0.86, 0.76, 0.91, 0.72, 0.76, 0.97, 0.59, 0.57, 35.48, 0.84, 1.04, 1.78, 0.92, 0.82, 0.64, 0.7, 0.78, 1.73, 0.71, 0.59, 0.69, 0.84, 2.13, 0.86, 1.01, 0.79, 0.78, 0.55]}, "timeline_100ms": [181, 206, 186, 208, 207, 189, 198, 197, 219, 185, 216, 196, 190, 207, 198, 200, 189, 213, 197, 202, 193, 205, 206, 192, 207, 197, 201, 194, 214, 186, 200, 203, 208, 192, 207, 199, 203, 190, 199, 200, 193, 211, 188, 223, 181, 218, 192, 202, 196, 192, 221, 202, 190, 203, 203, 202, 191, 204, 202, 204, 191, 206, 203, 199, 191, 202, 203, 204, 192, 205, 205, 192, 204, 194, 204, 205, 194, 197, 202, 206, 200, 195, 194, 208, 194, 208, 195, 199, 196, 201, 208, 194, 200, 198, 209, 198, 201, 199, 195, 194, 210, 204, 201, 191, 201, 201, 201, 204, 201, 191, 203, 203, 204, 193, 202, 202, 203, 192, 202, 204, 193, 205, 204, 193, 205, 193, 204, 195, 204, 206, 195, 206, 192, 207, 194, 206, 195, 194, 206, 195, 207, 195, 207, 199, 193, 197, 209, 195, 207, 197, 194, 205, 204, 192, 201, 203, 194, 204, 204, 202, 195, 203, 193, 209, 191, 207, 200, 192, 212, 190, 204, 203, 192, 205, 204, 193, 205, 195, 204, 194, 205, 195, 206, 193, 207, 194, 206, 195, 206, 194, 208, 195, 205, 192, 205, 194, 208, 196, 195, 207, 194, 204, 201, 203, 202, 191, 202, 206, 191, 202, 203, 204, 192, 205, 202, 193, 203, 197, 204, 204, 195, 195, 207, 196, 205, 194, 198, 209, 193, 207, 196, 199, 196, 199, 209, 194, 209, 197, 193, 208, 196, 195, 209, 198, 194, 209, 198, 201, 196, 198, 208, 193, 204, 192, 209, 194, 207, 193, 204, 193, 205, 195, 203, 196, 206, 195, 206, 196, 207, 194, 196, 207, 195, 207, 195, 197, 200, 209, 196, 196, 206, 197, 198, 200, 198, 200, 209, 201, 196, 196, 198, 208, 196, 198, 198, 198, 201, 199, 210, 200, 196, 204, 195, 198, 200, 204, 197, 199, 203, 205, 198, 199, 203, 194, 201, 197, 209, 196, 194, 199, 207, 197, 197, 200, 208, 194, 207, 193, 206, 194, 207, 195, 202, 204, 194, 196, 209, 196, 197, 206, 195, 207, 194, 196, 207, 197, 196, 211, 195, 196, 208, 191, 200, 201, 202, 200, 203, 202, 202, 189, 204, 201, 199, 204, 203, 191, 203, 203, 203, 202, 191, 201, 204, 194, 209, 193, 201, 203, 191, 206, 192, 208, 196, 207, 192, 204, 194, 211, 193, 207, 195, 197, 204, 194, 207, 193, 210, 197, 194, 207, 203, 200, 198, 201, 199, 199, 199, 202, 200, 200, 199, 200, 200, 202, 200, 200, 202, 190, 202, 202, 200, 204, 200, 192, 200, 201, 201, 203, 201, 202, 201, 192, 200, 203, 201, 202, 202, 192, 202, 203, 202, 192, 202, 205, 191, 209, 195, 198, 202, 205, 203, 198, 199, 200, 198, 198, 199, 202, 198, 200, 198, 200, 201, 202, 198, 199, 210, 199, 199, 200, 199, 200, 199, 202, 200, 199, 202, 200, 200, 191, 201, 201, 200, 203, 200, 200, 202, 194, 201, 200, 207, 196, 196, 209, 197, 196, 199, 208, 197, 199, 199, 201, 205, 196, 194, 205, 195, 206, 194, 206, 195, 207, 195, 196, 206, 195, 207, 196, 205, 196, 197, 206, 195, 193, 210, 196, 199, 200, 207, 196, 207, 196, 196, 201, 199, 204, 197, 197, 208, 192, 200, 202, 201, 203, 202, 201, 190, 204, 201, 203, 199, 198, 198, 201, 198, 205, 203, 199, 198, 200, 199, 198, 198, 200, 199, 199, 210, 200, 200, 191, 209, 189, 203, 200, 199, 199, 201, 200, 200, 203, 200, 201, 200, 203, 201, 201, 190, 200, 202, 208, 196, 198, 206, 198, 196, 197, 208, 197, 197, 199, 205, 194, 205, 195, 205, 205, 194, 205, 194, 201, 200, 174, 228, 194, 204, 203, 193, 204, 203, 194, 205, 193, 204, 206, 194, 205, 193, 205, 193, 207, 194, 205, 194, 207, 194, 206, 194, 206, 199, 193, 203, 204, 203, 197, 202, 201, 189, 201, 201, 208, 192, 204, 203, 194, 204, 203, 192, 203, 203, 193, 204, 206, 196, 197, 209, 195, 195, 207, 196, 198, 206, 196, 197, 209, 198, 196, 197, 208, 195, 198, 208, 197, 198, 199, 197, 208, 197, 197, 206, 201, 198, 197, 197, 199, 209, 197, 198, 201, 202, 194, 199, 199, 200, 210, 192, 205, 196, 206, 195, 201, 196, 206, 195, 208, 195, 206, 195, 195, 206, 198, 196, 205, 196, 208, 197, 196, 206, 195, 198, 207, 199, 196, 197, 209, 197, 196, 208, 196, 197, 198, 208, 196, 196, 201, 197, 208, 198, 197, 198, 209, 195, 205, 190, 206, 190, 204, 210, 199, 198, 201, 198, 198, 197, 202, 200, 199, 199, 200, 209, 191, 201, 199, 201, 208, 200, 200, 190, 201, 199, 203, 201, 200, 201, 202, 201, 201, 196, 196, 200, 203, 201, 201, 200, 203, 190, 201, 203, 201, 202, 203, 12], "killed_ms": 61202, "recovery": {"steady_per_100ms": 199.5, "silent_100ms_steps": 0, "caught_up_ms": 200}, "applied": 160010, "listener": {"listener_packets": 75284, "listener_received": 37642, "listener_deliveries": 37642, "listener_woken": 10000, "listener_remembered": 10000, "listener_swept": 0, "listener_active": 10000, "listener_keyed": 10000, "listener_secrets": 0, "listener_epochs": 0}}}
+{"kind":"move","round":2,"row":{"devices": 10000, "period_ms": 5000, "memo": true, "moved": true, "restart_ms": 23.5, "steady_cpu_ms_per_s": 80.0, "senders_steady_cpu_ms_per_s": 60.0, "recovery_cpu_ms_first_10s": 1080.0, "senders_cpu_ms_first_10s": 890.0, "generator": {"devices": 10000, "made": 160011, "stored": 160011, "sends": 170033, "again": 10022, "stored_ms_p50": 0.654, "stored_ms_p99": 35.593, "stored_ms_max": 106.829, "longest_gap_ms": 0, "gap_from_ms": 0, "keyed": 50000, "secrets": 0, "epochs": 10000, "p50_ms_by_second_made": [4.66, 4.68, 4.71, 4.68, 4.72, 0.69, 0.95, 1.26, 1.26, 1.33, 1.18, 1.23, 0.93, 0.75, 0.8, 0.67, 0.7, 0.96, 1.28, 1.31, 1.09, 1.21, 1.27, 1.28, 1.33, 1.19, 1.24, 1.25, 0.99, 0.79, 0.68, 0.72, 0.75, 1.05, 1.21, 0.88, 0.69, 0.7, 0.74, 0.75, 0.29, 0.36, 0.39, 0.41, 0.38, 0.24, 0.27, 0.32, 0.3, 0.39, 0.31, 0.34, 0.37, 0.38, 0.41, 0.31, 0.33, 0.35, 0.4, 0.41, 0.29, 34.59, 34.61, 34.77, 34.86, 35.59, 0.39, 0.37, 0.4, 0.43, 0.31, 0.32, 0.35, 0.37, 0.41, 0.3, 0.31, 0.27, 0.3, 0.32, 0.25], "p99_ms_by_second_made": [5.22, 5.19, 5.12, 5.62, 5.57, 1.39, 1.74, 1.93, 1.78, 1.86, 1.9, 1.8, 3.33, 1.33, 1.28, 1.14, 1.74, 1.75, 1.93, 1.85, 1.77, 1.86, 1.88, 1.93, 1.79, 1.99, 1.91, 1.9, 2.28, 1.37, 1.39, 1.22, 1.42, 1.86, 1.85, 2.08, 1.58, 1.56, 1.48, 1.63, 0.61, 0.72, 0.74, 0.72, 1.08, 0.65, 1.56, 1.13, 0.51, 0.66, 0.6, 0.62, 0.67, 0.72, 0.71, 0.6, 0.68, 0.63, 0.75, 0.76, 1.24, 106.14, 40.55, 35.57, 37.07, 36.51, 36.79, 0.71, 0.69, 0.78, 0.65, 0.64, 0.61, 0.73, 0.62, 0.92, 1.59, 0.53, 0.59, 0.57, 0.27]}, "timeline_100ms": [174, 199, 203, 214, 201, 197, 199, 199, 199, 198, 200, 198, 200, 198, 201, 204, 194, 200, 202, 197, 200, 205, 195, 200, 201, 202, 198, 199, 206, 183, 217, 198, 197, 198, 213, 197, 198, 201, 205, 182, 201, 202, 198, 202, 201, 202, 204, 199, 205, 205, 200, 200, 199, 200, 202, 201, 201, 200, 204, 190, 201, 202, 201, 200, 205, 194, 203, 195, 197, 208, 193, 208, 196, 195, 208, 194, 208, 196, 197, 207, 197, 194, 209, 194, 206, 195, 206, 199, 198, 200, 192, 209, 196, 195, 210, 200, 194, 199, 200, 208, 191, 203, 206, 190, 207, 200, 202, 191, 206, 203, 191, 200, 205, 206, 191, 203, 205, 192, 197, 204, 197, 207, 194, 202, 202, 203, 203, 190, 204, 204, 193, 203, 202, 203, 193, 206, 203, 191, 207, 195, 204, 192, 207, 204, 191, 205, 204, 192, 196, 207, 201, 199, 199, 199, 201, 202, 199, 199, 201, 201, 201, 202, 199, 199, 201, 192, 204, 200, 205, 190, 203, 203, 203, 190, 208, 195, 205, 193, 207, 197, 195, 207, 193, 206, 196, 199, 205, 195, 198, 208, 195, 207, 195, 207, 196, 196, 207, 197, 197, 195, 205, 203, 202, 191, 207, 203, 191, 205, 205, 189, 204, 204, 193, 202, 205, 193, 206, 195, 208, 190, 210, 192, 208, 191, 208, 194, 197, 204, 203, 195, 208, 190, 208, 196, 196, 208, 194, 196, 210, 195, 200, 197, 208, 196, 198, 198, 205, 195, 210, 197, 191, 204, 205, 204, 191, 205, 192, 204, 206, 192, 205, 203, 193, 206, 192, 206, 193, 209, 196, 205, 196, 195, 207, 204, 194, 195, 205, 195, 207, 195, 204, 195, 202, 203, 205, 193, 203, 203, 196, 194, 206, 203, 194, 204, 195, 204, 205, 193, 196, 206, 203, 202, 198, 193, 199, 202, 202, 204, 191, 203, 203, 202, 202, 192, 201, 202, 203, 202, 192, 203, 202, 196, 201, 202, 205, 192, 203, 205, 193, 205, 195, 204, 203, 196, 199, 196, 206, 193, 198, 211, 198, 195, 197, 206, 196, 207, 192, 207, 199, 197, 206, 198, 201, 200, 193, 209, 201, 188, 201, 201, 200, 201, 200, 199, 201, 201, 199, 200, 202, 200, 205, 199, 201, 200, 201, 199, 201, 201, 189, 200, 201, 202, 202, 201, 202, 199, 202, 202, 192, 201, 205, 201, 190, 202, 205, 200, 194, 203, 204, 192, 207, 204, 193, 203, 204, 195, 197, 206, 199, 197, 198, 207, 196, 197, 198, 208, 198, 198, 199, 200, 199, 200, 208, 198, 198, 198, 200, 198, 201, 199, 199, 199, 210, 198, 199, 199, 200, 200, 201, 201, 201, 197, 200, 198, 198, 207, 196, 197, 209, 197, 194, 203, 203, 193, 203, 203, 194, 203, 206, 194, 204, 194, 203, 203, 194, 204, 201, 197, 202, 200, 198, 201, 196, 205, 194, 205, 203, 197, 195, 205, 196, 206, 194, 205, 195, 206, 194, 206, 196, 206, 197, 194, 208, 199, 199, 201, 199, 200, 201, 199, 197, 206, 195, 206, 195, 196, 205, 196, 204, 201, 197, 197, 207, 197, 196, 207, 197, 198, 198, 207, 198, 198, 197, 208, 198, 197, 198, 208, 199, 199, 199, 198, 197, 198, 209, 197, 200, 198, 199, 201, 200, 200, 200, 199, 198, 200, 201, 200, 200, 199, 208, 196, 195, 206, 196, 206, 196, 207, 196, 198, 197, 207, 196, 197, 206, 195, 200, 197, 210, 196, 200, 197, 198, 207, 198, 197, 198, 208, 199, 198, 199, 198, 198, 202, 206, 198, 199, 199, 204, 199, 200, 199, 199, 198, 199, 200, 203, 200, 200, 199, 197, 204, 195, 203, 197, 205, 204, 193, 204, 203, 194, 172, 146, 214, 206, 192, 207, 192, 209, 191, 206, 193, 205, 205, 193, 204, 194, 204, 191, 208, 195, 205, 205, 194, 206, 194, 197, 207, 193, 207, 197, 206, 194, 206, 192, 206, 193, 207, 196, 207, 195, 193, 206, 205, 197, 199, 201, 201, 200, 199, 191, 227, 247, 196, 210, 197, 197, 198, 198, 208, 199, 198, 198, 197, 209, 198, 199, 202, 200, 198, 200, 199, 199, 198, 199, 209, 199, 199, 202, 200, 201, 198, 200, 200, 199, 200, 200, 200, 201, 200, 198, 195, 208, 196, 195, 207, 196, 197, 208, 196, 198, 207, 196, 195, 207, 195, 208, 195, 198, 197, 209, 197, 199, 198, 203, 201, 197, 196, 209, 197, 199, 197, 198, 209, 198, 198, 199, 199, 199, 199, 200, 198, 210, 199, 199, 199, 199, 199, 199, 199, 203, 199, 195, 206, 195, 207, 196, 206, 198, 195, 197, 209, 200, 201, 195, 204, 193, 204, 194, 204, 206, 194, 205, 194, 204, 204, 194, 203, 195, 205, 195, 205, 194, 205, 195, 207, 195, 205, 196, 196, 207, 195, 207, 194, 207, 196, 195, 206, 196, 207, 11], "killed_ms": 61202, "recovery": {"steady_per_100ms": 199.3, "silent_100ms_steps": 0, "caught_up_ms": 1400}, "applied": 160011, "listener": {"listener_packets": 75292, "listener_received": 37646, "listener_deliveries": 37646, "listener_woken": 10000, "listener_remembered": 10000, "listener_swept": 0, "listener_active": 10000, "listener_keyed": 10000, "listener_secrets": 0, "listener_epochs": 0}}}
+{"kind":"restart","round":2,"row":{"devices": 10000, "period_ms": 5000, "memo": true, "moved": false, "restart_ms": 18.5, "steady_cpu_ms_per_s": 80.0, "senders_steady_cpu_ms_per_s": 60.0, "recovery_cpu_ms_first_10s": 1400.0, "senders_cpu_ms_first_10s": 830.0, "generator": {"devices": 10000, "made": 160006, "stored": 160006, "sends": 160039, "again": 33, "stored_ms_p50": 0.671, "stored_ms_p99": 5.036, "stored_ms_max": 38.696, "longest_gap_ms": 0, "gap_from_ms": 0, "keyed": 50000, "secrets": 0, "epochs": 10000, "p50_ms_by_second_made": [4.77, 4.77, 4.65, 4.68, 4.66, 0.75, 0.78, 0.81, 1.22, 0.86, 0.69, 0.74, 0.9, 0.95, 1.36, 1.2, 1.32, 1.33, 1.36, 1.39, 1.25, 1.24, 1.28, 1.34, 0.99, 0.73, 0.75, 0.79, 0.98, 1.34, 1.15, 1.16, 1.27, 1.32, 1.32, 0.96, 1.06, 1.1, 1.14, 1.1, 0.4, 0.31, 0.32, 0.35, 0.36, 0.28, 0.38, 0.39, 0.42, 0.44, 0.36, 0.38, 0.4, 0.42, 0.44, 0.36, 0.39, 0.3, 0.33, 0.36, 0.27, 0.56, 0.83, 0.86, 0.88, 0.76, 0.44, 0.43, 0.47, 0.48, 0.39, 0.4, 0.47, 0.33, 0.35, 0.28, 0.3, 0.36, 0.43, 0.57, 0.52], "p99_ms_by_second_made": [6.09, 5.23, 5.22, 9.28, 5.78, 1.66, 1.16, 1.24, 2.08, 1.23, 1.21, 1.17, 2.26, 1.59, 1.79, 1.61, 1.65, 1.62, 1.75, 1.93, 1.7, 1.71, 1.95, 3.07, 1.86, 1.16, 1.19, 1.25, 1.68, 1.79, 1.7, 1.76, 1.9, 1.84, 1.67, 2.18, 2.08, 2.49, 2.3, 2.31, 1.33, 0.6, 0.62, 0.71, 0.69, 0.56, 0.74, 0.73, 0.79, 0.74, 0.62, 1.04, 0.8, 0.92, 0.74, 0.65, 1.14, 0.62, 0.55, 0.73, 0.59, 38.04, 1.12, 1.13, 1.2, 1.19, 0.97, 0.81, 0.82, 0.8, 0.76, 0.72, 1.39, 0.65, 0.64, 0.62, 0.63, 0.65, 0.78, 1.09, 0.61]}, "timeline_100ms": [179, 203, 206, 185, 213, 188, 203, 209, 202, 184, 205, 205, 210, 186, 205, 207, 188, 207, 194, 202, 203, 207, 186, 207, 188, 207, 213, 183, 213, 187, 212, 189, 205, 201, 206, 198, 201, 198, 203, 185, 215, 186, 218, 184, 214, 198, 202, 199, 189, 212, 200, 201, 202, 201, 195, 202, 204, 202, 192, 203, 203, 201, 193, 203, 203, 193, 203, 203, 204, 190, 203, 205, 193, 203, 196, 203, 205, 193, 203, 206, 193, 201, 196, 206, 194, 208, 195, 196, 200, 210, 195, 204, 195, 206, 193, 207, 194, 205, 194, 207, 201, 200, 191, 209, 190, 200, 202, 201, 201, 202, 202, 202, 191, 204, 203, 193, 204, 203, 192, 203, 204, 203, 186, 206, 200, 204, 204, 192, 204, 194, 204, 204, 192, 206, 194, 204, 207, 193, 201, 196, 197, 205, 196, 207, 195, 197, 208, 196, 197, 200, 204, 203, 203, 190, 207, 202, 191, 205, 202, 193, 205, 205, 193, 204, 193, 202, 207, 195, 203, 193, 204, 195, 206, 206, 196, 194, 207, 194, 206, 195, 198, 206, 196, 196, 209, 193, 207, 202, 196, 195, 204, 203, 196, 207, 189, 206, 198, 196, 208, 196, 196, 203, 206, 191, 209, 192, 206, 203, 194, 207, 191, 201, 205, 195, 204, 192, 208, 193, 206, 196, 206, 194, 207, 194, 198, 203, 196, 208, 192, 207, 195, 206, 197, 197, 198, 205, 197, 200, 207, 197, 202, 193, 204, 196, 206, 195, 205, 196, 198, 206, 203, 191, 201, 202, 204, 202, 191, 201, 203, 204, 193, 204, 203, 203, 193, 204, 203, 192, 205, 192, 204, 207, 191, 205, 194, 203, 195, 205, 206, 191, 207, 194, 204, 194, 207, 195, 205, 191, 211, 198, 197, 206, 193, 199, 198, 209, 195, 199, 199, 207, 193, 207, 191, 206, 194, 204, 205, 197, 193, 207, 192, 208, 194, 207, 194, 205, 193, 209, 195, 205, 192, 199, 210, 196, 197, 198, 198, 207, 199, 197, 201, 197, 208, 197, 199, 195, 205, 200, 196, 211, 194, 196, 198, 207, 201, 195, 196, 211, 195, 198, 207, 201, 201, 191, 207, 199, 198, 205, 199, 191, 204, 195, 202, 205, 204, 191, 201, 206, 198, 194, 205, 198, 201, 204, 197, 204, 192, 208, 192, 206, 192, 206, 194, 203, 207, 193, 204, 196, 209, 191, 207, 195, 189, 207, 206, 193, 206, 198, 204, 194, 203, 198, 199, 209, 199, 197, 198, 199, 204, 200, 195, 205, 195, 206, 197, 206, 195, 196, 206, 196, 205, 197, 196, 207, 198, 195, 207, 197, 196, 207, 197, 198, 197, 208, 199, 197, 197, 209, 197, 196, 197, 208, 197, 197, 199, 208, 197, 198, 198, 207, 195, 204, 194, 205, 195, 205, 194, 205, 195, 207, 201, 198, 199, 198, 201, 197, 198, 201, 209, 200, 198, 199, 200, 198, 202, 200, 199, 200, 199, 199, 201, 200, 200, 199, 202, 200, 199, 200, 201, 200, 201, 201, 200, 201, 191, 201, 201, 202, 200, 201, 197, 199, 207, 197, 199, 198, 208, 198, 198, 198, 199, 198, 207, 201, 200, 198, 198, 204, 197, 199, 199, 198, 199, 199, 203, 199, 199, 201, 199, 200, 200, 201, 203, 199, 202, 199, 200, 201, 201, 199, 200, 201, 201, 201, 191, 201, 200, 202, 200, 201, 198, 198, 208, 199, 199, 198, 198, 199, 208, 197, 198, 198, 208, 199, 199, 199, 197, 197, 198, 201, 205, 205, 194, 206, 197, 194, 205, 198, 206, 195, 196, 207, 195, 208, 196, 196, 206, 197, 197, 207, 196, 197, 207, 197, 198, 197, 207, 198, 197, 199, 205, 194, 204, 204, 196, 194, 205, 197, 204, 196, 203, 205, 199, 193, 198, 203, 205, 193, 204, 199, 202, 202, 191, 201, 203, 202, 203, 192, 202, 203, 204, 191, 202, 203, 193, 203, 203, 204, 191, 204, 204, 192, 204, 203, 194, 203, 204, 193, 205, 194, 200, 200, 200, 205, 198, 200, 200, 201, 200, 202, 200, 202, 202, 199, 202, 199, 199, 201, 200, 201, 199, 201, 199, 201, 191, 204, 199, 202, 201, 200, 202, 200, 192, 201, 204, 202, 200, 192, 202, 203, 202, 201, 202, 191, 203, 201, 202, 203, 191, 204, 198, 199, 199, 209, 190, 211, 198, 200, 199, 200, 199, 200, 199, 199, 201, 199, 199, 199, 199, 200, 200, 200, 200, 200, 198, 209, 201, 193, 198, 199, 209, 196, 196, 209, 198, 196, 203, 200, 196, 198, 207, 197, 197, 208, 198, 197, 197, 208, 196, 198, 205, 194, 205, 195, 206, 194, 207, 195, 204, 195, 204, 195, 205, 196, 197, 205, 196, 207, 194, 206, 196, 206, 195, 196, 207, 199, 200, 200, 200, 200, 200, 201, 200, 201, 190, 200, 200, 202, 200, 203, 201, 201, 193, 204, 199, 197, 208, 196, 196, 206, 11], "killed_ms": 61202, "recovery": {"steady_per_100ms": 200.2, "silent_100ms_steps": 0, "caught_up_ms": 400}, "applied": 160006, "listener": {"listener_packets": 75192, "listener_received": 37596, "listener_deliveries": 37596, "listener_woken": 10000, "listener_remembered": 10000, "listener_swept": 0, "listener_active": 10000, "listener_keyed": 10000, "listener_secrets": 0, "listener_epochs": 0}}}