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
This commit is contained in:
Vitaliy Filippov
2020-01-15 02:53:01 +03:00
parent 111516381f
commit a3d3949dce
7 changed files with 163 additions and 91 deletions
+2 -1
View File
@@ -112,6 +112,7 @@ struct journal_sector_info_t
{
uint64_t offset;
uint64_t usage_count;
bool dirty;
};
struct journal_t
@@ -154,4 +155,4 @@ struct blockstore_journal_check_t
journal_entry* prefill_single_journal_entry(journal_t & journal, uint16_t type, uint32_t size);
void prepare_journal_sector_write(journal_t & journal, io_uring_sqe *sqe, std::function<void(ring_data_t*)> cb);
void prepare_journal_sector_write(journal_t & journal, int sector, io_uring_sqe *sqe, std::function<void(ring_data_t*)> cb);