Linearizable RPC & TX progress
TODO for SOSP Camera Ready
1 M client benchmark / cstlee
Full-mix for TPC-C benchmark / seojin
Measure 1-level deeper for throughput (factor analysis?)
Clarify the term linearizability: make proposals. / collin
Talk about ultimate client / John??
Clarify exp setup for TPC-C benchmark.
Comparision with tell from VLDB.
Extra paragraph lease
Tentative schedule for both linearizability and TX.
Nov 3: Today
Nov 14: TX design draft
Nov 21: Linearizability implementation
Jan 27: TX Implementation
Feb 27: 1st draft & Measurements
Mar 28: Final
Transaction Components (Assumes 4 + 1 days / wk)
Client Driven Transaction
Prep Rpc and Handling - Seojin / DONE!
Client driven transactions "task" - Collin / DONE!
Transaction object & API - Collin / DONE!
Multiple objects per prepare RPC - DONE!
Transaction Cleanup Coordinator (Recovery Coordinator)
Timer and Rpc for initiating recovery protocol. - Seojin / Half DONE.
Request Abort Rpc and Handling - Seojin / 2 day
Transaction Cleanup "task" - Collin / DONE!
Transaction Cleanup crash recovery - Collin / DONE!
Common Components (Mostly in Data Master)
Decision Rpc - seojin / DONE!
lock table - Collin / DONE!
Special GC rules for transaction entires (& lease expiration handling) - Seojin / 3 day
Transaction log records & recovery - Seojin / DONE!
Benchmark
Micro-benchmarks
Throughput and latency for TX varying # of objects and size of objects / READ vs. WRITE / # of servers. No contention.
Varied contention
(Conditional) Write latency for varied size of objects.
Crash recovery for client / server?
Scalability of leases?
Macro-benchmark
Run TPC-C and compare with other systems (eg. H-store)
YCSB?
Ask Ankita and SYang
Current Client Side TimeTrace:
(+ 21.5 ns): sendPrepareRpc find first object
(+ 41.6 ns): sendPrepareRpc objectFinder.lookup
(+ 186.1 ns): sendPrepareRpc prepareRpcs.emplace_back
(+ 72.3 ns): sendPrepareRpc objectFinder.lookup and service locator comparison
(+ 43.6 ns): appendOp append data to rpc
(+ 94.1 ns): sendPrepareRpc break loop -- objectFinder.lookup and service locator comparison
(+ 13.3 ns): send call
(+ 14.7 ns): send get ackId
(+ 456.2 ns): send session->sendRequest
(+ 14.7 ns): sendPrepareRpc send return
(+ 34.1 ns): processPrepareRpcs check for ready Rpcs
(+ 100.6 ns): processPrepareRpcs prepareRpcs.erase
=====================================================
(+1092.8 ns): total
Linearizability Components
increment handling
Coordinator RPC GetLeaseInfo w/ batching
Coordinator
Cluster Clock and Time support - Collin
Lease manager - Collin
Master
Backup's log reading during recovery - Collin (6days)
Recovery from log <logReplay> (6 days)
Handling of Linearizable RPC in MasterService - Seojin (3 days)
Durable logging - Seojin (3 days)
Log cleaning for rpc log entry - Collin (4 days)
In-memory client table (UnackedRpcResult) - Seojin
Client
Linearizable RPC handling. (using RpcTracker and ClusterClock) - Seojin (3 days)
Client lease - Collin (4 days)
In-memory RPC table (RpcTracker) - Seojin