Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update: nvm representation #68

Open
wants to merge 138 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
35e2a69
temp checkin
SajadKarim Dec 11, 2023
7c3540d
temp checkin
SajadKarim Dec 11, 2023
150e75d
temp checkin
SajadKarim Dec 12, 2023
71aa152
temp checkin
SajadKarim Dec 12, 2023
475488c
temp checkin
SajadKarim Dec 13, 2023
2bd71ec
temp checkin
SajadKarim Dec 13, 2023
3049e6a
temp checkin
SajadKarim Dec 13, 2023
d099fa0
push unfinished changes to compare code with the main branch.
SajadKarim Jan 2, 2024
cf2bd22
Fix some issues.
SajadKarim Jan 3, 2024
49c1464
Resolve some compilation issues.
SajadKarim Jan 3, 2024
fd12fcf
Bug fix in-progress.
SajadKarim Jan 3, 2024
2837d3b
Bug fix is still in progress.
SajadKarim Jan 4, 2024
3d8127f
Save the changes made thus far.
SajadKarim Jan 5, 2024
2a53dc6
Save the changes made thus far.
SajadKarim Jan 5, 2024
0ad3129
temp checkin
SajadKarim Jan 5, 2024
a92102e
Add changes to the unit tests that are related to NVM. For the time b…
SajadKarim Jan 5, 2024
ce98d94
Move changes related to reading individual entries from NVM.
SajadKarim Jan 8, 2024
4054cd7
Remove some unnecessary changes.
SajadKarim Jan 8, 2024
8003b75
NVM-optimized Bepsilon tree for Haura.
SajadKarim Jan 12, 2024
961bbd0
cow_bytes: optimize archive impl
fia0 Jan 30, 2024
f5b331e
dmu: only copy metadata from nvm nodes
fia0 Jan 30, 2024
49e5b0f
dmu: fix buf error
fia0 Jan 31, 2024
29e9c44
tree: prepare partial reading of nvm leaf nodes
fia0 Feb 1, 2024
bfa8a84
tests: add test for basic key-value tests
fia0 Feb 1, 2024
3592ded
tests: update snapshots
fia0 Feb 1, 2024
5cb58ea
tests: increase test db size for pivot key
fia0 Feb 1, 2024
eea86c5
tree: adjust nvm leaf impl
fia0 Feb 5, 2024
88b5b17
tree: improve leaf layout
fia0 Feb 8, 2024
01a44da
tree: shorten nvmleaf test names
fia0 Feb 9, 2024
36ae1b2
tree: segment private nvmleaf packing impl
fia0 Feb 9, 2024
307869f
tree: reduce redundant copies nvmleaf packing
fia0 Feb 9, 2024
e1a6e6e
tree: remove redundant wrapper type
fia0 Feb 9, 2024
19e518b
tree: test serialized data access nvmleaf
fia0 Feb 9, 2024
b758f3b
tree: allow iterating over partial leaf nodes
fia0 Feb 12, 2024
84388b2
tree: add memory usage fixme
fia0 Feb 12, 2024
8d1e6b7
bectl: update api usage
fia0 Feb 12, 2024
dc7d9bd
storage_pool: remove format pmem init
fia0 Feb 12, 2024
ca03e79
tree: drop internal option on `TakeChildBuffer`
fia0 Feb 13, 2024
2c7e32b
tree: fix tests
fia0 Feb 13, 2024
f2dff57
tree: base impl for dissected internal nodes
fia0 Feb 27, 2024
e06025b
tree: perform async fetches in dissected internal nodes
fia0 Mar 1, 2024
c7eec3d
tree: impl unimplemented nvm iterators
fia0 Mar 1, 2024
597a390
tree: fetch buffers on internal node inserts
fia0 Mar 1, 2024
c356a4e
tree: fix size calc nvm internal node and child buffer
fia0 Mar 5, 2024
afc55d3
tree: add buffers to nvm children iterator
fia0 Mar 5, 2024
f9709d3
tree: remove dbg msgs
fia0 Mar 5, 2024
eec5af7
tree: avoid possible deadlock on get
fia0 Mar 6, 2024
6fd3194
tree: replace btree map with simple vectors in partially serialized n…
fia0 Mar 7, 2024
360577a
tree: add raw ptr SlicedCowBytes
fia0 Mar 7, 2024
7ef4d47
betree: improve reliability of nvmleaf tests
fia0 Apr 3, 2024
1e10a8c
object: use generic checksum instead of xxhash
fia0 Apr 18, 2024
7f8a9fd
pmdk: use libc memcpy for reads
fia0 Apr 18, 2024
30a4ec5
pmdk: report closing errors
fia0 Apr 18, 2024
3ea79f4
haura: extend c interface with storage kind for object store
fia0 Apr 23, 2024
940f060
test commit with fio
fia0 Apr 23, 2024
567b5e1
tree: properly propagate sizes on splits
fia0 Apr 24, 2024
1466e30
tree: fix merges for nvm internal
fia0 Apr 29, 2024
649cdca
tree: fix child buffer fanout
fia0 Apr 30, 2024
6d8efc7
tree: propagate size diff properly
fia0 Apr 30, 2024
adae892
tree: fix size adjustment child insertion internal
fia0 Apr 30, 2024
bb69ae3
tree: fix child flush selection
fia0 Apr 30, 2024
431239a
tree: extend test nvminternal
fia0 Apr 30, 2024
9e2ed29
tree: fix various errors
fia0 May 3, 2024
4d08e2c
fio: add benchmark script with verbose fio outputs
fia0 May 3, 2024
ac2548e
fio-haura: sampler script delete tmp data from fio
fia0 May 6, 2024
af5c2f4
fio-haura: add some basic plots to fio output
fia0 May 6, 2024
6c94f34
fio: avg out log data to reduce size
fia0 May 7, 2024
aed9330
fio: plot read and write latencies
fia0 May 7, 2024
45113b1
tree: fetch messages from partial child buffers
fia0 May 8, 2024
4b7f840
dmu: remove incorrect read on partial access
fia0 May 8, 2024
d55b064
tree: iterator for nvm buffer
fia0 May 8, 2024
d1608c8
dmu: use checksum for initial partial fetch
fia0 May 16, 2024
a338e0c
tree: avoid underflow error
fia0 May 21, 2024
7915497
fio: add flags for testing
fia0 May 21, 2024
1fea33e
dmu: avoid close cache open cache behavior for insertion + fetch
fia0 May 21, 2024
ea126a3
tree: change exit condition find
fia0 May 22, 2024
13f3dbc
tests: drop cache between checks
fia0 May 22, 2024
bf4a9e0
fio: improve bench fio workflow
fia0 May 22, 2024
07500d2
tree: impl apply info nvminternal
fia0 May 22, 2024
f09408a
buffer: fix warning
fia0 May 22, 2024
9514911
betree: fix warnings
fia0 May 22, 2024
4caa1e5
tree: fix nvmleaf test
fia0 May 23, 2024
e57010b
tree: fix offset error childbuffer
fia0 May 23, 2024
4e6654a
betree: fix warnings
fia0 May 23, 2024
b2eacc9
fio: add nvm flag
fia0 Jun 25, 2024
7c3d60d
betree: make node variant layer dependent
fia0 Jul 1, 2024
bba44b8
tree: allow transformation memory leaf to block leaf
fia0 Jul 10, 2024
7894dd6
dmu: introduce preparation step to object serialization
fia0 Jul 10, 2024
ba4c224
tree: add transition coherent internal to disjoint
fia0 Jul 11, 2024
af9d5aa
tree: rename nvm internal node
fia0 Jul 12, 2024
a7bfc87
tree: avoid packed map redundant copy
fia0 Jul 12, 2024
3cbf6e3
cow_bytes: fix pos + len check for local range
fia0 Jul 12, 2024
ddeff59
tree: use helper struct for storage kinds
fia0 Jul 12, 2024
7333c61
tree: make min and max size dependent on storage kind
fia0 Jul 12, 2024
5e32a11
tree: use storage kind dependent split sizes
fia0 Jul 12, 2024
1319732
tmp
fia0 Jul 12, 2024
bf1173d
tmp
fia0 Jul 15, 2024
82ba392
tmp
fia0 Jul 17, 2024
b96e1a1
good perf config
fia0 Jul 17, 2024
3259ff2
adjustments
fia0 Aug 26, 2024
e7af3bf
prelim new memory node
fia0 Aug 27, 2024
69dacda
fix tests
fia0 Aug 28, 2024
fc52b8d
fix internal parse
fia0 Aug 28, 2024
4944f28
working new internals
fia0 Aug 30, 2024
9491c7f
rename disjoint node
fia0 Sep 2, 2024
4f0f336
betree: fix warnings
fia0 Sep 2, 2024
90a4f4b
tree: rename nvm_child_buffer
fia0 Sep 2, 2024
89e84d3
tree: reorg
fia0 Sep 2, 2024
7df7743
vdev: avoid copies
fia0 Sep 3, 2024
d8f852d
dmu: introduce integrity modes
fia0 Sep 3, 2024
7963c87
size: add separate cache size
fia0 Sep 3, 2024
1dc69ba
dmu: avoid more copies
fia0 Sep 3, 2024
8cca20f
buffer: fix dealloc on owned buffers
fia0 Sep 3, 2024
5f8739f
buffer: assert self owned buffers in BufWrite
fia0 Sep 4, 2024
41bb843
betree: add get object size to c interface
fia0 Sep 4, 2024
8ac2263
fio: check if database can be used without prefilling
fia0 Sep 4, 2024
df25559
fio: line break on error
fia0 Sep 5, 2024
5d1b075
betree: return object size in ulonglong via c interface
fia0 Sep 5, 2024
2f1d252
bectl: add yaml config
fia0 Sep 6, 2024
ac62145
tmp
fia0 Sep 19, 2024
08c43eb
tree: remove memory copies copyless
fia0 Sep 26, 2024
5205112
tree: flush on edge cases
fia0 Sep 30, 2024
1d200a8
tree: fix copyless double ended iter
fia0 Sep 30, 2024
80abb5d
tree: propagate cache size change for copyless leafs
fia0 Oct 1, 2024
0698652
bench: sort runs in plots by max
fia0 Oct 1, 2024
90a05e3
bench: add ycsb A & B
fia0 Oct 1, 2024
d705feb
tree: transfer raw buf to raw sliced cow bytes
Oct 2, 2024
309efcf
tree: replace leaf with packed buffer
fia0 Oct 11, 2024
454def4
tree: fix sequential insertion tree construction
fia0 Feb 4, 2025
c6fceb6
tree: fix high fanout for copyless internal
fia0 Feb 5, 2025
0920afa
tree: use correct sizes on removal and update
fia0 Feb 6, 2025
016524a
tree: fix object cache size updates
fia0 Feb 11, 2025
30f8f4c
tree: fix cache size propagation
fia0 Feb 17, 2025
26dabf4
tree: better storage map default
fia0 Feb 18, 2025
a58a20d
tree: quick fix for size_delta for child buffer in internal node
fia0 Feb 18, 2025
eaa4ccb
tree: remove old size const
fia0 Feb 19, 2025
d352911
tree: remove single size counter
fia0 Mar 3, 2025
087374e
fio: reset error on failed reinit
fia0 Mar 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bectl/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ serde_json = "1.0"

