A platform for self-hosting internet services.

Matthew Carr 4526f6d4b8 * Moved inessential material out of the README. 2 years ago
.vscode 63eec7c42b Got reads and writes working in the FUSE daemon. 2 years ago
crates 066ef2a03c Started implementing btfsd. 2 years ago
doc 4526f6d4b8 * Moved inessential material out of the README. 2 years ago
tools cea99ea617 Added a "Concepts" section to the book, 2 years ago
.gitignore cb02f2cbd8 Made major modification to the Block trait. 2 years ago
Cargo.lock 066ef2a03c Started implementing btfsd. 2 years ago
Cargo.toml 066ef2a03c Started implementing btfsd. 2 years ago
LICENSE 4526f6d4b8 * Moved inessential material out of the README. 2 years ago
README.md 4526f6d4b8 * Moved inessential material out of the README. 2 years ago
ROADMAP.md 4526f6d4b8 * Moved inessential material out of the README. 2 years ago
TODO.txt a2a899cbd5 Got the file system integration tests in btfuse to pass. 2 years ago

README.md

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. 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 <your username>

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 <your username> perf_users

The you can run flamegraph as your user account with:

> cargo flamegraph --unit-test <crate name> -- test::<test name>

(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.