Pinboard (jm)
https://pinboard.in/u:jm/public/
recent bookmarks from jmOrange-OpenSource/bmc-cache2021-09-20T09:14:30+00:00
https://github.com/Orange-OpenSource/bmc-cache
jmBMC (BPF Memory Cache) is an in-kernel cache for memcached. It enables runtime, crash-safe extension of the Linux kernel to process specific memcached requests before the execution of the standard network stack. BMC does not require modification of neither the Linux kernel nor the memcached application. Running memcached with BMC improves throughput by up to 18x compared to the vanilla memcached application.
]]>memcached bpf ebpf linux performance kernel via:brendangregghttps://pinboard.in/https://pinboard.in/u:jm/b:f4d6b7e18bd8/A large scale analysis of hundreds of in-memory cache clusters at Twitter | USENIX2021-01-10T21:43:15+00:00
https://www.usenix.org/conference/osdi20/presentation/yang
jmModern web services use in-memory caching extensively to increase throughput and reduce latency. There have been several workload analyses of production systems that have fueled research in improving the effectiveness of in-memory caching systems. However, the coverage is still sparse considering the wide spectrum of industrial cache use cases. In this work, we significantly further the understanding of real-world cache workloads by collecting production traces from 153 in-memory cache clusters at Twitter, sifting through over 80 TB of data, and sometimes interpreting the workloads in the context of the business logic behind them. We perform a comprehensive analysis to characterize cache workloads based on traffic pattern, time-to-live (TTL), popularity distribution, and size distribution. A fine-grained view of different workloads uncover the diversity of use cases: many are far more write-heavy or more skewed than previously shown and some display unique temporal patterns. We also observe that TTL is an important and sometimes defining parameter of cache working sets. Our simulations show that ideal replacement strategy in production caches can be surprising, for example, FIFO works the best for a large number of workloads.
]]>caching memcached memory twitter usenix via:marc-brookerhttps://pinboard.in/https://pinboard.in/u:jm/b:1d9a9c5c485a/Evolution of Application Data Caching : From RAM to SSD2018-07-12T21:50:28+00:00
https://medium.com/@NetflixTechBlog/evolution-of-application-data-caching-from-ram-to-ssd-a33d6fa7a690
jmMemcached provides an external storage shim called extstore, that supports storing of data on SSD (I2) and NVMe (I3). extstore is efficient in terms of cost & storage device utilization without compromising the speed and throughput. All the metadata (key & other metadata) is stored in RAM whereas the actual data is stored on flash.
]]>memcached netflix services storage memory ssd nvme extstore cachinghttps://pinboard.in/https://pinboard.in/u:jm/b:119cb46419e3/MemC3: Compact and concurrent Memcache with dumber caching and smarter hashing2016-11-02T17:53:21+00:00
https://blog.acolyer.org/2016/11/02/memc3-compact-and-concurrent-memcache-with-dumber-caching-and-smarter-hashing/
jmAn improved hashing algorithm called optimistic cuckoo hashing, and a CLOCK-based eviction algorithm that works in tandem with it. They are evaluated in the context of Memcached, where combined they give up to a 30% memory usage reduction and up to a 3x improvement in queries per second as compared to the default Memcached implementation on read-heavy workloads with small objects (as is typified by Facebook workloads).
]]>memcached performance key-value-stores storage databases cuckoo-hashing algorithms concurrency caching cache-eviction memory throughputhttps://pinboard.in/https://pinboard.in/u:jm/b:db93b3a89ad7/How both TCP and Ethernet checksums fail2015-10-14T14:10:54+00:00
http://www.evanjones.ca/tcp-and-ethernet-checksums-fail.html
jmAt Twitter, a team had a unusual failure where corrupt data ended up in memcache. The root cause appears to have been a switch that was corrupting packets. Most packets were being dropped and the throughput was much lower than normal, but some were still making it through. The hypothesis is that occasionally the corrupt packets had valid TCP and Ethernet checksums. One "lucky" packet stored corrupt data in memcache. Even after the switch was replaced, the errors continued until the cache was cleared.
YA occurrence of this bug. When it happens, it tends to _really_ screw things up, because it's so rare -- we had monitoring for this in Amazon, and when it occurred, it overwhelmingly occurred due to host-level kernel/libc/RAM issues rather than stuff in the network. Amazon design principles were to add app-level checksumming throughout, which of course catches the lot.]]>networking tcp ip twitter ethernet checksums packets memcachedhttps://pinboard.in/https://pinboard.in/u:jm/b:3f82b6d6833f/How Twitter Uses Redis to Scale2014-09-09T10:52:12+00:00
http://highscalability.com/blog/2014/9/8/how-twitter-uses-redis-to-scale-105tb-ram-39mm-qps-10000-ins.html
jmtwitter redis caching memcached yao-yu scalinghttps://pinboard.in/https://pinboard.in/u:jm/b:b7585fb83de9/Sirius by Comcast2014-04-24T09:16:58+00:00
http://comcast.github.io/sirius/overview.html
jmAt Comcast, our applications need convenient, low-latency access to important reference datasets. For example, our XfinityTV websites and apps need to use entertainment-related data to serve almost every API or web request to our datacenters: information like what year Casablanca was released, or how many episodes were in Season 7 of Seinfeld, or when the next episode of the Voice will be airing (and on which channel!).
We traditionally managed this information with a combination of relational databases and RESTful web services but yearned for something simpler than the ORM, HTTP client, and cache management code our developers dealt with on a daily basis. As main memory sizes on commodity servers continued to grow, however, we asked ourselves: How can we keep this reference data entirely in RAM, while ensuring it gets updated as needed and is easily accessible to application developers?
The Sirius distributed system library is our answer to that question, and we're happy to announce that we've made it available as an open source project. Sirius is written in Scala and uses the Akka actor system under the covers, but is easily usable by any JVM-based language.
Also includes a Paxos implementation with "fast follower" read-only slave replication. ASL2-licensed open source.
The only thing I can spot to be worried about is speed of startup; they note that apps need to replay a log at startup to rebuild state, which can be slow if unoptimized in my experience.
Update: in a twitter conversation at https://twitter.com/jon_moore/status/459363751893139456 , Jon Moore indicated they haven't had problems with this even with 'datasets consuming 10-20GB of heap', and have 'benchmarked a 5-node Sirius ingest cluster up to 1k updates/sec write throughput.' That's pretty solid!]]>open-source comcast paxos replication read-only datastores storage memory memcached redis sirius scala akka jvm librarieshttps://pinboard.in/https://pinboard.in/u:jm/b:54736b003116/MICA: A Holistic Approach To Fast In-Memory Key-Value Storage [paper]2014-04-09T09:19:24+00:00
http://www.cs.cmu.edu/~hl/papers/mica-nsdi2014.pdf
jmmica in-memory memory ram key-value-stores storage smp dpdk multicore memcached concurrencyhttps://pinboard.in/https://pinboard.in/u:jm/b:1b85262ba3f6/hlld2013-06-21T10:46:27+00:00
https://github.com/armon/hlld#readme
jma high-performance C server which is used to expose HyperLogLog sets and operations over them to networked clients. It uses a simple ASCII protocol which is human readable, and similar to memcached.
HyperLogLog's are a relatively new sketching data structure. They are used to estimate cardinality, i.e. the unique number of items in a set. They are based on the observation that any bit in a "good" hash function is indepedenent of any other bit and that the probability of getting a string of N bits all set to the same value is 1/(2^N). There is a lot more in the math, but that is the basic intuition. What is even more incredible is that the storage required to do the counting is log(log(N)). So with a 6 bit register, we can count well into the trillions. For more information, its best to read the papers referenced at the end. TL;DR: HyperLogLogs enable you to have a set with about 1.6% variance, using 3280 bytes, and estimate sizes in the trillions.
(via:cscotta)]]>hyper-log-log hlld hll data-structures memcached daemons sketching estimation big-data cardinality algorithms via:cscottahttps://pinboard.in/https://pinboard.in/u:jm/b:e287f3096462/memcached turns 10 years old2013-05-21T22:48:19+00:00
http://arstechnica.com/information-technology/2013/05/gimme-the-cache-memcached-turns-10-years-old-today/
jmbirthdays code via:alex-popescu open-source history malloc memory caching memcachedhttps://pinboard.in/https://pinboard.in/u:jm/b:36d9c6f1755c/High Scalability - Scaling Pinterest - From 0 to 10s of Billions of Page Views a Month in Two Years2013-04-15T21:17:02+00:00
http://highscalability.com/blog/2013/4/15/scaling-pinterest-from-0-to-10s-of-billions-of-page-views-a.html
jma [Cassandra-style] Cluster Management Algorithm is a SPOF. If there’s a bug it impacts every node. This took them down 4 times.
yeah, so, eek ;)]]>clustering sharding architecture aws scalability scaling pinterest via:matt-sergeant redis mysql memcachedhttps://pinboard.in/https://pinboard.in/u:jm/b:94eb7274d2de/bloomd2013-03-19T23:20:54+00:00
https://github.com/armon/bloomd
jma high-performance C server which is used to expose bloom filters and operations over them to networked clients. It uses a simple ASCII protocol which is human readable, and similar to memcached.(via Tony Finch)
]]>via:fanf memcached bloomd open-source bloom-filtershttps://pinboard.in/https://pinboard.in/u:jm/b:058c62c7b990/Fatcache2013-02-18T10:17:32+00:00
https://github.com/twitter/fatcache
jmtwitter ssd cache caching memcached memcache memory network storagehttps://pinboard.in/https://pinboard.in/u:jm/b:bf3d63bc9f21/Facebook monitoring cache with Claspin2012-09-20T12:26:34+00:00
https://www.facebook.com/notes/facebook-engineering/monitoring-cache-with-claspin/10151076705703920
jmfacebook monitoring dataviz heatmaps claspin cache memcached uihttps://pinboard.in/https://pinboard.in/u:jm/b:8925217f241f/Scaling: It's Not What It Used To Be2012-04-19T20:21:48+00:00
http://whilefalse.blogspot.com/2012/04/scaling-its-not-what-it-used-to-be.html
jmscaling nginx memcached haproxy redishttps://pinboard.in/https://pinboard.in/u:jm/b:3c6a1dbdfeb9/good taxonomy of memcached use cases2011-08-23T11:00:54+00:00
http://highscalability.com/bunch-great-strategies-using-memcached-and-mysql-better-together
jmmemcached caching mysql performance scalability via:jeffbarrhttps://pinboard.in/https://pinboard.in/u:jm/b:010b32939fd2/Quora’s Technology Examined2011-02-05T21:50:36+00:00
http://www.philwhln.com/quoras-technology-examined?ref=reddit
jmquora python nginx tornado comet mysql memcached thrift haproxy aws pylons via:nelsonhttps://pinboard.in/u:jm/b:0e6e81529af5/Cache on Delivery2010-08-05T20:53:49+00:00
http://www.slideshare.net/sensepost/cache-on-delivery
jmmemcached security hacks exploitshttps://pinboard.in/u:jm/b:595d89070be4/