{"id":53,"date":"2026-03-05T19:56:23","date_gmt":"2026-03-05T19:56:23","guid":{"rendered":"https:\/\/byte64.com\/?p=53"},"modified":"2026-03-14T00:09:57","modified_gmt":"2026-03-14T00:09:57","slug":"sstable-on-ssd","status":"publish","type":"post","link":"https:\/\/byte64.com\/?p=53","title":{"rendered":"SSTable on SSD"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">When I first put the SSTable server on Google&#8217;s Compute Engine, I opted for the cheapest machine: an e2-small (2 cores and 2GB ram) with a standard persistent disk of 20 GiB. When I ran the server, each request was taking hundreds of milliseconds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Installed iotop and found I was getting at most 8 MiB\/s during my performance tests. I also found this and more in the Cloud Engine performance dashboards:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"783\" src=\"https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/iograph-1024x783.png\" alt=\"\" class=\"wp-image-54\" srcset=\"https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/iograph-1024x783.png 1024w, https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/iograph-300x229.png 300w, https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/iograph-768x587.png 768w, https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/iograph.png 1334w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"> According to the <a href=\"https:\/\/docs.cloud.google.com\/compute\/docs\/disks\/performance#pd-standard_4\">disk performance guide<\/a> for a standard persistent disk on my two core machine should give at most 3000 read operations per second with 240 MiB\/s read throughput. These are disk maximums. You only get quota for a part of this, dependent on howhow much of the drive you have allocated. For instance, a regional standard persistent disk with 20GiB reserved will give you only 0.75 * 20 = 15 read operations per second and 0.12 * 20 = 2.4 MiB\/s. I was lucky to be getting the numbers I was.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, I decided to upgrade to SSD. This improved the read throughput 5-fold (to 46.07MiB\/s) and the read operations increased similarly (to 1750 operations per second). And it got the my latency down to 7ms. That&#8217;s a far cry from the sub 100\u03bcs I was hoping for, but it may improve as I scale up the disk size.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>byte64@vm:~$ .\/sstable profile enwiki.sst 40000\n\nProfile results for 40000 lookups:\n  Average time: 6.919699ms\n  Min time:     7.443\u00b5s\n  Max time:     50.337263ms<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The whole wikipedia corpus (with records chopped off at 1KB) is available at <a href=\"https:\/\/byte64.com\/search\/\">https:\/\/byte64.com\/search\/<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"471\" src=\"https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/sstabllookup-1024x471.png\" alt=\"\" class=\"wp-image-57\" srcset=\"https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/sstabllookup-1024x471.png 1024w, https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/sstabllookup-300x138.png 300w, https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/sstabllookup-768x354.png 768w, https:\/\/byte64.com\/wp-content\/uploads\/2026\/03\/sstabllookup.png 1490w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">~Andrew<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When I first put the SSTable server on Google&#8217;s Compute Engine, I opted for the cheapest machine: an e2-small (2 cores and 2GB ram) with a standard persistent disk of 20 GiB. When I ran the server, each request was taking hundreds of milliseconds. Installed iotop and found I was getting at most 8 MiB\/s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[13,14,8,7],"class_list":["post-53","post","type-post","status-publish","format-standard","hentry","category-google-cloud","tag-compute-engine","tag-ssd","tag-sstable","tag-wikipedia"],"_links":{"self":[{"href":"https:\/\/byte64.com\/index.php?rest_route=\/wp\/v2\/posts\/53","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/byte64.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/byte64.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/byte64.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/byte64.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=53"}],"version-history":[{"count":3,"href":"https:\/\/byte64.com\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions"}],"predecessor-version":[{"id":81,"href":"https:\/\/byte64.com\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions\/81"}],"wp:attachment":[{"href":"https:\/\/byte64.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/byte64.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/byte64.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}