Commit Graph

225 Commits (test-submit-and-wait)

Author SHA1 Message Date
Vitaliy Filippov 9c33de5e57 Test: use submit_and_wait() 2020-03-03 17:48:47 +03:00
Vitaliy Filippov c9f3654905 Add ringloop.h to dependencies 2020-03-03 17:23:33 +03:00
Vitaliy Filippov 2a5ca4ff6f Measure OP_STAB in both ways 2020-03-03 02:18:59 +03:00
Vitaliy Filippov 2575431176 Fix EPOLLET race on Linux 5.5+ 2020-03-03 01:47:56 +03:00
Vitaliy Filippov 20125db181 Use clock_gettime() 2020-03-03 00:54:42 +03:00
Vitaliy Filippov 7eac7b6d55 Use writev in libfio_sec_osd 2020-03-02 21:17:21 +03:00
Vitaliy Filippov 79839ec31d Start sending immediately instead of waiting for another loop 2020-03-02 00:20:28 +03:00
Vitaliy Filippov 9d96e4bf0b Add simple "stub bench" using sync I/O 2020-03-01 23:00:46 +03:00
Vitaliy Filippov 9e18293497 Allow to specify multiple peers 2020-03-01 00:46:07 +03:00
Vitaliy Filippov 56765ab750 Send all iovecs at once 2020-02-29 02:27:19 +03:00
Vitaliy Filippov fd05e13bc4 Use EPOLLET
Its latency is slightly better, too
2020-02-29 01:56:59 +03:00
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