prometheus-cpp
bloaty
prometheus-cpp | bloaty | |
---|---|---|
4 | 15 | |
872 | 4,548 | |
- | 0.7% | |
7.8 | 5.3 | |
about 1 month ago | about 1 month ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | Apache License 2.0 |
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.
bloaty
-
ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT [pdf]
ESP32s aren't really ‘lower level’ in the sense that anyone is likely to write assembly code for them (compared to, say, 8051 or PIC), other than maybe some driver author at Espressif. The big win from using RISC-V, other than name recognition, is mainstream compiler support (which is nothing to sneeze at, especially when it's largely funded by someone else).
When I worked on Matter¹, the Xtensa and RISC-V versions were basically fungible from the software point of view. (And really, so were other vendors' various ARMs.) We did find that Bloaty McBloatface² didn't support Xtensa, so I had to write an alternative.
¹ https://github.com/project-chip/connectedhomeip/
² https://github.com/google/bloaty
-
How to make smaller C and C++ binaries
I’ve gotten good insight into what takes up space in binaries by profiling with Bloaty (https://github.com/google/bloaty). My last profiling session showed that clang’s ThinLTO was inlining too aggressively in some cases, causing functions that should be tiny to be 75 kB+.
-
Reducing Tailscale’s binary size on macOS
I'm surprised they didn't go for the binary size analysis tools like
https://github.com/google/bloaty
Or goweight.
- C extension making everything bigger
- Template code bloat - how to measure, and what does that even mean?
-
Do you usually use periphery (or other code optimization tools) so that your final built release app is fast/ small?
I was able to shave a few % off our app binary with Bloaty. It’s pretty hard to use but once you figure out how to make regular expressions to properly classify things from your codebase, you can really visually analyze what your binary is composed of.
- how to compare two .so(shared lib) files for size
-
Debugging/optimizing/diagnostic tools for C++
Bloaty
- Bloaty McBloatface: a size profiler for binaries
- Bloaty McBloatface
What are some alternatives?
icinga2 - The core of our monitoring platform with a powerful configuration language and REST API.
Clipboard - 😎🏖️🐬 Your new, 𝙧𝙞𝙙𝙤𝙣𝙠𝙪𝙡𝙞𝙘𝙞𝙤𝙪𝙨𝙡𝙮 smart clipboard manager
skywalking - APM, Application Performance Monitoring System
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
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.
protozero - Minimalist protocol buffer decoder and encoder in C++
mtail - extract internal monitoring data from application logs for collection in a timeseries database
capstone - Capstone disassembly/disassembler framework for ARM, ARM64 (ARMv8), BPF, Ethereum VM, M68K, M680X, Mips, MOS65XX, PPC, RISC-V(rv32G/rv64G), SH, Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86.
prometheus - The Prometheus monitoring system and time series database.
periphery - A tool to identify unused code in Swift projects.
lion - Where Lions Roam: RISC-V on the VELDT
espthernet - ESP8266 10-Base-T Ethernet Driver