HI, all I saw that bcache will be merged into kernel upstream soon, so i want to know if btrfs hot relocation support is still meanful, if no, i will not continue to work on it. can anyone let me know this? thanks.
On Mon, May 6, 2013 at 4:53 PM, <zwu.ker...@gmail.com> wrote: > From: Zhi Yong Wu <wu...@linux.vnet.ibm.com> > > The patchset as RFC is sent out mainly to see if it goes in the > correct development direction. > > The patchset is trying to introduce hot relocation support > for BTRFS. In hybrid storage environment, when the data in > HDD disk get hot, it can be relocated to SSD disk by BTRFS > hot relocation support automatically; also, if SSD disk ratio > exceed its upper threshold, the data which get cold can be > looked up and relocated to HDD disk to make more space in SSD > disk at first, and then the data which get hot will be relocated > to SSD disk automatically. > > BTRFS hot relocation mainly reserve block space from SSD disk > at first, load the hot data to page cache from HDD, allocate > block space from SSD disk, and finally write the data to SSD disk. > > If you'd like to play with it, pls pull the patchset from > my git on github: > https://github.com/wuzhy/kernel.git hot_reloc > > For how to use, please refer too the example below: > > root@debian-i386:~# echo 0 > /sys/block/vdc/queue/rotational > ^^^ Above command will hack /dev/vdc to be one SSD disk > root@debian-i386:~# echo 999999 > /proc/sys/fs/hot-age-interval > root@debian-i386:~# echo 10 > /proc/sys/fs/hot-update-interval > root@debian-i386:~# echo 10 > /proc/sys/fs/hot-reloc-interval > root@debian-i386:~# mkfs.btrfs -d single -m single -h /dev/vdb /dev/vdc -f > > WARNING! - Btrfs v0.20-rc1-254-gb0136aa-dirty IS EXPERIMENTAL > WARNING! - see http://btrfs.wiki.kernel.org before using > > [ 140.279011] device fsid c563a6dc-f192-41a9-9fe1-5a3aa01f5e4c devid 1 > transid 16 /dev/vdb > [ 140.283650] device fsid c563a6dc-f192-41a9-9fe1-5a3aa01f5e4c devid 2 > transid 16 /dev/vdc > [ 140.517089] device fsid 197d47a7-b9cd-46a8-9360-eb087b119424 devid 1 > transid 3 /dev/vdb > [ 140.550759] device fsid 197d47a7-b9cd-46a8-9360-eb087b119424 devid 1 > transid 3 /dev/vdb > [ 140.552473] device fsid c563a6dc-f192-41a9-9fe1-5a3aa01f5e4c devid 2 > transid 16 /dev/vdc > adding device /dev/vdc id 2 > [ 140.636215] device fsid 197d47a7-b9cd-46a8-9360-eb087b119424 devid 2 > transid 3 /dev/vdc > fs created label (null) on /dev/vdb > nodesize 4096 leafsize 4096 sectorsize 4096 size 14.65GB > Btrfs v0.20-rc1-254-gb0136aa-dirty > root@debian-i386:~# mount -o hot_move /dev/vdb /data2 > [ 144.855471] device fsid 197d47a7-b9cd-46a8-9360-eb087b119424 devid 1 > transid 6 /dev/vdb > [ 144.870444] btrfs: disk space caching is enabled > [ 144.904214] VFS: Turning on hot data tracking > root@debian-i386:~# dd if=/dev/zero of=/data2/test1 bs=1M count=2048 > 2048+0 records in > 2048+0 records out > 2147483648 bytes (2.1 GB) copied, 23.4948 s, 91.4 MB/s > root@debian-i386:~# df -h > Filesystem Size Used Avail Use% Mounted on > /dev/vda1 16G 13G 2.2G 86% / > tmpfs 4.8G 0 4.8G 0% /lib/init/rw > udev 10M 176K 9.9M 2% /dev > tmpfs 4.8G 0 4.8G 0% /dev/shm > /dev/vdb 15G 2.0G 13G 14% /data2 > root@debian-i386:~# btrfs fi df /data2 > Data: total=3.01GB, used=2.00GB > System: total=4.00MB, used=4.00KB > Metadata: total=8.00MB, used=2.19MB > Data_SSD: total=8.00MB, used=0.00 > root@debian-i386:~# echo 108 > /proc/sys/fs/hot-reloc-threshold > ^^^ Above command will start HOT RLEOCATE, because The data temperature is > currently 109 > root@debian-i386:~# df -h > Filesystem Size Used Avail Use% Mounted on > /dev/vda1 16G 13G 2.2G 86% / > tmpfs 4.8G 0 4.8G 0% /lib/init/rw > udev 10M 176K 9.9M 2% /dev > tmpfs 4.8G 0 4.8G 0% /dev/shm > /dev/vdb 15G 2.1G 13G 14% /data2 > root@debian-i386:~# btrfs fi df /data2 > Data: total=3.01GB, used=6.25MB > System: total=4.00MB, used=4.00KB > Metadata: total=8.00MB, used=2.26MB > Data_SSD: total=2.01GB, used=2.00GB > root@debian-i386:~# > > Zhi Yong Wu (5): > vfs: add one list_head field > btrfs: add one new block group > btrfs: add one hot relocation kthread > procfs: add three proc interfaces > btrfs: add hot relocation support > > fs/btrfs/Makefile | 3 +- > fs/btrfs/ctree.h | 26 +- > fs/btrfs/extent-tree.c | 107 +++++- > fs/btrfs/extent_io.c | 31 +- > fs/btrfs/extent_io.h | 4 + > fs/btrfs/file.c | 36 +- > fs/btrfs/hot_relocate.c | 802 > +++++++++++++++++++++++++++++++++++++++++++ > fs/btrfs/hot_relocate.h | 48 +++ > fs/btrfs/inode-map.c | 13 +- > fs/btrfs/inode.c | 92 ++++- > fs/btrfs/ioctl.c | 23 +- > fs/btrfs/relocation.c | 14 +- > fs/btrfs/super.c | 30 +- > fs/btrfs/volumes.c | 28 +- > fs/hot_tracking.c | 1 + > include/linux/btrfs.h | 4 + > include/linux/hot_tracking.h | 1 + > kernel/sysctl.c | 22 ++ > 18 files changed, 1234 insertions(+), 51 deletions(-) > create mode 100644 fs/btrfs/hot_relocate.c > create mode 100644 fs/btrfs/hot_relocate.h > > -- > 1.7.11.7 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Regards, Zhi Yong Wu -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html