10 Followers
44 Following
64 Posts
Engineer at AWS. Hands have touched EC2, Honeycode, RDS, and currently service ops acceleration. I have less hair now. Opinions are my own.

The "Left-Right" concurrency control algorithm is not tricky at all; in fact the algorithm for writers (here a single writer for simplicity) is almost trivial:

1. Update temporary copy with new value.
2. Redirect new readers to temporary copy.
3. Wait for readers of permanent copy to finish.
4. Update permanent copy with new value.
5. Redirect new readers to permanent copy.
6. Wait for readers of temporary copy to finish.

It's pretty clear from the above that writers are blocking (they have to wait for readers to finish) and readers are wait-free (they can always read from one of the copies). (This is no surprise since we know that wait-free reads and writes given a single writer requires R+1 copies, where R is the number of readers.) Also, the linearization point for writes is clearly step 2) above. So this is no substitute for MVCC (writers must still wait for readers), but it's remarkable (to me) that you can get wait-free readers with just 2 copies and a very simple algorithm.

One issue besides blocking writers is that readers are wait-free but not "invisible", since they must update a reference counter (or equivalent) when they start and finish. Unlike say OCC, this violates the "scalable concurrency commandment" that "readers must not write" (i.e., modify global shared memory). An epoch-based solution might have better scalability, but wouldn't scale down to fine-grained data structures like registers (e.g. individual database records). My own experience is that reference counts can cause major contention on even just a few cores, but of course disjoint reads will not cause any contention. I'm less worried about the single-writer limitation, since multiplexing single-writer approaches like flat combining are often more effective than directly supporting multiple lock-free writers anyway.

It's 🔥 HotOS 🔥 time and we (Georgios Liargkovas @gliargko, Michael Greenberg, Nikos Vasilakis, and I) would like to present hs*, a system that runs 🐚 scripts out-of-order to improve their performance. On a bioinformatics script hs achieves x3.9 speedup.

*hs does not stand for haskell but sh in the wrong order!

The key difference with prior work is that this system does not require ANY 🤯 information from the user (e.g., in the form of command specifications). How?

hs uses tracing 🔍 and isolation☣️. With tracing hs figures out what a command does while it runs and isolation lets hs run commands without fear that they will modify their surrounding system. If a command performs illegal side-effects, hs just throws its isolated environment to the trash 🗑️

As a side-benefit, with the help of @eric we isolated the isolation component of hs in its own tool called try (https://github.com/binpash/try). Try allows you to speculatively execute a command, check its effects on the file system, and only commit them if it hasn't broken anything.

If you want to learn more about this work you can read our HotOS paper (https://sigops.org/s/conferences/hotos/2023/papers/liargkovas.pdf) or watch our presentation at HotOS on Friday at 9am ET.

GitHub - binpash/try: Inspect a command's effects before modifying your live system

Inspect a command's effects before modifying your live system - binpash/try

GitHub
there is NO WAY there is NO FUCKING WAY
Do you have interns at work this summer? They may find this helpful (created by a summer intern at edX a few years ago):
Humans do their best work when they feel safe and supported. There is a contingent of humans who believe they do their best work when the stakes are high, everyone is yelling, and the deadline is imminent. This is called “surviving,” and while survival is fun, it’s not good work.
Happy 68th birthday to @JamesGosling !! The creator of #Java, which is the predecessor of all JVM languages e.g. #Kotlin and #Scala #programming #ComputerHistory
New – Amazon Aurora I/O-Optimized Cluster Configuration with Up to 40% Cost Savings for I/O-Intensive Applications 👉 Improved price performance and predictable pricing for I/O-intensive apps, such as e-commerce, payment processing systems https://aws.amazon.com/blogs/aws/new-amazon-aurora-i-o-optimized-cluster-configuration-with-up-to-40-cost-savings-for-i-o-intensive-applications/ #AWS #Database
New – Amazon Aurora I/O-Optimized Cluster Configuration with Up to 40% Cost Savings for I/O-Intensive Applications | Amazon Web Services

Since Amazon Aurora launched in 2014, hundreds of thousands of customers have chosen Aurora to run their most demanding applications. Aurora provides unparalleled high performance and availability at global scale with full MySQL and PostgreSQL compatibility at up to one-tenth the cost of commercial databases. Many customers benefit from the cost-effectiveness of Aurora’s current simple, pay-per-request […]

Amazon Web Services
Postmortem Analysis in Cargo | Inside Rust Blog

Want to follow along with Rust development? Curious how you might get involved? Take a look!

Found the forest where Home Depot gets their two-by-fours.
AWS Lambda now supports Java 17 👏 This runtime also supports Lambda SnapStart, so you can upgrade to the latest managed runtime without losing performance improvements https://aws.amazon.com/blogs/compute/java-17-runtime-now-available-on-aws-lambda/ #AWS #Serverless #Java
AWS Lambda now supports Java 17 | Amazon Web Services

This post was written by Mark Sailes, Senior Specialist Solutions Architect, Serverless. You can now develop AWS Lambda functions with the Amazon Corretto distribution of Java 17. This version of Corretto comes with long-term support (LTS), which means it will receive updates and bug fixes for an extended period, providing stability and reliability to developers […]

Amazon Web Services