btrfs maintainer's opinion is very important, i guess. On Thu, May 9, 2013 at 2:30 PM, Stefan Behrens <sbehrens@xxxxxxxxxxxxxxxx> wrote: > On 05/09/2013 01:13, Zhi Yong Wu wrote: >> >> 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. > > > Which one is better? > > Please do some measurements. Select typical file system use cases, and > publish and compare the measurement results of the two approaches. > > > >> On Mon, May 6, 2013 at 4:53 PM, <zwu.kernel@xxxxxxxxx> wrote: >>> >>> From: Zhi Yong Wu <wuzhy@xxxxxxxxxxxxxxxxxx> >>> >>> 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 > > -- Regards, Zhi Yong Wu -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
