From bde7c586a054e4bce18f70fc503ef8413711b8cd Mon Sep 17 00:00:00 2001 From: eunhhu Date: Mon, 28 Sep 2026 11:26:44 +0100 Subject: Measure TPC-C again with compact log records --- CHECKPOINT.md | 2 +- README.md | 4 +- docs/research/092-tpcc.md | 43 ++++++++++++---------- .../2026-09-28-tpcc-ram-linux-aarch64.jsonl | 12 +++--- .../2026-09-28-tpcc-sd-linux-aarch64.jsonl | 12 +++--- 5 files changed, 39 insertions(+), 34 deletions(-) diff --git a/CHECKPOINT.md b/CHECKPOINT.md index 1a3bd8b..91d8e7f 100644 --- a/CHECKPOINT.md +++ b/CHECKPOINT.md @@ -19,7 +19,7 @@ | 성능(Pi 5) | 2026-09-27, 같은 기기에서 axum·drogon과 함께 쟀다. 문서 서버(한 스레드): 64 B GET 139k/s(CPU 1초당 140k; axum 127k·63k, drogon 147k·63k), 1 MiB GET 2,362/s(axum 1,304, drogon 754), 충돌 안전 PUT은 axum-atomic의 5.1–5.8배. 앱 서비스: 내구성 있는 쓰기 64연결 21.3k/s(axum·drogon 내구 약 200/s), 합계 GET 126k/s·두 스레드 153k(axum 136k, drogon 151k), 20행 페이지 두 스레드 148k(axum 93k, drogon 138k), 쓰기와 섞인 읽기 119k/s(axum·drogon 내구 1.1–1.4k/s). 유휴 RSS 2.3 MiB(axum 2.8, drogon 10.9), 최대 3.2–5.8 MiB(axum 6.6–9.7, drogon 11.9–78.8) | [075](docs/research/075-http-host-against-axum.md), [077](docs/research/077-apps-as-http-services.md), [080](docs/research/080-snapshot-reads.md), [081](docs/research/081-tail-records.md), [087](docs/research/087-small-reads-and-idle-memory.md) | | 표면과 메신저 | 사람을 위한 표면이 노드 안에서 돈다(`pure-serve --surface`): 마지막 저장의 스냅숏을 제자리에서 읽고, 친 키와 글자는 HTTP 요청과 같은 줄로 소유자에게 간다. Vega의 디스플레이·픽셀이 그 표면이다. 두 노드의 메신저(Vega `examples/messenger.aup`)는 서로에게 봉인·인증해 보내고, 한 줄이 상대 노드에 보이기까지 RAM 저장소에서 p50 0.79 ms·p99 1.1 ms, SD 카드에서 p50 3.5 ms(꼬리는 SD의 동기화) | [설계 010](docs/design/010-surfaces.md), [089](docs/research/089-messenger.md) | | 표 크기의 상태 | 목록이 영속 B+트리다(변경·키 탐색·저장본 위치 O(log n), 스냅숏 O(1), 1,600만 항목, 런타임 상태 1 GiB). pgbench의 TPC-B 같은 이체(세 표의 행과 이력, 한 트랜잭션)가 10만 계좌에서 RAM 24.5k/s(전: 3만 계좌 3.2k/s), SD 카드 내구 1,339/s(SQLite WAL FULL 84–153/s) | [090](docs/research/090-tables.md) | -| 일반 트랜잭션 | TPC-C의 다섯 트랜잭션을 aup 앱 하나로 쓴다(여러 표 읽기·쓰기, 조각 훑기, 중복 없는 셈, 실패하면 통째 되돌림). 같은 입력에서 SQLite와 아홉 표의 모든 행이 같다. W=1에서 RAM 초당 39,449건(SQLite FULL 9,493, 트랜잭션당 CPU 45.5–50 µs, HTTP·JSON 포함), SD 카드 내구 3,073건(SQLite FULL 55, NORMAL 372) | [092](docs/research/092-tpcc.md) | +| 일반 트랜잭션 | TPC-C의 다섯 트랜잭션을 aup 앱 하나로 쓴다(여러 표 읽기·쓰기, 조각 훑기, 중복 없는 셈, 실패하면 통째 되돌림). 같은 입력에서 SQLite와 아홉 표의 모든 행이 같다. W=1에서 RAM 초당 39,977건(SQLite FULL 9,529, 트랜잭션당 CPU 44–49 µs, HTTP·JSON 포함), SD 카드 내구 4,502건(SQLite FULL 50, NORMAL 372) | [092](docs/research/092-tpcc.md) | | 질의 | 질의는 앱의 상태 위에 보기를 더한 모듈이다(`aup query`, `PUT·GET /queries/이름`). 검증한 뒤 스냅숏에서 돌고, 열 안의 fold가 그 행을 읽는다(상관 부질의). 잎이 항목을 필드별로 들고, fold와 필터는 잎 하나씩 돌며(결함이 날 잎만 항목별로), 열 안의 그룹·순위 fold는 목록을 한 번 지나 모든 행에 답한다. 10만 계좌에서 지점별 합계 4.9 ms(SQLite 45, 인덱스를 주면 14.3), 조인 0.48 ms(1.47), 자기 조인 순위 6.8 ms(2,840, 인덱스를 주면 7.6). Pure에는 인덱스 선언이 없다 | [091](docs/research/091-queries.md) | 키로 나눈 소유자와 저장을 넘길 스레드는 하지 않기로 했다. 이 장치는 동기화를 한 줄로 세워, 나누면 쓰기가 23% 줄고 넘겨도 diff --git a/README.md b/README.md index 79a350b..54b7987 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ their own (`aup query`), verified when registered and shown from snapshots. Fold fold in a table's column is answered for every row from one pass over its list, so on pgbench's tables of 100,000 accounts a group-by, a join and a correlated rank run 3–420x faster than on SQLite, and faster than SQLite given a DBA's indexes but for one count, with no index declared. TPC-C's five transactions, written as one aup app, leave -SQLite's state row for row from the same inputs, and run 4x faster than SQLite in RAM (39,449 against 9,493 a -second, HTTP and JSON included) and 56x faster on an SD card (3,073 against 55), both syncing each commit +SQLite's state row for row from the same inputs, and run 4x faster than SQLite in RAM (39,977 against 9,529 a +second, HTTP and JSON included) and 90x faster on an SD card (4,502 against 50), both syncing each commit ([092](docs/research/092-tpcc.md)). Measurements against axum and drogon on a Raspberry Pi 5 are in [075](docs/research/075-http-host-against-axum.md), [077](docs/research/077-apps-as-http-services.md), [080](docs/research/080-snapshot-reads.md), [081](docs/research/081-tail-records.md), diff --git a/docs/research/092-tpcc.md b/docs/research/092-tpcc.md index fec38f4..247c189 100644 --- a/docs/research/092-tpcc.md +++ b/docs/research/092-tpcc.md @@ -1,4 +1,4 @@ -# 092 — TPC-C: 같은 트랜잭션, 같은 상태, RAM에서 SQLite의 4배, SD 카드에서 56배 +# 092 — TPC-C: 같은 트랜잭션, 같은 상태, RAM에서 SQLite의 4배, SD 카드에서 90배 2026-09-28. 외부 피드백 002의 둘째 항목(범용성)의 마지막 조각. [090](090-tables.md)이 표 크기의 상태와 한 트랜잭션, [091](091-queries.md)이 임의 질의를 세웠다면, 여기서는 OLTP의 표준 부하인 TPC-C의 다섯 트랜잭션(New-Order, Payment, @@ -138,6 +138,12 @@ libc의 memcpy가 41%였고, 트리 저장소의 편집(`chunk_bytes`, `children 죽여도, 다시 시작하면 전부 이전 아니면 전부 이후다. 실패(죽지 않고)는 그 저장만 없던 일이 되고, 불확실은 다시 시작할 때까지 저장을 막는다. 이전 형식(`PLS1`, `PLS2`)의 저장소는 시작할 때 이미지로 옮겨진다. +**7. 기록을 작게.** 첫 SD 측정의 로그는 트랜잭션당 약 0.52 KB였고, 이 카드의 지속 쓰기(초당 3–8 MB)가 한계였다. 수가 +모두 binary64(8바이트)로 적혔지만 TPC-C의 값은 대부분 작은 정수다. 기록은 이제 위치를 varint로, 크기가 2^53 미만인 +정수를 zigzag varint로, 그 밖의 수를 표시 1바이트와 8바이트로, text 길이를 varint로 적는다. 주문 줄 삽입은 53바이트에서 약 +24바이트로, 재고 필드 설정은 14바이트에서 약 7바이트로 준다. 수는 비트 그대로 돌아온다(-0, 2^53의 경계, 비정규 수까지). +기록이 항목보다 작아져 뒤에 붙기만 하는 목록은 기록 크기 규칙에 닿지 않는다. 그런 목록의 이미지는 로그 크기 규칙이 쓴다. + ## 측정 W=1(창고 하나, 초기 행 약 57만), Raspberry Pi 5(4코어), 서버는 코어 0–2, Pure의 부하 생성기 @@ -148,36 +154,35 @@ W=1(창고 하나, 초기 행 약 57만), Raspberry Pi 5(4코어), 서버는 코 | | 초당 트랜잭션 | 분당 New-Order | New-Order p50 / p99 | 트랜잭션당 서버 CPU | |---|---:|---:|---:|---:| -| Pure, 16터미널 | 35,863 | 959,979 | 0.45 / 1.3 ms | 45.5 µs | -| Pure, 64터미널 | 38,564 | 1,031,566 | 1.7 / 3.8 ms | 48.7 µs | -| Pure, 128터미널 | **39,449** | 1,052,334 | 3.3 / 7.4 ms | 50.0 µs | -| SQLite FULL, 1스레드 | 9,493 | 254,310 | 0.15 / 1.2 ms | | -| SQLite FULL, 4스레드 | 9,141 | 244,796 | 0.16 / 1.2 ms | | +| Pure, 16터미널 | 36,697 | 982,183 | 0.45 / 1.0 ms | 44.3 µs | +| Pure, 64터미널 | 38,509 | 1,029,948 | 1.7 / 4.1 ms | 47.3 µs | +| Pure, 128터미널 | **39,977** | 1,066,231 | 3.2 / 6.7 ms | 49.2 µs | +| SQLite FULL, 1스레드 | 9,529 | 255,250 | 0.15 / 1.1 ms | | +| SQLite FULL, 4스레드 | 9,037 | 242,158 | 0.16 / 1.2 ms | | -16터미널은 바꾸기 전 4,858건에서 7.4배가 됐다. 트랜잭션당 CPU는 213 µs에서 45.5 µs로 줄었다. 이 CPU에는 HTTP와 JSON이 -들어 있다. 적재(57만 행)는 Pure 0.72초(이진 행을 한 요청에 1.4 MB씩), SQLite 1.56초(파이썬 `executemany`)다. +16터미널은 바꾸기 전 4,858건에서 7.6배가 됐다. 트랜잭션당 CPU는 213 µs에서 44.3 µs로 줄었다. 이 CPU에는 HTTP와 JSON이 +들어 있다. 적재(57만 행)는 Pure 0.71초(이진 행을 한 요청에 1.4 MB씩), SQLite 1.56초(파이썬 `executemany`)다. **SD 카드(ext4).** 두 쪽 모두 커밋이 장치에 닿은 뒤 답한다. | | 초당 트랜잭션 | 분당 New-Order | New-Order p50 / p99 | |---|---:|---:|---:| -| Pure, 16터미널 | 1,465 | 39,149 | 5.6 / 74 ms | -| Pure, 64터미널 | 3,008 | 80,545 | 8.7 / 221 ms | -| Pure, 128터미널 | **3,073** | 82,063 | 11.8 / 623 ms | -| SQLite FULL, 1스레드 | 37 | 1,012 | 5.1 / 557 ms | -| SQLite FULL, 4스레드 | 55 | 1,425 | 5.1 / 1,245 ms | +| Pure, 16터미널 | 1,743 | 46,471 | 5.4 / 59 ms | +| Pure, 64터미널 | 3,237 | 86,604 | 9.2 / 147 ms | +| Pure, 128터미널 | **4,502** | 120,121 | 15.4 / 246 ms | +| SQLite FULL, 1스레드 | 50 | 1,346 | 4.9 / 492 ms | +| SQLite FULL, 4스레드 | 44 | 1,181 | 4.9 / 1,704 ms | -카드는 상태에 따라 흔들린다. 같은 카드에서 세 번 잰 128터미널은 3,073–5,396건, SQLite FULL은 48–57건이었다. 로그로 옮기기 -전(목록을 트리에 두던 때)에는 30초 가운데 16초가 0이었고, 이제는 매초 처리한다. +카드는 상태에 따라 흔들린다. 압축 기록으로 128터미널을 세 번 재니 4,502–6,824건이었다(그 전에는 3,073–5,396건). +SQLite FULL은 44–57건이었다. 로그로 옮기기 전(목록을 트리에 두던 때)에는 30초 가운데 16초가 0이었다. 이제는 매초 처리한다. SQLite의 `synchronous=NORMAL`(WAL 체크포인트 때만 동기화해 전원이 끊기면 최근 커밋을 잃는다)은 초당 36건(1스레드), -372건(4스레드)이다. `OFF`(동기화 없음)는 8,941건이다. Pure는 내구성을 낮추지 않고도 NORMAL의 8배다. +372건(4스레드)이다. `OFF`(동기화 없음)는 8,941건이다. Pure는 내구성을 낮추지 않고도 NORMAL의 12배다. ## 다음 -- **기록을 더 작게.** 로그는 트랜잭션당 약 0.52 KB다. 이 카드의 지속 쓰기(초당 3–8 MB)에 닿는 양이다. 수가 모두 - binary64(8바이트)로 적히지만 TPC-C의 값은 대부분 작은 정수다. 정수를 가변 길이로 적고 한 저장에서 같은 항목의 여러 설정을 - 한 기록으로 합치면 절반 아래로 준다. +- **기록을 더 작게.** 한 저장 안에서 같은 항목의 설정 여럿(재고의 수량·누계·주문 수)을 한 기록으로 합치고, 이미지도 + 압축 형식으로 쓰면 SD 카드의 쓰기가 더 준다. - **덧붙는 목록의 이미지.** 주문 줄처럼 뒤에 붙기만 하는 목록도 체크포인트가 이미지 전체를 다시 쓴다. 바뀐 잎만 새로 쓰는 이미지(이전 이미지와 잎을 나눠 쓰는)가 다음이다. - **메모리.** 16/64/128터미널을 차례로 20초씩 돌린 뒤 서버의 상주 메모리는 0.5/0.9/1.3 GB다. 대부분 늘어난 주문 줄(약 1,000만 diff --git a/research/experiments/018-tpcc/2026-09-28-tpcc-ram-linux-aarch64.jsonl b/research/experiments/018-tpcc/2026-09-28-tpcc-ram-linux-aarch64.jsonl index abd4870..38d0aa9 100644 --- a/research/experiments/018-tpcc/2026-09-28-tpcc-ram-linux-aarch64.jsonl +++ b/research/experiments/018-tpcc/2026-09-28-tpcc-ram-linux-aarch64.jsonl @@ -1,7 +1,7 @@ -{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.55, "pure_load_s": 0.72, "sqlite_load_s": 1.56, "pure_resident_mib": 40.8, "sqlite_file_mib": 13.8} +{"step": "load", "directory": "/dev/shm", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 0.71, "sqlite_load_s": 1.56, "pure_resident_mib": 38.0, "sqlite_file_mib": 13.8} {"step": "same transactions", "transactions": 20000, "pure": {"new_order": 9036, "payment": 8518, "order_status": 811, "delivery": 796, "stock_level": 839}, "sqlite": {"new_order": 9036, "payment": 8518, "order_status": 811, "delivery": 796, "stock_level": 839}, "undone_new_orders": [90, 90], "failed": [0, 0], "differing": {}, "consistency_failures": []} -{"step": "run", "system": "pure", "warehouses": 1, "terminals": 16, "transactions_per_second": 35863, "new_orders_per_minute": 959979, "undone_new_orders": 3268, "errors": 0, "new_order": {"done": 323261, "failed": 0, "p50_us": 448, "p99_us": 1280}, "payment": {"done": 308146, "failed": 0, "p50_us": 416, "p99_us": 1216}, "order_status": {"done": 28732, "failed": 0, "p50_us": 96, "p99_us": 544}, "delivery": {"done": 28543, "failed": 0, "p50_us": 432, "p99_us": 1216}, "stock_level": {"done": 28586, "failed": 0, "p50_us": 144, "p99_us": 640}, "server_threads": "3", "cpu_us_per_transaction": 45.5, "resident_mib": 480.6, "consistency_failures": []} -{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 38564, "new_orders_per_minute": 1031566, "undone_new_orders": 3300, "errors": 0, "new_order": {"done": 347158, "failed": 0, "p50_us": 1664, "p99_us": 3840}, "payment": {"done": 331554, "failed": 0, "p50_us": 1600, "p99_us": 3840}, "order_status": {"done": 30996, "failed": 0, "p50_us": 272, "p99_us": 1792}, "delivery": {"done": 30934, "failed": 0, "p50_us": 1664, "p99_us": 3840}, "stock_level": {"done": 30644, "failed": 0, "p50_us": 304, "p99_us": 1920}, "server_threads": "3", "cpu_us_per_transaction": 48.7, "resident_mib": 892.9, "consistency_failures": []} -{"step": "run", "system": "pure", "warehouses": 1, "terminals": 128, "transactions_per_second": 39449, "new_orders_per_minute": 1052334, "undone_new_orders": 3568, "errors": 0, "new_order": {"done": 354349, "failed": 0, "p50_us": 3328, "p99_us": 7424}, "payment": {"done": 339392, "failed": 0, "p50_us": 3200, "p99_us": 7424}, "order_status": {"done": 31880, "failed": 0, "p50_us": 496, "p99_us": 2816}, "delivery": {"done": 31563, "failed": 0, "p50_us": 3200, "p99_us": 7424}, "stock_level": {"done": 31802, "failed": 0, "p50_us": 512, "p99_us": 3072}, "server_threads": "3", "cpu_us_per_transaction": 50.0, "resident_mib": 1282.7, "consistency_failures": []} -{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 1, "transactions_per_second": 9493, "new_orders_per_minute": 254310, "undone_new_orders": 894, "new_order": {"done": 85669, "failed": 0, "p50_us": 152, "p99_us": 1152}, "payment": {"done": 81386, "failed": 0, "p50_us": 25, "p99_us": 50}, "order_status": {"done": 7574, "failed": 0, "p50_us": 18, "p99_us": 31}, "delivery": {"done": 7659, "failed": 0, "p50_us": 60, "p99_us": 108}, "stock_level": {"done": 7579, "failed": 0, "p50_us": 272, "p99_us": 416}, "consistency_failures": []} -{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 4, "transactions_per_second": 9141, "new_orders_per_minute": 244796, "undone_new_orders": 865, "new_order": {"done": 82571, "failed": 0, "p50_us": 160, "p99_us": 1216}, "payment": {"done": 78584, "failed": 0, "p50_us": 25, "p99_us": 160}, "order_status": {"done": 7284, "failed": 0, "p50_us": 19, "p99_us": 38}, "delivery": {"done": 7320, "failed": 0, "p50_us": 62, "p99_us": 1024}, "stock_level": {"done": 7293, "failed": 0, "p50_us": 288, "p99_us": 608}, "consistency_failures": []} +{"step": "run", "system": "pure", "warehouses": 1, "terminals": 16, "transactions_per_second": 36697, "new_orders_per_minute": 982183, "undone_new_orders": 3342, "errors": 0, "new_order": {"done": 330737, "failed": 0, "p50_us": 448, "p99_us": 1024}, "payment": {"done": 315234, "failed": 0, "p50_us": 416, "p99_us": 992}, "order_status": {"done": 29384, "failed": 0, "p50_us": 100, "p99_us": 544}, "delivery": {"done": 29328, "failed": 0, "p50_us": 432, "p99_us": 992}, "stock_level": {"done": 29254, "failed": 0, "p50_us": 144, "p99_us": 576}, "server_threads": "3", "cpu_us_per_transaction": 44.3, "resident_mib": 449.5, "consistency_failures": []} +{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 38509, "new_orders_per_minute": 1029948, "undone_new_orders": 3294, "errors": 0, "new_order": {"done": 346610, "failed": 0, "p50_us": 1664, "p99_us": 4096}, "payment": {"done": 331100, "failed": 0, "p50_us": 1664, "p99_us": 4096}, "order_status": {"done": 30943, "failed": 0, "p50_us": 256, "p99_us": 1792}, "delivery": {"done": 30890, "failed": 0, "p50_us": 1664, "p99_us": 3968}, "stock_level": {"done": 30629, "failed": 0, "p50_us": 288, "p99_us": 1856}, "server_threads": "3", "cpu_us_per_transaction": 47.3, "resident_mib": 866.0, "consistency_failures": []} +{"step": "run", "system": "pure", "warehouses": 1, "terminals": 128, "transactions_per_second": 39977, "new_orders_per_minute": 1066231, "undone_new_orders": 3620, "errors": 0, "new_order": {"done": 359032, "failed": 0, "p50_us": 3200, "p99_us": 6656}, "payment": {"done": 344008, "failed": 0, "p50_us": 3200, "p99_us": 6656}, "order_status": {"done": 32308, "failed": 0, "p50_us": 496, "p99_us": 3456}, "delivery": {"done": 31995, "failed": 0, "p50_us": 3200, "p99_us": 6656}, "stock_level": {"done": 32209, "failed": 0, "p50_us": 512, "p99_us": 3456}, "server_threads": "3", "cpu_us_per_transaction": 49.2, "resident_mib": 1298.7, "consistency_failures": []} +{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 1, "transactions_per_second": 9529, "new_orders_per_minute": 255250, "undone_new_orders": 897, "new_order": {"done": 85985, "failed": 0, "p50_us": 152, "p99_us": 1088}, "payment": {"done": 81706, "failed": 0, "p50_us": 25, "p99_us": 50}, "order_status": {"done": 7608, "failed": 0, "p50_us": 18, "p99_us": 30}, "delivery": {"done": 7696, "failed": 0, "p50_us": 60, "p99_us": 108}, "stock_level": {"done": 7605, "failed": 0, "p50_us": 272, "p99_us": 384}, "consistency_failures": []} +{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 4, "transactions_per_second": 9037, "new_orders_per_minute": 242158, "undone_new_orders": 861, "new_order": {"done": 81705, "failed": 0, "p50_us": 160, "p99_us": 1216}, "payment": {"done": 77713, "failed": 0, "p50_us": 25, "p99_us": 136}, "order_status": {"done": 7220, "failed": 0, "p50_us": 20, "p99_us": 40}, "delivery": {"done": 7279, "failed": 0, "p50_us": 64, "p99_us": 272}, "stock_level": {"done": 7109, "failed": 0, "p50_us": 288, "p99_us": 608}, "consistency_failures": []} diff --git a/research/experiments/018-tpcc/2026-09-28-tpcc-sd-linux-aarch64.jsonl b/research/experiments/018-tpcc/2026-09-28-tpcc-sd-linux-aarch64.jsonl index 46bf04b..b3927d1 100644 --- a/research/experiments/018-tpcc/2026-09-28-tpcc-sd-linux-aarch64.jsonl +++ b/research/experiments/018-tpcc/2026-09-28-tpcc-sd-linux-aarch64.jsonl @@ -1,7 +1,7 @@ -{"step": "load", "directory": "/home/eunhhu/tpcc-sd", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 6.31, "sqlite_load_s": 1.61, "pure_resident_mib": 40.8, "sqlite_file_mib": 13.8} +{"step": "load", "directory": "/home/eunhhu/tpcc-sd", "warehouses": 1, "rows": 568758, "generate_s": 0.56, "pure_load_s": 1.36, "sqlite_load_s": 1.6, "pure_resident_mib": 38.0, "sqlite_file_mib": 13.8} {"step": "same transactions", "transactions": 2000, "pure": {"new_order": 887, "payment": 870, "order_status": 82, "delivery": 84, "stock_level": 77}, "sqlite": {"new_order": 887, "payment": 870, "order_status": 82, "delivery": 84, "stock_level": 77}, "undone_new_orders": [6, 6], "failed": [0, 0], "differing": {}, "consistency_failures": []} -{"step": "run", "system": "pure", "warehouses": 1, "terminals": 16, "transactions_per_second": 1465, "new_orders_per_minute": 39149, "undone_new_orders": 188, "errors": 0, "new_order": {"done": 19763, "failed": 0, "p50_us": 5632, "p99_us": 73728}, "payment": {"done": 18841, "failed": 0, "p50_us": 5632, "p99_us": 73728}, "order_status": {"done": 1759, "failed": 0, "p50_us": 128, "p99_us": 432}, "delivery": {"done": 1832, "failed": 0, "p50_us": 5632, "p99_us": 69632}, "stock_level": {"done": 1769, "failed": 0, "p50_us": 192, "p99_us": 480}, "server_threads": "3", "cpu_us_per_transaction": 61.2, "resident_mib": 67.7, "consistency_failures": []} -{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 3008, "new_orders_per_minute": 80545, "undone_new_orders": 401, "errors": 0, "new_order": {"done": 40685, "failed": 0, "p50_us": 8704, "p99_us": 221184}, "payment": {"done": 38759, "failed": 0, "p50_us": 8704, "p99_us": 212992}, "order_status": {"done": 3711, "failed": 0, "p50_us": 352, "p99_us": 1280}, "delivery": {"done": 3594, "failed": 0, "p50_us": 8704, "p99_us": 221184}, "stock_level": {"done": 3521, "failed": 0, "p50_us": 400, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 55.9, "resident_mib": 236.9, "consistency_failures": []} -{"step": "run", "system": "pure", "warehouses": 1, "terminals": 128, "transactions_per_second": 3073, "new_orders_per_minute": 82063, "undone_new_orders": 405, "errors": 0, "new_order": {"done": 41521, "failed": 0, "p50_us": 11776, "p99_us": 622592}, "payment": {"done": 39762, "failed": 0, "p50_us": 11776, "p99_us": 622592}, "order_status": {"done": 3770, "failed": 0, "p50_us": 608, "p99_us": 2304}, "delivery": {"done": 3732, "failed": 0, "p50_us": 11264, "p99_us": 589824}, "stock_level": {"done": 3589, "failed": 0, "p50_us": 640, "p99_us": 2304}, "server_threads": "3", "cpu_us_per_transaction": 52.0, "resident_mib": 414.9, "consistency_failures": []} -{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 1, "transactions_per_second": 37, "new_orders_per_minute": 1012, "undone_new_orders": 6, "new_order": {"done": 512, "failed": 0, "p50_us": 5120, "p99_us": 557056}, "payment": {"done": 474, "failed": 0, "p50_us": 2432, "p99_us": 163840}, "order_status": {"done": 45, "failed": 0, "p50_us": 34, "p99_us": 64}, "delivery": {"done": 41, "failed": 0, "p50_us": 2432, "p99_us": 65536}, "stock_level": {"done": 53, "failed": 0, "p50_us": 464, "p99_us": 576}, "consistency_failures": []} -{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 4, "transactions_per_second": 55, "new_orders_per_minute": 1425, "undone_new_orders": 12, "new_order": {"done": 730, "failed": 0, "p50_us": 5120, "p99_us": 1245184}, "payment": {"done": 732, "failed": 0, "p50_us": 3072, "p99_us": 2621440}, "order_status": {"done": 65, "failed": 0, "p50_us": 34, "p99_us": 184}, "delivery": {"done": 69, "failed": 0, "p50_us": 4352, "p99_us": 491520}, "stock_level": {"done": 68, "failed": 0, "p50_us": 480, "p99_us": 928}, "consistency_failures": []} +{"step": "run", "system": "pure", "warehouses": 1, "terminals": 16, "transactions_per_second": 1743, "new_orders_per_minute": 46471, "undone_new_orders": 230, "errors": 0, "new_order": {"done": 23506, "failed": 0, "p50_us": 5376, "p99_us": 59392}, "payment": {"done": 22497, "failed": 0, "p50_us": 5376, "p99_us": 59392}, "order_status": {"done": 2112, "failed": 0, "p50_us": 128, "p99_us": 448}, "delivery": {"done": 2186, "failed": 0, "p50_us": 5376, "p99_us": 59392}, "stock_level": {"done": 2084, "failed": 0, "p50_us": 200, "p99_us": 512}, "server_threads": "3", "cpu_us_per_transaction": 60.9, "resident_mib": 72.5, "consistency_failures": []} +{"step": "run", "system": "pure", "warehouses": 1, "terminals": 64, "transactions_per_second": 3237, "new_orders_per_minute": 86604, "undone_new_orders": 433, "errors": 0, "new_order": {"done": 43736, "failed": 0, "p50_us": 9216, "p99_us": 147456}, "payment": {"done": 41666, "failed": 0, "p50_us": 9216, "p99_us": 147456}, "order_status": {"done": 4021, "failed": 0, "p50_us": 352, "p99_us": 1152}, "delivery": {"done": 3875, "failed": 0, "p50_us": 9216, "p99_us": 139264}, "stock_level": {"done": 3828, "failed": 0, "p50_us": 416, "p99_us": 1280}, "server_threads": "3", "cpu_us_per_transaction": 54.4, "resident_mib": 219.7, "consistency_failures": []} +{"step": "run", "system": "pure", "warehouses": 1, "terminals": 128, "transactions_per_second": 4502, "new_orders_per_minute": 120121, "undone_new_orders": 603, "errors": 0, "new_order": {"done": 60677, "failed": 0, "p50_us": 15360, "p99_us": 245760}, "payment": {"done": 58178, "failed": 0, "p50_us": 15360, "p99_us": 237568}, "order_status": {"done": 5423, "failed": 0, "p50_us": 608, "p99_us": 2304}, "delivery": {"done": 5432, "failed": 0, "p50_us": 15360, "p99_us": 245760}, "stock_level": {"done": 5383, "failed": 0, "p50_us": 640, "p99_us": 2432}, "server_threads": "3", "cpu_us_per_transaction": 52.3, "resident_mib": 250.0, "consistency_failures": []} +{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 1, "transactions_per_second": 50, "new_orders_per_minute": 1346, "undone_new_orders": 7, "new_order": {"done": 681, "failed": 0, "p50_us": 4864, "p99_us": 491520}, "payment": {"done": 637, "failed": 0, "p50_us": 1728, "p99_us": 106496}, "order_status": {"done": 54, "failed": 0, "p50_us": 32, "p99_us": 64}, "delivery": {"done": 62, "failed": 0, "p50_us": 1792, "p99_us": 73728}, "stock_level": {"done": 61, "failed": 0, "p50_us": 448, "p99_us": 608}, "consistency_failures": []} +{"step": "run", "system": "sqlite 3.46.1", "synchronous": "full", "warehouses": 1, "terminals": 4, "transactions_per_second": 44, "new_orders_per_minute": 1181, "undone_new_orders": 11, "new_order": {"done": 604, "failed": 0, "p50_us": 4864, "p99_us": 1703936}, "payment": {"done": 571, "failed": 0, "p50_us": 2432, "p99_us": 3538944}, "order_status": {"done": 53, "failed": 0, "p50_us": 30, "p99_us": 240}, "delivery": {"done": 53, "failed": 0, "p50_us": 2688, "p99_us": 1572864}, "stock_level": {"done": 56, "failed": 0, "p50_us": 432, "p99_us": 864}, "consistency_failures": []} -- cgit v1.2.3