Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benchmark zfs send #69

Closed
exarkun opened this issue Jun 12, 2014 · 6 comments
Closed

Benchmark zfs send #69

exarkun opened this issue Jun 12, 2014 · 6 comments

Comments

@exarkun
Copy link
Contributor

exarkun commented Jun 12, 2014

There is folk wisdom that the performance of zfs send is closely related to whether it is able to fill up its output buffer or not (if it is able to fill it then it performs poorly - particularly if emptying that buffer involved network round-trips).

HybridCluster suffered from performance problems until it added a buffering layer between zfs send and the network.

Measure the throughput of zfs send on a well-known dataset against various sizes of output buffer.

Generate machine-parseable output for consumption by a continuous benchmarking system (sadly yet-to-be-implemented).

@exarkun
Copy link
Contributor Author

exarkun commented Jun 12, 2014

zfs send sounds concrete and precise but it's actually used as a placeholder for "the code that we will use to produce a snapshot data stream". This might involve calling into libzfs or libzfs_core APIs rather than running the zfs binary.

Figure out which of these approaches we're actually going to use before bothering to write this benchmark.

@exarkun
Copy link
Contributor Author

exarkun commented Jun 12, 2014

Rob is particularly interested in having this benchmark done before the first release.

@robhaswell
Copy link
Contributor

The motivation is that we experienced very poor performance for this operation in HybridCluster without a large buffer for ZFS to write to.

@itamarst
Copy link
Contributor

http://everycity.co.uk/alasdair/2010/07/using-mbuffer-to-speed-up-slow-zfs-send-zfs-receive/ suggests the issue isn't zfs send, but rather zfs recv stalling the send pipeline.

@exarkun
Copy link
Contributor Author

exarkun commented Jun 12, 2014

Thanks for tracking that down. The mismatch between the explanation there and the work description on this issue is a good argument for not spending time prematurely benchmarking anything (if someone had spent time benchmarking zfs send in isolation there's a good chance this would have been wasted effort because it would have missed out on the interaction with zfs recv).

Closing this in favor of benchmarking some software we actually build.

@exarkun
Copy link
Contributor Author

exarkun commented Jun 12, 2014

See #70

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants