Thanks for reply. After performing an additional testing with SSD. I have more questions. Firstly, about the additional testing with SSD: I tested it with SSD (in Linux software raid level 10 setup). The result shown using dm-integrity is faster than using XFS directly. For using dm-integrity, fio shows lots of I/O merges by the scheduler. Please find the attachment for the result. Finally, please find the questions below: 1) So after the dm-integrity journal is written to the actual back end storage (hard drive), then fsync would then report completed? 2) To my understanding, for using dm-integrity with journal mode. Data has to written into the storage device twice (one part is the dm-integrity journal, the other one is the actual data). For the fio test, the data should be random and sustained for 60 seconds. But using dm-integrity with journal mode is still faster. Thanks, Patrick On Sat, Jan 4, 2020 at 1:14 AM Mikulas Patocka wrote: > > > On Fri, 3 Jan 2020, Patrick Dung wrote: > > > Hello, > > > > A quick question on dm-integrity. Does dm-integrity layer honors fsync? > > Yes it does. > > However, it writes data into the journal and when the journal is flushed, > it reports the fsync function as finished. > > On a mechanical disk, writes to contiguous space (i.e. the journal) are > faster than random writes all over the disk, that's why you see better > performance with dm-integrity than without it. > > Mikulas > > > I was testing dm-integrity and performance. It had a strange result that > using dm-integrity with journal is faster than a normal file system or > dm-integrity with > > bitmap (no journal). fio is used for testing the storage performance. > The device is a SATA hard disk drive. Then I created a 100GB partition for > testing. > > > > Below is the test cases: > > > > 1) XFS on a partition directly test case > > > > 2) dm-integrity: crc32c on a partition with default setting journal > commit interval is 10 seconds. Then create XFS on it. test case > > > > 3) dm-integrity: crc32c on a partition default setting journal commit > interval set to 5 seconds. Then create XFS on it. > > > > 4) dm-integrity: crc32c on a partition default setting but using bitmap > instead of journal. Then create XFS on it. > > > > FIO command: > > > > fio --filename=./t1 --direct=1 --rw=randrw --refill_buffers > --norandommap --randrepeat=0 --ioengine=sync --bs=4k --rwmixread=75 > --iodepth=16 --numjobs=8 --runtime=60 > > --group_reporting --fsync=1 --name=4ktest --size=4G > > > > Result: > > > > 1. Read/Write IOPS: 117/41. Read/Write Speed 481KB/s 168KB/s > > 2. Read/Write IOPS: 178/59. Read/Write Speed 732KB/s 244KB/s > > 3. Read/Write IOPS: 169/57. Read/Write Speed 695KB/s 236KB/s > > 4. Read/Write IOPS: 97/32. Read/Write Speed 400K/s 131KB/s > > The original discussion in: > https://gitlab.com/cryptsetup/cryptsetup/issues/513 . Milan Broz said the > dm-devel mailing list is a suitable place to discuss the probem. > > > > Thanks in advance. > > > > Patrick > > > >