Vitaliy Filippov
43f6cfeb73
Extract alignments to options
2020-01-16 00:54:25 +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
b3f2102f33
Add queue stall tracking
2020-01-10 01:23:46 +03:00
Vitaliy Filippov
a7e74670a5
Split blockstore implementation and interface header
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
749ab6e2c6
Rename blockstore_operation to blockstore_op_t
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
f4d06ba102
OP_DELETE flushing
2019-12-02 02:41:14 +03:00
Vitaliy Filippov
a7a0946ba8
WIP OP_DELETE
2019-12-01 17:25:59 +03:00
Vitaliy Filippov
35a6ed728d
Fix another stall due to bad unstable_writes tracking, do not try to write beyond the end of the journal
2019-11-28 00:28:08 +03:00
Vitaliy Filippov
9ba243b3ee
Add debug prints
2019-11-27 18:07:51 +03:00
Vitaliy Filippov
ce5cd13bc8
Use fdatasync (just for testing over an FS)
2019-11-27 02:41:30 +03:00
Vitaliy Filippov
1080cbdf12
Fix used journal sector tracking again
2019-11-27 01:20:09 +03:00
Vitaliy Filippov
b8e53f8c67
Fix op validation, fix journal sector usage tracking
...
Now it runs for a while with fio but then crashes with ENOSPC because
of an apparent bug in the allocator
2019-11-26 20:38:25 +03:00
Vitaliy Filippov
3e46728321
Continue fio engine
2019-11-26 00:03:09 +03:00
Vitaliy Filippov
50cf3667fa
Track unstable writes
2019-11-25 01:16:34 +03:00
Vitaliy Filippov
82a2b8e7d9
Fix some extra bugs and it seems now it is even able to trim the journal
2019-11-22 12:08:44 +03:00
Vitaliy Filippov
2b12428cb1
Debug OP_STABLE so the basic case passes without problem
2019-11-21 02:09:18 +03:00
Vitaliy Filippov
e40a71b2ce
Check result to be equal to iov_len
2019-11-18 02:09:34 +03:00
Vitaliy Filippov
eec1c35ea4
Begin to debug ... all of this stuff :)
2019-11-16 02:32:29 +03:00
Vitaliy Filippov
c38c8ab029
Prevent two parallel flushes of the same object
2019-11-15 13:58:35 +03:00
Vitaliy Filippov
f1e236c6e8
Sync metadata & data after copying from journal
2019-11-14 14:09:07 +03:00
Vitaliy Filippov
bc549553e4
Rename dirty_entry.size to len, remove some unneeded methods and fields, read metadata correctly
2019-11-14 01:13:07 +03:00
Vitaliy Filippov
1c6b9778a4
Handle all io_uring events using lambdas
2019-11-13 22:46:42 +03:00
Vitaliy Filippov
214da03735
Move flusher into a separate file
2019-11-13 17:46:05 +03:00
Vitaliy Filippov
75398414d1
Add grouping flusher class
2019-11-13 17:41:57 +03:00
Vitaliy Filippov
db66b3916e
Begin metadata read-modify-write
2019-11-13 16:07:29 +03:00
Vitaliy Filippov
bb55a7fbf4
Zero-fill new objects and write them to the main storage
2019-11-12 20:49:57 +03:00
Vitaliy Filippov
4afa95b0e3
FSM is a dreadful unreadable thing, reimplement using gotos
2019-11-12 18:16:41 +03:00
Vitaliy Filippov
34451b6e44
Try to implement journal flusher as a FSM
2019-11-12 18:16:38 +03:00
Vitaliy Filippov
f892104aed
Begin journal flusher
2019-11-12 12:02:11 +03:00
Vitaliy Filippov
71552adf79
Do not use deque, test cpp-btree
2019-11-11 19:42:18 +03:00
Vitaliy Filippov
46e96c5128
Remove duplicate journal buffer submission code
2019-11-11 18:38:57 +03:00
Vitaliy Filippov
1f04db7d68
Begin to implement stabilize as a batch operation
2019-11-11 16:30:47 +03:00
Vitaliy Filippov
d2d8d6e7fb
Comments about stabilize operation, track unsynced_writes correctly
2019-11-11 02:53:19 +03:00
Vitaliy Filippov
8edb9e9d6f
Remove duplicate journal writing code (and fix it at the same time)
2019-11-11 00:28:14 +03:00
Vitaliy Filippov
ff57dd420e
Rename object_db to clean_db
2019-11-10 22:41:40 +03:00
Vitaliy Filippov
69581e6d0c
Send STABLE entry to the journal
2019-11-10 22:41:40 +03:00
Vitaliy Filippov
890335bff6
Begin implementation of the STABLE operation
2019-11-10 14:37:45 +03:00