<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Benchmarks on etcd</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/</link><description>Recent content in Benchmarks on etcd</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/index.xml" rel="self" type="application/rss+xml"/><item><title>Storage Memory Usage Benchmark</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-storage-memory-benchmark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-storage-memory-benchmark/</guid><description>&lt;!---todo: link storage to storage design doc--&gt;
&lt;p&gt;Two components of etcd storage consume physical memory. The etcd process allocates an &lt;em&gt;in-memory index&lt;/em&gt; to speed key lookup. The process&amp;rsquo;s &lt;em&gt;page cache&lt;/em&gt;, managed by the operating system, stores recently-accessed data from disk for quick re-use.&lt;/p&gt;
&lt;p&gt;The in-memory index holds all the keys in a &lt;a href="https://en.wikipedia.org/wiki/B-tree"&gt;B-tree&lt;/a&gt; data structure, along with pointers to the on-disk data (the values). Each key in the B-tree may contain multiple pointers, pointing to different versions of its values. The theoretical memory consumption of the in-memory index can hence be approximated with the formula:&lt;/p&gt;</description></item><item><title>Watch Memory Usage Benchmark</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-3-watch-memory-benchmark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-3-watch-memory-benchmark/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Note&lt;/div&gt;
&lt;p&gt;The watch features are under active development, and their memory usage may change as that development progresses. We do not expect it to significantly increase beyond the figures stated below.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A primary goal of etcd is supporting a very large number of watchers doing a massively large amount of watching. etcd aims to support O(10k) clients, O(100K) watch streams (O(10) streams per client) and O(10M) total watchings (O(100) watching per stream). The memory consumed by each individual watching accounts for the largest portion of etcd&amp;rsquo;s overall usage, and is therefore the focus of current and future optimizations.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v3</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-3-demo-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-3-demo-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;Physical machines&lt;a class="td-heading-self-link" href="#physical-machines" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;
&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;
&lt;li&gt;1.8 GB memory&lt;/li&gt;
&lt;li&gt;2x CPUs&lt;/li&gt;
&lt;li&gt;etcd version 2.2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="etcd-cluster"&gt;etcd Cluster&lt;a class="td-heading-self-link" href="#etcd-cluster" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;1 etcd member running in v3 demo mode&lt;/p&gt;
&lt;h2 id="testing"&gt;Testing&lt;a class="td-heading-self-link" href="#testing" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use &lt;a href="https://github.com/etcd-io/etcd/tree/main/tools/benchmark"&gt;etcd v3 benchmark tool&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="performance"&gt;Performance&lt;a class="td-heading-self-link" href="#performance" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="reading-one-single-key"&gt;reading one single key&lt;a class="td-heading-self-link" href="#reading-one-single-key" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;key size in bytes&lt;/th&gt;
 &lt;th&gt;number of clients&lt;/th&gt;
 &lt;th&gt;read QPS&lt;/th&gt;
 &lt;th&gt;90th Percentile Latency (ms)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;256&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2716&lt;/td&gt;
 &lt;td&gt;0.4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;256&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;16623&lt;/td&gt;
 &lt;td&gt;6.1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;256&lt;/td&gt;
 &lt;td&gt;256&lt;/td&gt;
 &lt;td&gt;16622&lt;/td&gt;
 &lt;td&gt;21.7&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The performance is nearly the same as the one with empty server handler.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.2.0-rc-memory</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</guid><description>&lt;h2 id="physical-machine"&gt;Physical machine&lt;a class="td-heading-self-link" href="#physical-machine" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GCE n1-standard-2 machine type&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;
