From: Vivek Goyal <vgoyal@redhat.com>
To: Vasily Tarasov <tarasov@vasily.name>
Cc: Joe Thornber <thornber@redhat.com>,
Mike Snitzer <snitzer@redhat.com>,
Christoph Hellwig <hch@infradead.org>,
device-mapper development <dm-devel@redhat.com>,
Philip Shilane <philip.shilane@emc.com>,
Sonam Mandal <sonam.dp42@gmail.com>,
Erez Zadok <ezk@fsl.cs.sunysb.edu>
Subject: Re: [PATCH RFCv2 00/10] dm-dedup: device-mapper deduplication target
Date: Wed, 14 Jan 2015 14:43:15 -0500 [thread overview]
Message-ID: <20150114194315.GA9520@redhat.com> (raw)
In-Reply-To: <53ffb64b.257e320a.6ec4.2b61@mx.google.com>
On Thu, Aug 28, 2014 at 06:48:28PM -0400, Vasily Tarasov wrote:
> This is a second request for comments for dm-dedup.
>
> Updates compared to the first submission:
>
> - code is updated to kernel 3.16
> - construction parameters are now positional (as in other targets)
> - documentation is extended and brought to the same format as in other targets
>
> Dm-dedup is a device-mapper deduplication target. Every write coming to the
> dm-dedup instance is deduplicated against previously written data. For
> datasets that contain many duplicates scattered across the disk (e.g.,
> collections of virtual machine disk images and backups) deduplication provides
> a significant amount of space savings.
>
> To quickly identify duplicates, dm-dedup maintains an index of hashes for all
> written blocks. A block is a user-configurable unit of deduplication with a
> recommended block size of 4KB. dm-dedup's index, along with other
> deduplication metadata, resides on a separate block device, which we refer to
> as a metadata device. Although the metadata device can be on any block
> device, e.g., an HDD or its own partition, for higher performance we recommend
> to use SSD devices to store metadata.
>
> Dm-dedup is designed to support pluggable metadata backends. A metadata
> backend is responsible for storing metadata: LBN-to-PBN and HASH-to-PBN
> mappings, allocation maps, and reference counters. (LBN: Logical Block
> Number, PBN: Physical Block Number). Currently we implemented "cowbtree" and
> "inram" backends. The cowbtree uses device-mapper persistent API to store
> metadata. The inram backend stores all metadata in RAM as a hash table.
>
> Detailed design is described here:
>
> http://www.fsl.cs.sunysb.edu/docs/ols-dmdedup/dmdedup-ols14.pdf
>
> Our preliminary experiments on real traces demonstrate that Dmdedup can even
> exceed the performance of a disk drive running ext4. The reasons are that (1)
> deduplication reduces I/O traffic to the data device, and (2) Dmdedup
> effectively sequentializes random writes to the data device.
>
> Dmdedup is developed by a joint group of researchers from Stony Brook
> University, Harvey Mudd College, and EMC. See the documentation patch for
> more details.
Hi,
I have quickly browsed through the paper above and have some very
basic questions.
- What real life workload is really going to benefit from this? Do you
have any numbers for that?
I see one example of storing multiple linux trees in tar format and for
the sequential write case with CBT backend performance has almost halfed
with CBT backend. And we had a dedup ratio of 1.88 (for perfect case).
INRAM numbers I think really don't count because it is not practical to
keep all metadata in RAM. And the case of keeping all data in NVRAM is
still little futuristic.
So this sounds like a too huge a performance penalty to me to be really
useful on real life workloads?
- Why did you implement an inline deduplication as opposed to out-of-line
deduplication? Section 2 (Timeliness) in paper just mentioned
out-of-line dedup but does not go into more details that why did you
choose an in-line one.
I am wondering that will it not make sense to first implement an
out-of-line dedup and punt lot of cost to worker thread (which kick
in only when storage is idle). That way even if don't get a high dedup
ratio for a workload, inserting a dedup target in the stack will be less
painful from performance point of view.
- You mentioned that random workload will become sequetion with dedup.
That will be true only if there is a single writer, isn't it? Have
you run your tests with multiple writers doing random writes and did
you get same kind of imrovements?
Also on the flip side a seqeuntial file will become random if multiple
writers are overwriting their sequential file (as you always allocate
a new block upon overwrite) and that will hit performance.
- What is 4KB chunking? Is it same as saying that block size will be
4KB? If yes, I am concerned that this might turn out to be a performance
bottleneck.
Thanks
Vivek
next prev parent reply other threads:[~2015-01-14 19:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 22:48 [PATCH RFCv2 00/10] dm-dedup: device-mapper deduplication target Vasily Tarasov
2014-12-03 2:31 ` Darrick J. Wong
2015-01-14 19:43 ` Vivek Goyal [this message]
2015-01-15 9:08 ` Akira Hayakawa
2015-01-23 16:34 ` Vasily Tarasov
2015-01-23 16:27 ` Vasily Tarasov
2015-01-30 15:56 ` Vivek Goyal
2015-02-03 16:11 ` Vasily Tarasov
2015-02-03 16:17 ` Vivek Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150114194315.GA9520@redhat.com \
--to=vgoyal@redhat.com \
--cc=dm-devel@redhat.com \
--cc=ezk@fsl.cs.sunysb.edu \
--cc=hch@infradead.org \
--cc=philip.shilane@emc.com \
--cc=snitzer@redhat.com \
--cc=sonam.dp42@gmail.com \
--cc=tarasov@vasily.name \
--cc=thornber@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.