prometheus-cpp
atomic-story
prometheus-cpp | atomic-story | |
---|---|---|
4 | 2 | |
872 | 12 | |
- | - | |
7.8 | 1.8 | |
about 1 month ago | over 2 years ago | |
C++ | Rust | |
GNU General Public License v3.0 or later | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
prometheus-cpp
-
C++ Concurrency Model on x86 for Dummies
Rust does have some very cool mechanisms for safety, including in the presence of concurrency.
But this thread is generating blowback from someone saying: “slow down there with the hand-rolled atomic operations, you can hand-roll your multi-threaded locking strategy and it’ll be way safer at a modest cost!”
So, probably not the target audience for Rust ;)
I use a lot of C++ still because there are libraries I want and I have a significant investment in existing code, but I’d love to get to something more modern.
Hand-rolled atomics and load/store relaxation in application code make even seasoned C++ hackers a bit nervous: we saw this shit from business logic hackers at FB all the time and my colleague coined the term “aggressively intermediate” for the style.
I don’t mean to pick on the author of a quite good library (and it is quite good), but I ran across this the other day:
https://github.com/jupp0r/prometheus-cpp/blob/master/core/sr...
It’s correct (I think, very easy to be wrong about this sort of thing), but what are we measuring here where we can’t delegate that CAS into pthread? Branch mispredictions?
Either threads are fighting over whatever cache line that’s on (exclusive -> invalid -> exclusive -> invalid), or not. If they are, I’ve just deprived the scheduler of the opportunity to wake me up when the other 59 threads are done. If they’re not, I’ve maybe saved like one line in my L1.
And in something like a metrics library, you could be wrong for a very long time before someone pinned it down.
-
Debugging/optimizing/diagnostic tools for C++
Some metric collecting tool, for example, Prometheus and its client library for C++
-
Data Telemetry for Application Monitoring
You can use https://github.com/jupp0r/prometheus-cpp (your custom data) in combination with https://grafana.com/ that has plugins for things like cpu usage.
-
Dashboard for my C++ application
Grafana and Prometheus is what I’d use if you’re deploying this in Kubernetes. I haven’t used the C++ library, but generally you can just add a Prometheus client library (e.g. https://github.com/jupp0r/prometheus-cpp ) which makes it quite easy to instrument your application and expose metrics via HTTP. Then you need to configure Prometheus to scrape metrics from your application.
atomic-story
-
C++ Concurrency Model on x86 for Dummies
What a great article. I have been trying to compile some examples here https://github.com/blasrodri/atomic-story
-
Introducing atomic-story
The code can be found here: https://github.com/blasrodri/atomic-story
What are some alternatives?
icinga2 - The core of our monitoring platform with a powerful configuration language and REST API.
lion - Where Lions Roam: RISC-V on the VELDT
skywalking - APM, Application Performance Monitoring System
abseil-cpp - Abseil Common Libraries (C++)
Grafana - The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
libcxx - Project moved to: https://github.com/llvm/llvm-project
mtail - extract internal monitoring data from application logs for collection in a timeseries database
prometheus - The Prometheus monitoring system and time series database.
bloaty - Bloaty: a size profiler for binaries
pixie - Instant Kubernetes-Native Application Observability