From 87e8780f9496f832cf9ae1cb42b61796ffa63e68 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Mon, 26 Sep 2022 16:36:58 +0200 Subject: [PATCH] Write TTFB --- content/blog/2022-perf/index.md | 19 ++++++++++++++----- content/blog/2022-perf/schema-streaming.png | Bin 0 -> 51925 bytes 2 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 content/blog/2022-perf/schema-streaming.png diff --git a/content/blog/2022-perf/index.md b/content/blog/2022-perf/index.md index da78a76..3f597a8 100644 --- a/content/blog/2022-perf/index.md +++ b/content/blog/2022-perf/index.md @@ -1,10 +1,10 @@ +++ -title="Bringing theoretical design and real word performances face to face" +title="Bringing theoretical design and observed performances face to face" date=2022-09-26 +++ -*For the past years, we have extensively analyzed possible design decisions and their theoretical tradeoffs on Garage, being it on the network, data structure, or scheduling side. And it worked well enough for our production cluster at Deuxfleurs, but we also knew that people started discovering some unexpected behaviors. We thus started a round of benchmark and performance improvement to make Garage more versatile and better understand what we can expect from it.* +*For the past years, we have extensively analyzed possible design decisions and their theoretical tradeoffs on Garage, being it on the network, data structure, or scheduling side. And it worked well enough for our production cluster at Deuxfleurs, but we also knew that people started discovering some unexpected behaviors. We thus started a round of benchmark and performance measurement to see how Garage behaves compared to our expectations.* @@ -20,7 +20,7 @@ It must also be noted that Garage and Minio are systems with different feature s Impact of the testing environment is also not evaluated (kernel patches, configuration, parameters, filesystem, hardware configuration, etc.), some of these configurations could favor one configuration/software over another. Especially, it must be noted that most of the tests were done on a consumer-grade computer and SSD only, which will be different from most production setups. Finally, our results are also provided without statistical tests to check their significance, and thus might be statistically not significative. -When reading this post, please keep in mind that **we are not making any business or technical recommendation here**, we only share bits of our development process. +When reading this post, please keep in mind that **we are not making any business or technical recommendation here, this is not a scientific paper either**; we only share bits of our development process. Read [benchmarking crimes](https://gernot-heiser.org/benchmarking-crimes.html), make your own tests if you need to take a decision, and remain supportive and caring with your peers... ## About our testing environment @@ -31,10 +31,19 @@ To reproduce some environments locally, we have a small set of Python scripts na ## Efficient I/O -- streaming +**Time To First Byte** - One specificity of Garage is that we implemented S3 web endpoints, with the idea to make it the platform of choice to publish your static website. When publishing a website, one metric you observe is Time To First Byte (TTFB), as it will impact the perceived reactivity of your wbesite. On Garage, time to first byte was a bit high, especially for objects of 1MB and more. This is not surprising as, until now, the smallest level of granularity was the block level, which are set to at most 1MB by default. Hence, when you were sending a GET request, the block had to be fully retrieved by the gateway node from the storage node before starting sending any data to the client. With Garage v0.8, we integrated a block streaming logic which allows the gateway to send the beginning of a block without having to wait for the full block from the storage node. We can visually represent the difference as follow: -![](ttfb.png) +![A schema depicting how streaming improves the delivery of a block](schema-streaming.png) +As our default block size is only 1MB, the difference will be very small on fast networks: it takes only 8ms to transfer 1MB on a 1Gbps network. However, on a very slow network (or a very congested link with many parallel requests handled), the impact can be much more important: at 5Mbps, it takes 1.6 second to transfer our 1MB block, and streaming could heavily improve user experience. + +We wanted to see if this theory helds in practise: we simulated a low latency but slow network on mknet and did some request with (garage v0.8 beta) and without (garage v0.7) block streaming. We also added Minio as a reference. + +![Plot showing the TTFB observed on Garage v0.8, v0.7 and Minio](ttfb.png) + +As planned, Garage v0.7 that does not support block streaming features TTFB between 1.6s and 2s, which correspond to the computed time to transfer the full block. On the other side of the plot, we see Garage v0.8 with very low TTFB thanks to our streaming approach (the lowest value is 43 ms). Minio sits between our 2 implementations: we suppose that it does some form of batching, but on less than 1MB. + +**Read/write throughput** - - fsync, semaphore, timeouts, etc. ![](io.png) diff --git a/content/blog/2022-perf/schema-streaming.png b/content/blog/2022-perf/schema-streaming.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4c51ceb90677e4353a93efa8f10c458f5b1f56 GIT binary patch literal 51925 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 MDmuy)N;aYY2af