Commit Graph

1064 Commits (8800afb649fdb926059a4c68823e340b1117a559)

Author SHA1 Message Date
Vitaliy Filippov c41fd7ea18 Measure sending subops with data 2020-02-29 01:46:03 +03:00
Vitaliy Filippov c6334afc94 Measure OSD op/subop latency
Something is wrong: loopback RTT between OSDs is sometimes as high as 70us (should be 20us or less probably)
2020-02-28 12:26:49 +03:00
Vitaliy Filippov 2be4824a7a Fix a small memory leak and BS_OP_SYNC mishandling, now fio does not hang during primary-osd test 2020-02-28 01:46:39 +03:00
Vitaliy Filippov 1733de2db6 Test & fix single-PG primary OSD
- Add support for benchmarking single primary OSD in fio_sec_osd
- Do not wait for the next event in flushers (return resume_0 back)
- Fix flushing of zero-length writes
- Print PG object count when peering
- Print journal free space when starting and when congested
2020-02-26 19:05:29 +03:00
Vitaliy Filippov df66a76ce2 ...and make it work :) 2020-02-25 22:52:03 +03:00
Vitaliy Filippov a406c62a71 Implement basic primary-sync-stabilize 2020-02-25 20:10:21 +03:00
Vitaliy Filippov 74673c761f Make basic primary-write work 2020-02-25 02:55:58 +03:00
Vitaliy Filippov 09588a349f Transform primary_r/w into "coroutines" 2020-02-24 02:40:52 +03:00
Vitaliy Filippov 4c0178f180 Fix some memory freeing 2020-02-24 01:04:23 +03:00
Vitaliy Filippov 5dd04abbac Make bs_op pointer 2020-02-23 23:46:00 +03:00
Vitaliy Filippov fe3c47812c Rename osd_exec_secondary to osd_secondary 2020-02-23 23:43:57 +03:00
Vitaliy Filippov 88e56a564f Rename osd_read_stripe_t to osd_rmw_stripe_t 2020-02-23 23:43:57 +03:00
Vitaliy Filippov c71b67f2f7 Move SYNC_STAB_ALL into blockstore implementation 2020-02-23 23:43:57 +03:00
Vitaliy Filippov 4a52a15564 Rename osd_op_t.op to req 2020-02-23 23:21:17 +03:00
Vitaliy Filippov 72a89be912 Move uint8_t[] buffers into any_op_t/any_reply_t 2020-02-23 23:21:17 +03:00
Vitaliy Filippov d4fd9d982a Implement read-modify-write calculation and extract it into a separate file 2020-02-23 02:11:43 +03:00
Vitaliy Filippov 0e177c7a2a Fix possible leak in blockstore_read 2020-02-21 19:38:43 +03:00
Vitaliy Filippov ffe073473a Remove hardcode of the EC(2+1) scheme, now it supports EC(k+1), fix some bugs 2020-02-13 19:13:17 +03:00
Vitaliy Filippov b7ccd63104 Return version number from reads 2020-02-12 12:30:50 +03:00
Vitaliy Filippov 1100ad44bd Cancel outbound operations when disconnecting a peer 2020-02-11 21:17:10 +03:00
Vitaliy Filippov a66b34e04d Implement event-driven PG peering 2020-02-11 13:41:34 +03:00
Vitaliy Filippov 327f310868 Remove copy-pasted read/write _blocking 2020-02-09 19:23:03 +03:00
Vitaliy Filippov 1513d0490a Test and fix degraded-read 2020-02-09 19:17:35 +03:00
Vitaliy Filippov 97d3fc593c Test and fix primary-read 2020-02-09 19:17:32 +03:00
Vitaliy Filippov 235d15422c Mostly finish primary-OSD-read 2020-02-03 14:18:21 +03:00
Vitaliy Filippov 9fb2d3f840 Fill out the rest of the degraded read logic; now we need to make it a "coroutine" 2020-02-02 00:05:56 +03:00
Vitaliy Filippov 206c4eb655 WIP submit subops 2020-01-31 14:07:16 +03:00
Vitaliy Filippov 74d0196ba5 Stripe read reconstruction 2020-01-31 13:46:23 +03:00
Vitaliy Filippov ec50957c41 WIP primary OSD read 2020-01-30 22:06:46 +03:00
Vitaliy Filippov f4707709c6 Move ack_sync() near sync_state = SYNC_DONE so it does not hang with disable_journal_fsync 2020-01-29 16:55:06 +03:00
Vitaliy Filippov 1e286eed08 Wait for writes to complete before issuing an fsync in blockstore_sync
Also fix a dormant bug (OP_SYNC could clear unsynced_*_writes and not be added into syncs_in_progress)
2020-01-29 16:42:40 +03:00
Vitaliy Filippov dcc9e75c63 Wait for write completion before fsync in blockstore_init 2020-01-29 16:40:21 +03:00
Vitaliy Filippov 47663bd1dc Add (empty) osd_primary.cpp, rename osd_read to osd_receive, add FIXMEs for fsync 2020-01-28 22:40:50 +03:00
Vitaliy Filippov 1447c44b68 Calculate required stabilize/rollback actions, add more map perf tests 2020-01-27 01:34:30 +03:00
Vitaliy Filippov 079f129390 Add rollback op to the OSD code 2020-01-25 02:04:58 +03:00
Vitaliy Filippov 2b09710d6f Implement blockstore rollback operation
Rollback operation is required for the primary OSD to kill unstable
object versions in OSD peers so they don't occupy journal space
2020-01-24 20:18:14 +03:00
Vitaliy Filippov 98efdb78bd Extract object state calculation to a separate file and slightly test it 2020-01-24 12:56:51 +03:00
Vitaliy Filippov d2a3f0c6dd Begin object state calculation 2020-01-23 22:05:27 +03:00
Vitaliy Filippov a8bc44064d Read object lists from peers and own blockstore 2020-01-22 02:36:14 +03:00
Vitaliy Filippov 8c05ee252c Test object list sorting, begin peering code 2020-01-21 22:33:02 +03:00
Vitaliy Filippov d0ab2a20b2 Make fsync flags separate for data, metadata and journal 2020-01-17 13:41:37 +03:00
Vitaliy Filippov d5386aa958 Check presence in sync_to_repeat 2020-01-16 02:16:35 +03:00
Vitaliy Filippov 0d90966739 Add last_sync checking to fio_engine, too 2020-01-16 01:03:18 +03:00
Vitaliy Filippov 43f6cfeb73 Extract alignments to options 2020-01-16 00:54:25 +03:00
Vitaliy Filippov 57ecbb2cda Parse OSD commandline options 2020-01-15 23:20:11 +03:00
Vitaliy Filippov 8ea1ccc192 Add an OSD stub to compare sync socket I/O with io_uring + skip multiple fsyncs that fio issues 2020-01-15 22:04:58 +03:00
Vitaliy Filippov a3d3949dce Do not overwrite same journal sector multiple times
It doesn't reduce actual WA, but it reduces tail latency (Q=32, 10% / 50% / 90% / 99% / 99.95%):
- write: 766us/979us/1090us/1303us/1729us vs 1074us/1450us/2212us/3261us/4113us
- sync: 701us/881us/1188us/1762us/2540us vs 269us/955us/1663us/2638us/4146us
2020-01-15 02:53:01 +03:00
Vitaliy Filippov 111516381f Add FIXME 2020-01-14 18:41:56 +03:00
Vitaliy Filippov 36d8c8724f Fix sparse reads using bitmap, fix journal replay (we could sometimes lose its end) 2020-01-12 23:38:33 +03:00
Vitaliy Filippov 5739b02de8 Add sparse read to ./blockstore_test, link blockstore to libblockstore.so 2020-01-12 19:59:19 +03:00