1483337732955701300

Snapshot and Fork put performance

🍴Bucket Forking

Hi, I was testing snapshots and forking and noticed for each additional layer there was a pretty significant increase in latency for different ops. For example, a 1kb put could go from 7-8 ms to 15 ms on a fork and each additional fork caused an additional increase in latency.

My assumptions with how forks work is it's basically like a CoW filesystem. Out of curiosity is there some compaction step that brings down this latency over time or is this additional latency always present with an increased number of layers?

This is unexpected

Which op you are seeing the latency increase?

I noticed it across all ops

I was testing against a single region in iad from a hetzner vm

I'm going to rerun the benchmark and I'll also share the repo with you

That would be great

https://github.com/vmg-dev/tigris-storage-bench/tree/main

I ran the benchmark with the ts and go sdks just to confirm it wasn't an sdk issue

https://github.com/vmg-dev/tigris-storage-bench/blob/main/GO_BENCHMARK_RESULTS.md

Notice how latency climbs as fork depth increases

Thanks for sharing this

Let me run it as well

So I just tested by running this tool

I don't see variance in write operations:

I do see variance in get results

I will get back to you on this

And I have added support for --location``--location https://github.com/vmg-dev/tigris-storage-bench/pull/1

Weird, I definitely didnt make up that result but I realize now for any test over a network I need to start testing from multiple datacenters.

Ill merge your pr once im back to my laptop

I dont see why the dc would influence this though. I got this result consistently.

I am not saying you made up the result. I don't expect overhead in write requests which my tests show

While read overhead is clear in your results and mine

I know, just wanted to emphasize it, thanks for looking into this

Hi @vmg we have made improvements to the performance of snapshots. Do you mind running your benchmarks again?

sure ill try running them

Cool

It seems like the perf hit is still there for deep forks

Writes are unaffected by fork depth but reads are.