2018-11-07 18:57:11 +00:00
|
|
|
# jemalloc-ctl
|
|
|
|
|
2020-07-22 07:39:21 +00:00
|
|
|
[![Travis-CI Status]][travis] [![Latest Version]][crates.io] [![docs]][docs.rs]
|
2018-11-07 18:57:11 +00:00
|
|
|
|
|
|
|
> A safe wrapper over `jemalloc`'s `mallctl*()` control and introspection APIs.
|
|
|
|
|
|
|
|
## Documentation
|
|
|
|
|
|
|
|
* [Latest release (docs.rs)][docs.rs]
|
|
|
|
|
|
|
|
## Platform support
|
|
|
|
|
2020-07-21 11:33:59 +00:00
|
|
|
Supported on all platforms supported by the [`tikv-jemallocator`] crate.
|
2018-11-07 18:57:11 +00:00
|
|
|
|
|
|
|
## Example
|
|
|
|
|
2018-11-09 09:29:17 +00:00
|
|
|
```no_run
|
2018-11-07 18:57:11 +00:00
|
|
|
|
|
|
|
use std::thread;
|
|
|
|
use std::time::Duration;
|
2020-07-21 11:33:59 +00:00
|
|
|
use tikv_jemalloc_ctl::{stats, epoch};
|
2018-11-07 18:57:11 +00:00
|
|
|
|
|
|
|
#[global_allocator]
|
2020-07-21 11:33:59 +00:00
|
|
|
static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
|
2018-11-07 18:57:11 +00:00
|
|
|
|
|
|
|
fn main() {
|
2018-11-09 09:29:17 +00:00
|
|
|
// Obtain a MIB for the `epoch`, `stats.allocated`, and
|
|
|
|
// `atats.resident` keys:
|
|
|
|
let e = epoch::mib().unwrap();
|
|
|
|
let allocated = stats::allocated::mib().unwrap();
|
|
|
|
let resident = stats::resident::mib().unwrap();
|
|
|
|
|
2018-11-07 18:57:11 +00:00
|
|
|
loop {
|
2018-11-09 09:29:17 +00:00
|
|
|
// Many statistics are cached and only updated
|
|
|
|
// when the epoch is advanced:
|
|
|
|
e.advance().unwrap();
|
|
|
|
|
|
|
|
// Read statistics using MIB key:
|
|
|
|
let allocated = allocated.read().unwrap();
|
|
|
|
let resident = resident.read().unwrap();
|
2018-11-07 18:57:11 +00:00
|
|
|
println!("{} bytes allocated/{} bytes resident", allocated, resident);
|
|
|
|
thread::sleep(Duration::from_secs(10));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under either of
|
|
|
|
|
|
|
|
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
|
|
http://opensource.org/licenses/MIT)
|
|
|
|
|
|
|
|
at your option.
|
|
|
|
|
|
|
|
### Contribution
|
|
|
|
|
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
|
|
for inclusion in `jemalloc-ctl` by you, as defined in the Apache-2.0 license,
|
|
|
|
shall be dual licensed as above, without any additional terms or conditions.
|
|
|
|
|
2020-07-21 11:33:59 +00:00
|
|
|
[`tikv-jemallocator`]: https://github.com/tikv/jemallocator
|
|
|
|
[travis]: https://travis-ci.com/tikv/jemallocator
|
|
|
|
[Travis-CI Status]: https://travis-ci.com/tikv/jemallocator.svg?branch=master
|
|
|
|
[Latest Version]: https://img.shields.io/crates/v/tikv-jemallocator.svg
|
|
|
|
[crates.io]: https://crates.io/crates/tikv-jemallocator
|
|
|
|
[docs]: https://docs.rs/tikv-jemallocator/badge.svg
|
|
|
|
[docs.rs]: https://docs.rs/tikv-jemallocator/
|