Memcached – Caching Beyond RAM: Riding the Cliff
memcached.org
memcached.org
Also what about diurnal patterns? Can there be a way to dynamically react and save power..
Interesting reference to the morning paper. But don't get how that fits into the story?
https://blog.acolyer.org/2018/10/26/robinhood-tail-latency-a...
2) dunno! For RAM that's super hard. for disk I'm hoping tiering will do something. ie; for on-peak you can add extra NBD space then remove it off-peak.
3) referenced tail latency because most of the testing focuses on displaying latency outliers and how the system generally minimizes them.
If you don't have any cache layer at all, that's a standard approach.
The original question was that it can be really hard to determine how much adding RAM will offload from the disk. IE: with extstore recent objects are served by RAM and never disk, so they don't count against your IO balance. If you're coming from a RAM backed system that has 500k requests per second, it's going to take some creative introspection to figure out how much RAM you'd need to keep the disk accesses below 400k, or whatever your target is.
Along those lines I just suggested a simple experiment. which is to just take an existing fully specced instance, add a disk, and test a few RAM settings to see how it looks. Most actual users of extstore have just done that since they're extending/replacing an existing cluster.
There're actually other ways you can simply read the numbers out of memcached but it just takes more effort or familiarity with its internals.
https://github.com/aerospike/act
Aerospike has been engineered to perform well in this exact space. P99 <8ms over multiple TB of durable storage under a constant read/write rate.
Youll also want to be cognizant of convex “shoulders” in the distribution that will trip up naive optimization algorithms. I do t have the link offhand, but search for hill climbing in relation to CDFs. Some related work might be in the relatively unexplored “cache insertion” problem area. Check out TinyLFU as an example of knowing what to cache being more beneficial than what to evict.
For more advanced techniques look in to some of the published work from places like Coho Data. They had a great paper back at usenix 2015ish around optimizing placement in dynamic workloads across different storage media.
And lastly experimentation is great to prove a hypotheis, but not the most effective discovery. Youll want to get representative workload traces and use those to replay/simulate against different constraints. Check out Fio and its IO trace capabilities for an example.
RDMA NIC + nvme got 90%+ latency reduction over noname NIC + sata ssd for Alibaba in a large DC environment.
Under what scenario would Memcached be better than Redis in 2019 if you are starting new?
Also, if you are running on prem, you can optimize your VM for cores/RAM. At least on AWS, you can’t perfectly optimize your core count versus RAM vs speed.
But then again, if I were running on prem, I might use Redis because it handles use cases by itself that it would take Memcached+ other servers to manage. With cloud hosting, I could use managed purpose built services if I needed more features than Memcached can handle by itself.
memcached does one thing. redis does a bunch. They are different.