&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;
&lt;li&gt;7.5 GB memory&lt;/li&gt;
&lt;li&gt;2x CPUs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="etcd"&gt;etcd&lt;a class="td-heading-self-link" href="#etcd" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;etcd Version: 2.2.0-rc.0+git
Git SHA: 103cb5c
Go Version: go1.5
Go OS/Arch: linux/amd64
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="testing"&gt;Testing&lt;a class="td-heading-self-link" href="#testing" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Start 3-member etcd cluster, each of which uses 2 cores.&lt;/p&gt;
&lt;p&gt;The length of key name is always 64 bytes, which is a reasonable length of average key bytes.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.2.0-rc</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-2-0-rc-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-2-0-rc-benchmarks/</guid><description>&lt;h2 id="physical-machine"&gt;Physical machine&lt;a class="td-heading-self-link" href="#physical-machine" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;
&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;
&lt;li&gt;1.8 GB memory&lt;/li&gt;
&lt;li&gt;2x CPUs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="etcd-cluster"&gt;etcd Cluster&lt;a class="td-heading-self-link" href="#etcd-cluster" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;3 etcd 2.2.0-rc members, each runs on a single machine.&lt;/p&gt;
&lt;p&gt;Detailed versions:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;etcd Version: 2.2.0-alpha.1+git
Git SHA: 59a5a7e
Go Version: go1.4.2
Go OS/Arch: linux/amd64
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Also, we use 3 etcd 2.1.0 alpha-stage members to form cluster to get base performance. etcd&amp;rsquo;s commit head is at &lt;a href="https://github.com/etcd-io/etcd/commits/c7146bd5f2c73716091262edc638401bb8229144"&gt;c7146bd5&lt;/a&gt;, which is the same as the one that we use in &lt;a href="../etcd-2-1-0-alpha-benchmarks/"&gt;etcd 2.1 benchmark&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.2.0</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-2-0-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-2-0-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;Physical Machines&lt;a class="td-heading-self-link" href="#physical-machines" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x dedicated local SSD mounted as etcd data directory&lt;/li&gt;
&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;
&lt;li&gt;1.8 GB memory&lt;/li&gt;
&lt;li&gt;2x CPUs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="etcd-cluster"&gt;etcd Cluster&lt;a class="td-heading-self-link" href="#etcd-cluster" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;3 etcd 2.2.0 members, each runs on a single machine.&lt;/p&gt;
&lt;p&gt;Detailed versions:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;etcd Version: 2.2.0
Git SHA: e4561dd
Go Version: go1.5
Go OS/Arch: linux/amd64
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="testing"&gt;Testing&lt;a class="td-heading-self-link" href="#testing" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bootstrap another machine, outside of the etcd cluster, and run the &lt;a href="https://github.com/rakyll/hey"&gt;&lt;code&gt;hey&lt;/code&gt; HTTP benchmark tool&lt;/a&gt; with a connection reuse patch to send requests to each etcd cluster member. See the &lt;a href="https://github.com/etcd-io/etcd/tree/v2.3.8/hack/benchmark"&gt;benchmark instructions&lt;/a&gt; for the patch and the steps to reproduce our procedures.&lt;/p&gt;</description></item><item><title>Benchmarking etcd v2.1.0</title><link>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-1-0-alpha-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andygol-etcd.netlify.app/docs/v3.8/benchmarks/etcd-2-1-0-alpha-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;Physical machines&lt;a class="td-heading-self-link" href="#physical-machines" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;
&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;
&lt;li&gt;1.8 GB memory&lt;/li&gt;
&lt;li&gt;2x CPUs&lt;/li&gt;
&lt;li&gt;etcd version 2.1.0 alpha&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="etcd-cluster"&gt;etcd Cluster&lt;a class="td-heading-self-link" href="#etcd-cluster" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;3 etcd members, each runs on a single machine&lt;/p&gt;
&lt;h2 id="testing"&gt;Testing&lt;a class="td-heading-self-link" href="#testing" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bootstrap another machine and use the &lt;a href="https://github.com/rakyll/hey"&gt;hey HTTP benchmark tool&lt;/a&gt; to send requests to each etcd member. Check the &lt;a href="https://github.com/etcd-io/etcd/tree/main/hack/benchmark"&gt;benchmark hacking guide&lt;/a&gt; for detailed instructions.&lt;/p&gt;</description></item></channel></rss>