In this test i used an normal hard disk and an ssd to build volumne group where the "fast" ssd is a cache for the "slow" hdd. during writing the files you'll see no big difference. Also reading the test data the first time there will be no big difference. But after the ssd is filled with the data from the hdd you'ss have an "random read performance" close to the native ssd . In my test i used an HDD=/dev/sde with 418GB and an SSD=/dev/sdc with 92GB.
Preparing the VG and the LV
vgcreate storage /dev/sde
lvcreate -n volume -L 418GB storage /dev/sde
vgextend storage /dev/sdc
lvcreate -n metadata -L 1GB storage /dev/sdc
lvcreate -n cache -L 91GB storage /dev/sdc
lvconvert --type cache --cachepool storage/cache storage/volume
mount /dev/storage/volume /data
Create test data and run the test
The first "fio" run will create the test files and will have "normal" read performance.
fio --directory=/data/TEST --size 100MB --name=4ktest --rw=randrw --refill_buffers --norandommap --randrepeat=0 --ioengine=libaio --bs=4k --rwmixread=100 --iodepth=16 --numjobs=16 --runtime=240 --group_reporting
Now Re-Run the Test !!!
you should now re-run the same "fio ... " some more times. Now the cache is filled with date and its fast. try to run a "dstat" in a second windows during the test.