tree d54fc0a24b7319ae802f63ba0a93a0eb46a58b3d
parent f1df81f6590e048b93ec21776f931a28f0468a45
author Sijie Guo <guosijie@gmail.com> 1566843368 -0700
committer GitHub <noreply@github.com> 1566843368 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJdZCHoCRBK7hj4Ov3rIwAAdHIIAKuweXGBg4/QTjiTt7xN1O0o
 IvuuNVSUZNEk21iYUOQqUerDPR82nk6sG4N8C1i/AdSkegXd5RnBZyoARy3OcN+A
 NPKIX/1drDFD5i1QA565HzG1BxsG8jNr8+WtNcT0Y0bvICZ0fsBAF7D7z5rOE7K7
 sLzEW4/H7pHgYtFdNgXd9J4ndhv44UxIhsnxpW7QNpAF3VAJ9Ty4MqnQWGVNCWZu
 Xvgt1HBTqu/rHDU4NqdI9Ewub8ogsRibeHVsWcWx0r2roN5Izq3H9clWDAGr4sbH
 6hRTl5ZMfa3rFquHeJ3qOCjxZToAo7zh8c2LepFEmbqxRhHLIbd5dynSMf0DKaM=
 =f6EQ
 -----END PGP SIGNATURE-----
 

Improve journal throughput when journalSyncData is disabled.

Descriptions of the changes in this PR:

### Motivation

There was a weird behavior observed: when `journalSyncData` is disabled, the journal throughput decreased with multiple journal dirs on same journal disk.

The problem is when `journalSyncData` is disabled, we still sync data to disk when rolling the journal file. The sync time increases to multiple seconds, because it has to flush all the files to disk and wait the whole sync operation to be completed.

### Changes

when `journalSyncData` is disabled, we trigger callbacks when the data is flushed to filesystem but still enqueue a fsync request to force write queue to make sure we still fsync data frequently.

Also added a journal perf tool to do performance testing on journal.




Reviewers: Enrico Olivelli <eolivelli@gmail.com>, Jia Zhai <zhaijia@apache.org>, Matteo Merli <mmerli@apache.org>

This closes #2150 from sijie/journal_perf