How a Single Line of Code Made a 24-Core Server Slower Than a Laptop

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • nosqlbench

    The open source, pluggable, nosql benchmarking suite.

  • Not directly related, but https://github.com/nosqlbench/nosqlbench is very flexible benchmark tool for Cassandra and other distributed systems

  • Folly

    An open-source C++ library developed and used at Facebook.

  • Can't speak for abseil and tbb, but in folly there are a few solutions for the common problem of sharing state between a writer that updates it very infrequently and concurrent readers that read it very frequently (typical use case is configs).

    The most performant solutions are RCU (https://github.com/facebook/folly/blob/main/folly/synchroniz...) and hazard pointers (https://github.com/facebook/folly/blob/main/folly/synchroniz...), but they're not quite as easy to use as a shared_ptr [1].

    Then there is simil-shared_ptr implemented with thread-local counters (https://github.com/facebook/folly/blob/main/folly/experiment...).

    If you absolutely need a std::shared_ptr (which can be the case if you're working with pre-existing interfaces) there is CoreCachedSharedPtr (https://github.com/facebook/folly/blob/main/folly/concurrenc...), which uses an aliasing trick to transparently maintain per-core reference counts, and scales linearly, but it works only when acquiring the shared_ptr, any subsequent copies of that would still cause contention if passed around in threads.

    [1] Google has a proposal to make a smart pointer based on RCU/hazptr, but I'm not a fan of it because generally RCU/hazptr guards need to be released in the same thread that acquired them, and hiding them in a freely movable object looks like a recipe for disaster to me, especially if paired with coroutines https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p05...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • FlameGraph

    Stack trace visualizer

  • Small note:

    > In Rust, it is very easy to generate flamegraphs with `cargo flamegraph`.

    ... Also in pretty much every other language, because this is just a wrapper around Brendan Gregg's FlameGraph visualizer: https://github.com/brendangregg/FlameGraph

  • linux

    Linux kernel source tree

  • https://github.com/torvalds/linux/commit/8e86f0b409a44193f15... was the commit that fixed this IIRC

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Apache Cassandra 4.0: Taming Tail Latencies with Java 16 ZGC

    2 projects | dev.to | 24 Jun 2021
  • What can we learn from Bootstrap CSS

    1 project | dev.to | 27 May 2024
  • Generate a Laravel CRUD (Create, Read, Update, Delete) in 5 minutes.

    2 projects | dev.to | 25 May 2024
  • Webix

    1 project | news.ycombinator.com | 24 May 2024
  • [Off Topic] Nano introdução do framework Angular para Devs do back

    1 project | dev.to | 22 May 2024