Hi Gao,
  I am trying to evaluate Erofs on my device. Right now SquashFS is used for system files. Hence I am trying to compare Erofs with SquashFs. On my device with the below environment I am seeing Erofs is 3 times faster than SquashFS 128k (I used enwik8 (100MB) as testing file)) while doing Seq Read. Your test result shows it is near to SquasFs 128k. How Erofs is so fast for Seq Read?  I also tested  it on Suse VM with low memory(free memory 425MB) and I am seeing Erofs is pretty fast.

Also Can you tell me how to run FIO on directory instead of files ?
 fio -filename=$i -rw=read -bs=4k -name=seqbench

             Test on Embedded Device:

Total Memory 5.5 GB:

 Free Memory 1515

 No Swap


$: /fio/erofs_test]$ free -m

              total        used        free      shared  buff/cache   available

Mem:           5384        2315        1515        1378        1553        1592

Swap:             0           0           0

 

 

Seq Read

 

Rand Read

 

 

squashFS 4k

 

51.8MB/s

1931msec

45.7MB/s

2187msec

 

SquashFS 128k

 

116MB/s

861msec

14MB/s

877msec

 

SquashFS 1M

 

124MB/s-124MB/s

805msec

119MB/s

837msec

 

 

Erofs 4k

 

658MB/s-658MB/s

152msec

 

103MB

974msec

 

 

 

 Test on Suse VM:


Total Memory 1.5 GB:

 Free Memory 425

 No Swap

localhost:/home/saumya/Documents/erofs_test # free -m
              total        used        free      shared  buff/cache   available
Mem:           1436         817         425           5         192         444
Swap:             0           0           0


 

 

Seq Read

 

Rand Read

 

 

squashFS 4k

 

30.7MB/s

3216msec

9333kB/s

10715msec

 

SquashFS 128k

 

318MB/s

314msec

5946kB/s

16819msec

 


 



 

 

Erofs 4k

 

469MB/s

213msec

 

11.9MB/s

8414msec

 

 

 





On Wed, Jan 29, 2020 at 10:30 AM Gao Xiang <hsiangkao@aol.com> wrote:
On Wed, Jan 29, 2020 at 09:43:37AM +0530, Saumya Panda wrote:
>
> localhost:~> fio --name=randread --ioengine=libaio --iodepth=16
> --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240
> --group_reporting --filename=/mnt/enwik9_erofs/enwik9
>
> randread: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T)
> 4096B-4096B, ioengine=libaio, iodepth=16

And I don't think such configuration is useful to calculate read ampfication
since you read 100% finally, use multi-thread without memory limitation (all
compressed data will be cached, so the total read is compressed size).

I have no idea what you want to get via doing comparsion between EROFS and
Squashfs. Larger block size much like readahead in bulk. If you benchmark
uncompressed file systems, you will notice such filesystems cannot get such
high 100% randread number.

Thank,
Gao Xiang



--
Thanks,
Saumya Prakash Panda