# Blocktree Blocktree is a platform for writing distributed internet services. It aims to make it easy for anyone to spin-up servers to host the online services they rely on. ## Building Blocktree requires the nightly rust compiler to be build. The preferred way of installing this is using [rustup](https://rustup.rs/). Once you have rustup installed you can install the nightly toolchain with `rustup toolchain install nightly`. Building is as simple as executing `cargo build` in the root of this repository. The test suite can be run with `cargo test`. In order to run the tests `swtpm`, `libtss2` and `libfuse` need to be installed. ## Performance Measurement with flamegraph on Linux In order to use the `flamegraph` crate to on Linux you need to setup unprivileged access to the `perf` utility by your user account. After installing `perf` (on Arch with `pacman -S perf`), perform the following as root (if `perf` is not installed at `/usr/bin/perf` use `which perf` to locate it): ``` # groupadd perf_users # cd /usr/bin # ls -alhF perf -rwxr-xr-x 2 root root 11M Oct 19 15:12 perf # chgrp perf_users perf # ls -alhF -rwxr-xr-x 2 root perf_users 11M Oct 19 15:12 perf # chmod o-rwx perf # ls -alhF -rwxr-x--- 2 root perf_users 11M Oct 19 15:12 perf # setcap "cap_perfmon,cap_sys_ptrace,cap_syslog=ep" perf # setcap -v "cap_perfmon,cap_sys_ptrace,cap_syslog=ep" perf perf: OK # getcap perf perf = cap_sys_ptrace,cap_syslog,cap_perfmon+ep ``` (source: https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html) Finally add your user account to the perf_users group: ``` # usermod -aG perf_users ``` You'll need to logout and back in for the new group to take effect. You can confirm you're in the group with: ``` > groups tss audio perf_users ``` The you can run flamegraph as your user account with: ``` > cargo flamegraph --unit-test -- test:: ``` (source: https://crates.io/crates/flamegraph) ## License Copyright 2023 Delease, LLC. The software contained in this repository is licensed under the GNU Affero General Public License Version 3 or later. A copy of this license is provided in the LICENSE file in the root of this repository. A license which allows for the usage of this software without disclosing the source code of the system containing it may be purchased by contacting Delease, LLC.