jemallocator = { version = "0.3", features = [ "background_threads" ] }

figment = { version = "0.10", features = [ "json" ] }
figment = { version = "0.10", features = ["json", "yaml"] }

log = "0.4"
env_logger = "0.9"
Expand Down
8 changes: 5 additions & 3 deletions bectl/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ use std::{
use betree_storage_stack::{
cow_bytes::CowBytes,
database::{Database, DatabaseConfiguration, Superblock},
storage_pool::DiskOffset,
tree::{DefaultMessageAction, TreeLayer},
StoragePreference, storage_pool::DiskOffset,
StoragePreference,
};
use chrono::{DateTime, Utc};
use figment::providers::Format;
Expand Down Expand Up @@ -126,7 +127,7 @@ enum ObjMode {
},
Mv {
name: String,
new_name: String
new_name: String,
},
Meta {
obj_name: String,
Expand Down Expand Up @@ -179,7 +180,8 @@ fn bectl_main() -> Result<(), Error> {

let cfg: DatabaseConfiguration = figment::Figment::new()
.merge(DatabaseConfiguration::figment_default())
.merge(figment::providers::Json::file(opt.database_config))
.merge(figment::providers::Yaml::file(&opt.database_config))
.merge(figment::providers::Json::file(&opt.database_config))
.merge(DatabaseConfiguration::figment_env())
.extract()?;

Expand Down
6 changes: 4 additions & 2 deletions betree/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ rand = { version = "0.8", features = ["std_rng"] }
pmdk = { path = "./pmdk", optional = true }
rustc-hash = "1.1.0"
gxhash = "3.1.1"
rkyv = { version = "0.7.43", features = ["validation"] }
lazy_static = "1.4.0"
serde_yaml = "0.9.34"

[dev-dependencies]
rand_xorshift = "0.3"
Expand All @@ -81,8 +84,7 @@ figment_config = ["figment"]
# leaf vdev. This requires additional system calls due to time measuring and is
# therefore safeguarded into it's own feature
latency_metrics = []
experimental-api = []
nvm = ["pmdk"]
# Log the allocations and deallocations done for later analysis
allocation_log = []

cache-paranoia = []
4 changes: 2 additions & 2 deletions betree/haura-benchmarks/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ edition = "2018"
members = ["."]

[dependencies]
betree_storage_stack = { path = "..", features = ["experimental-api"]}
betree_storage_stack = { path = ".." }

structopt = "0.3"
figment = { version = "0.10", features = [ "json" ] }
figment = { version = "0.10", features = [ "json", "yaml" ] }
serde_json = "1"
libmedium = "0.7"
procfs = "0.16"
Expand Down
5 changes: 3 additions & 2 deletions betree/haura-benchmarks/haura-plots/haura_plots/ycsb_plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ def plot_grouped_c(path, runs, overall=False):
return

fig, ax = plt.subplots()
runs = sorted(runs, key=lambda run: max(run["results"]))
off = 1 / (len(runs) + 1)
for idx, run in enumerate(runs):
if not overall:
Expand All @@ -60,8 +61,8 @@ def plot_grouped_c(path, runs, overall=False):
group = runs[0]["group"].split('/')[-1:][0]
ax.set_title(f'YCSB Scaling | {group}')
else:
ax.set_title(f'YCSB Scaling')
ax.set_title(f'YCSB-C-esque Write Scaling (Key-Value)')
ax.set_ylabel("Throughput [op/s]")
ax.set_xlabel("Threads [#]")
extra = fig.legend(loc="upper left", bbox_to_anchor=(0.9, 0.89))
fig.savefig(f"{path}/ycsb_c_comparison.svg", bbox_extra_artists=(extra,), bbox_inches="tight")
fig.savefig(f"{path}/ycsb_c_comparison.svg", bbox_extra_artists=(extra,), bbox_inches="tight", transparent=True)
Loading
Loading