Skip to content

Commit

Permalink
Merge pull request #32 from pyroscope-io/0.5.3
Browse files Browse the repository at this point in the history
0.5.3
  • Loading branch information
omarabid authored Jun 27, 2022
2 parents 83b0bb2 + eaff8c0 commit ddc5d13
Show file tree
Hide file tree
Showing 50 changed files with 875 additions and 2,513 deletions.
9 changes: 9 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!--
Thanks for helping out!
Please link the appropriate issue from your PR.
If you don't have an issue, we'd recommend starting with one first so the PR can focus on the
implementation (unless its an obvious bug or documentation fix that will have
little conversation).
-->
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 2
updates:
- package-ecosystem: cargo
directory: "/"
schedule:
interval: weekly
time: "07:00"
open-pull-requests-limit: 10
labels:
- C-dependencies
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
labels:
- "C-dependencies"
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
# v0.5.3
## New features
- Add BackendConfig to make reporting of pid, thread_id and thread_name
optional.
- Backends can add a suffix to the "application_name"

## Bug Fixes
- **main**: fixed an obsecure bug when counting stacktraces ([Abid Omar](https://github.com/pyroscope-io/pyroscope-rs/commit/bdecaa13aeae3ce7d4c3d97f88bdd104ec35e7c5))

# v0.5.2
## New features
- Authentication Token support
Expand Down
11 changes: 11 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Contributing to Pyroscope

Thank you for your interest in contributing to Pyroscope! We welcome all people who want to contribute in a healthy and constructive manner within our community. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](CODE_OF_CONDUCT.md).

This document is a guide to help you through the process of contributing to Pyroscope.

## Where do I start

* Set up your [development environment](https://pyroscope.io/docs/developer-guide).
* Read the [style guides](https://pyroscope.io/docs/style-guide) we use.
* Check out the list of [good first issues](https://github.com/pyroscope-io/pyroscope/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Pyroscope Profiler Agent for continuous profiling of Rust, Python and Ruby appli
"""
keywords = ["pyroscope", "profiler", "profiling", "pprof"]
authors = ["Abid Omar <[email protected]>"]
version = "0.5.2"
version = "0.5.3"
edition = "2021"
license = "Apache-2.0"
homepage = "https://pyroscope.io/docs/rust"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Add this to your `Cargo.toml`:

```toml
[dependencies]
pyroscope = "0.5.2"
pyroscope = "0.5.3"
pyroscope_pprofrs = "0.2"
```

Expand Down
128 changes: 128 additions & 0 deletions examples/multi-thread-report.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
extern crate pyroscope;

use pyroscope::{PyroscopeAgent, Result};
use pyroscope_pprofrs::{pprof_backend, PprofConfig};
use std::{
collections::hash_map::DefaultHasher,
hash::{Hash, Hasher},
thread,
};

fn hash_rounds1(n: u64) -> u64 {
let hash_str = "Some string to hash";
let mut default_hasher = DefaultHasher::new();

for _ in 0..n {
for _ in 0..1000 {
default_hasher.write(hash_str.as_bytes());
}
hash_str.hash(&mut default_hasher);
}

n
}

fn hash_rounds2(n: u64) -> u64 {
let hash_str = "Some string to hash";
let mut default_hasher = DefaultHasher::new();

for _ in 0..n {
for _ in 0..1000 {
default_hasher.write(hash_str.as_bytes());
}
hash_str.hash(&mut default_hasher);
}

n
}

fn extra_rounds1(n: u64) -> u64 {
let hash_str = "Some string to hash";
let mut default_hasher = DefaultHasher::new();

for _ in 0..n {
for _ in 0..1000 {
default_hasher.write(hash_str.as_bytes());
}
hash_str.hash(&mut default_hasher);
}

n
}

fn extra_rounds2(n: u64) -> u64 {
let hash_str = "Some string to hash";
let mut default_hasher = DefaultHasher::new();

for _ in 0..n {
for _ in 0..1000 {
default_hasher.write(hash_str.as_bytes());
}
hash_str.hash(&mut default_hasher);
}

n
}

fn main() -> Result<()> {
let agent = PyroscopeAgent::builder("http://localhost:4040", "example.multithread.report")
.tags([("Host", "Rust")].to_vec())
.backend(pprof_backend(
PprofConfig::new()
.sample_rate(100)
.report_thread_id()
.report_thread_name(),
))
.build()?;

// Show start time
let start = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_secs();
println!("Start Time: {}", start);

// Start Agent
let agent_running = agent.start()?;

let (add_tag, remove_tag) = agent_running.tag_wrapper();

let handle_1 = thread::Builder::new()
.name("thread-1".to_string())
.spawn(move || {
hash_rounds1(300_000);
add_tag("extra".to_string(), "round-1".to_string()).unwrap();
extra_rounds1(200_000);
remove_tag("extra".to_string(), "round-1".to_string()).unwrap();
})?;

let (add_tag, remove_tag) = agent_running.tag_wrapper();

let handle_2 = thread::Builder::new()
.name("thread-2".to_string())
.spawn(move || {
add_tag("extra".to_string(), "round-2".to_string()).unwrap();
extra_rounds2(100_000);
remove_tag("extra".to_string(), "round-2".to_string()).unwrap();
hash_rounds2(500_000);
})?;

// Wait for the threads to complete
handle_1.join().unwrap();
handle_2.join().unwrap();

// Stop Agent
let agent_ready = agent_running.stop()?;

// Shutdown the Agent
agent_ready.shutdown();

// Show program exit time
let exit = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_secs();
println!("Exit Time: {}", exit);

Ok(())
}
2 changes: 1 addition & 1 deletion pyroscope_backends/pyroscope_pprofrs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ readme = "README.md"


[dependencies]
pprof = "0.9.1"
pprof = "0.10.0"
pyroscope = {version = "0.5.2", path = "../../" }
thiserror ="1.0"

Expand Down
Loading

0 comments on commit ddc5d13

Please sign in to comment.