Comments (3)
For those of you following along at home, I am still working on this. I know it's been pretty silent, but I just published an experimental first release of a lock-free slab that I believe should offer the right performance characteristics to serve as the core for a span store abstraction.
My plan is to replace the storage layer in tracing-subscriber
's fmt
module with sharded-slab
, do some benchmarking, and then put together a span store abstraction on top of that which should be suitable for use in subscriber implementations.
from tracing.
From a discussion on Gitter with @hawkw. The current front-runner for the global span store is: Arc<RwLock<Vec<RwLock<T>>>
. Annotated, each type handles:
Arc
: global atomic access.- first
RwLock
: has contention on the span store. One optimization avenue is that the span store is sharded per-thread to reduce contention. If we are sharing per-thread, there might be an optimization opportunity to replaceArc
withRc
. Vec
: the span store with fast indexing approach where Span Ids are stored out of band. See http://www.ilikebigbits.com/2014_04_21_myth_of_ram_1.html for more details.- second
RwLock
: Maintains a lock on the span where contention is, in practice, is extremely rare. T
: the span itself.
from tracing.
The entire store might not need to be refcounted, as the store would live in a subscriber that is already refcounted by a Dispatcher.
from tracing.
Related Issues (20)
- Cannot write custom `Layer` that uses `Format` HOT 2
- Attribute for logging every line in the function HOT 2
- Leveled logging is ignoring RUST_LOG HOT 4
- `SubscriberBuilder::with_ansi` is incorrectly gated by the `ansi` feature in tracing-subscriber 0.3.18 HOT 1
- A Spans `on_close` method is called with 45 minutes delay HOT 3
- tracing-appender: log rotation doesn't work with musl target HOT 3
- Allow macro `instrument` to accept multiple `fields` and `skip` and merge them
- Broken link on docs.rs HOT 3
- non_blocking writer do not work HOT 4
- Make method env_var_name public HOT 1
- Broken link in documentation. HOT 2
- [tracing_subscriber::filter::Builder] Proposal for supporting multiple default directives / setting a default filter
- Unqualified `line!` macro usage inside `info!` causes issues with `ratatui_macros` HOT 1
- How to modify EnvFilter instead of replace HOT 3
- RollingFileAppender `prune_old_logs()` relies on `metadata().created()` which is not available on all platforms HOT 1
- Make Layer::with_writer not truncate the file HOT 4
- When will the feature(`valuable` suport`) be merged into stable version? HOT 1
- error[E0609]: no field `free` on type `REGISTRY` HOT 3
- Add an option for outputting span IDs HOT 1
- RollingFileAppender: prefix and suffix custom separator
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tracing.