From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mo-p00-ob.rzone.de ([81.169.146.161]:10336 "EHLO mo-p00-ob.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751291Ab3EIGaG (ORCPT ); Thu, 9 May 2013 02:30:06 -0400 Message-ID: <518B4274.3020000@giantdisaster.de> Date: Thu, 09 May 2013 08:30:12 +0200 From: Stefan Behrens MIME-Version: 1.0 To: Zhi Yong Wu CC: linux-btrfs@vger.kernel.org, sekharan@us.ibm.com, chris.mason@fusionio.com, Ilya Dryomov , Zhi Yong Wu Subject: Re: [RFC 0/5] BTRFS hot relocation support References: <1367830418-26865-1-git-send-email-zwu.kernel@gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Sender: linux-btrfs-owner@vger.kernel.org List-ID: 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, wrote: >> From: Zhi Yong Wu >> >> 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