1,116 karma · joined April 1, 2013
It's everything else that's slow. For example, this is my machine
Startup finished in 14.552s (firmware) + 2.885s (loader) + 741ms (kernel) + 23.116s (initrd) + 11.191s (userspace) = 52.488s
It's quite difficult to do (voting) consensus like traditional Paxos correctly and quickly in the face of failures. Therefore, most systems (Raft, Zab, Multi-Paxos) aim to do total order broadcast instead, using a leader to sequence all operations and only fall back to (voting) consensus when total order broadcast is not feasible, like during leader election.
Beside Firecracker, there're all sorts of micro-VM being developed right now, such as crosvm, cloud-hypervisor, Kata's Dragonball, all on top of KVM.
Well, layering abstraction is the most effective way to deal with complexity. Our brain is too limited to know everything.
The people, who understand "under the hood", probably won't know much about what's "above the hood", like writing a website or mobile app. Therefore, we need experts on every layers.
* Hashtable
* SortedList
* SortedList<TKey, TValue>
* Dictionary<TKey, TValue>
* ConcurrentDictionary<TKey, TValue>
I don't even know C# (just Java), yet I know that you'd probably want to use Dictionary<TKey, TValue> most of the time.
This fall apart pretty quickly as soon as more developers join the project. Keeping consistency between multiple team members is hard without a reference point, which is what a framework like Tailwind provides.
Once configured, you can send a series of patches to the mailing list with a single git command, and with just another command apply a series of patches from the mailing list. It's actually quite efficient.
https://github.com/torvalds/linux/pull/17#issuecomment-56546...
Not really, SaaS built specialized automaton to reduce the engineering effort so that they can scale better. Therefore, if the users need to spend 1 hour/day on their infra, the SaaS can spend the same amount time to manage infra for 100s customer.
In some extreme cases, the software run by the SaaS is completely different to what the regular users use. For example, Confluence Cloud Kafka service does NOT actually run Kafka underneath, but a proprietary system called Kora that speak Kafka protocol.
`ReentrantLock` pretty much replaces every use case of `synchronize` and also supports `fairness`. The only downside of `ReentrantLock` is making the code more verbose, and inexperienced programmers might forget to release the lock.
In the end, writing became such a chore that I stopped altogether.
I used to have back up on local external drives too, but stopped doing that, since the process was manual and I often forgot about it.
Even for native platform like C/C++ or Rust, SIMD intrinsic took a while to develop, and required multiple iterations to mature for each supported platform. Plus, with newer CPU instructions being introduced, the job is never fully done.
We took way less time to move from Java 11 to 17 compare to the 8 -> 11 migration due to the change in deployment methods: instead of deploying jar file and run it with the server-provided JRE, we now use docker to ship our app + JRE to server.
For example, if you use it like a general purpose KV store like Redis, you'll have a bad time.
Another often encountered mistake is people, thinking it doesn't need to store much data, deploy ZK to a server with slow disk/network. Big mistake, as every write to ZK need to be broadcasted and synced to disk, a bottle-neck in disk and network IOPS will kill your ensembles.
https://gist.github.com/lleyton/9c0b75d065f37333ea9851b6cad1...
It did not workout, so they're switching to MIT.