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

Async rewrite #49

Open
wants to merge 86 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
e1220b4
Change some error handling to results
IsaacKhor Aug 13, 2024
382155a
Move tools to tool directory
IsaacKhor Aug 13, 2024
8511638
Move experiments to separate repo
IsaacKhor Aug 28, 2024
735466e
Add concurrencpp
IsaacKhor Aug 28, 2024
b61d3ce
Fix folly linking
IsaacKhor Sep 4, 2024
b4b7b2f
Add some coro utils
IsaacKhor Sep 4, 2024
152835d
some changes
IsaacKhor Sep 4, 2024
b3a0581
Fix some stuff
IsaacKhor Sep 5, 2024
2f6cf69
Get started on complete rewrite
IsaacKhor Sep 16, 2024
67e4414
Add cereal dep
IsaacKhor Sep 16, 2024
76ea220
Implement most of the logobj code
IsaacKhor Sep 18, 2024
486a609
Implement more of lsvd
IsaacKhor Sep 19, 2024
5dc9840
Replace cereal with zpp_bits
IsaacKhor Sep 19, 2024
825dbbd
Remove unused deps
IsaacKhor Sep 19, 2024
128a909
Move rewrite into main src dir
IsaacKhor Sep 20, 2024
75543ec
Clean up dependencies
IsaacKhor Sep 20, 2024
435aa50
More implementation
IsaacKhor Sep 24, 2024
2afeb4b
Get main running
IsaacKhor Sep 25, 2024
8dbfbd4
Get everything into a runnable state
IsaacKhor Sep 26, 2024
9456f52
Pass sequential test
IsaacKhor Sep 27, 2024
ec1a2b2
Integrate back into spdk bdevs
IsaacKhor Sep 27, 2024
000dd73
Reorganise tests
IsaacKhor Sep 27, 2024
6d3e944
Add cachelib and zppbits wraps
IsaacKhor Sep 27, 2024
ca8fce1
Fix ci
IsaacKhor Sep 27, 2024
d28d8e5
Set max rw size and other code review
IsaacKhor Oct 1, 2024
def84f8
Add vcpkg build files
IsaacKhor Oct 1, 2024
e2618ae
Fix meson subprojects
IsaacKhor Oct 1, 2024
0bf5dae
Fix meson and cmake build
IsaacKhor Oct 2, 2024
47670db
Delete unused utils
IsaacKhor Oct 3, 2024
a2cb5d0
Fix build and turn lto back onn
IsaacKhor Oct 3, 2024
d10ce5d
Add tool to analyse logobjs
IsaacKhor Oct 3, 2024
858f897
Fix multiple buffer mismatch bugs
IsaacKhor Oct 4, 2024
0c046cf
Fix read cache using the wrong key and add debug exe
IsaacKhor Oct 4, 2024
326704d
Fix rados memory leak
IsaacKhor Oct 4, 2024
1482788
Change to throwing asserts to fail ios instead of crashing
IsaacKhor Oct 4, 2024
f6e1c4e
Fix more bugs
IsaacKhor Oct 7, 2024
c4045bc
Add more integrity verification code
IsaacKhor Oct 8, 2024
3af65f0
Add new noop bdev type
IsaacKhor Oct 8, 2024
e022772
Add more benchmarking code
IsaacKhor Oct 8, 2024
d6102c4
Remove vcpkg and add conan instead
IsaacKhor Oct 8, 2024
c57d04a
Add latency measures
IsaacKhor Oct 10, 2024
8022aa5
Swap to abseil for error handling
IsaacKhor Oct 14, 2024
3a844be
Add more profiling code
IsaacKhor Oct 15, 2024
9ceb7f3
Fix thread pool core pin bug
IsaacKhor Oct 16, 2024
2b9a1a1
Cleanup old conan and instrumentation code
IsaacKhor Oct 16, 2024
6f3b560
Cleanup config, add uring and journal write
IsaacKhor Oct 17, 2024
a9df6f1
Get journal fully working
IsaacKhor Oct 17, 2024
b9fd989
Re-enable checkpointing
IsaacKhor Oct 17, 2024
4d8e4c1
Fix hang on sigint exit
IsaacKhor Oct 18, 2024
91364e5
Fix exit leak
IsaacKhor Oct 18, 2024
aa9454e
Update spdk to v24.09
IsaacKhor Oct 18, 2024
9005117
Add support for multiple images
IsaacKhor Oct 18, 2024
e41814e
Switch uring worker to poll sqes
IsaacKhor Oct 18, 2024
11afcfa
add conanfile to dockerfile
IsaacKhor Oct 21, 2024
f9670f7
remove noop bdev
IsaacKhor Oct 21, 2024
788ee7c
add more instrumentation
IsaacKhor Oct 21, 2024
51d426e
switch back to meson wraps
IsaacKhor Oct 21, 2024
5cd08be
add liburing dep
IsaacKhor Oct 21, 2024
5c8e8e3
switch docker to 2404
IsaacKhor Oct 21, 2024
63b8800
add tools to dockerfile and fix test
IsaacKhor Oct 22, 2024
120de39
remove obselete tools
IsaacKhor Oct 22, 2024
3ba03d8
add python3-rados to dockerfile
IsaacKhor Oct 22, 2024
3f3d3e2
add cache size and path to gflags
IsaacKhor Oct 22, 2024
b756614
document new cmdline flags
IsaacKhor Oct 22, 2024
539f0e5
Merge branch 'main' into async_rewrite
IsaacKhor Oct 22, 2024
ef3c155
remove old incorrect docs
IsaacKhor Oct 22, 2024
7614980
add timing info
IsaacKhor Oct 25, 2024
a31a6fa
Reorganise imports
IsaacKhor Oct 25, 2024
002b7e2
Use buildx
IsaacKhor Nov 11, 2024
90370c6
Add entrypoint to dockerfile
IsaacKhor Nov 13, 2024
beefe54
Change cache stat reporting to a flag
IsaacKhor Nov 14, 2024
d330744
Move report long ops into a flag
IsaacKhor Nov 14, 2024
0ea5c84
Move iotiming into a flag
IsaacKhor Nov 14, 2024
d486e81
Fix iotiming flag
IsaacKhor Nov 14, 2024
202e291
Move threadpool numthreads into a flag
IsaacKhor Nov 15, 2024
e604519
Remove hardcoded pool for new command
IsaacKhor Nov 18, 2024
10be600
Add uring to spdk
IsaacKhor Nov 21, 2024
f41acd0
normalise nqn and port across scripts
IsaacKhor Nov 22, 2024
cbe2e70
Fix numa issues
IsaacKhor Nov 22, 2024
a8325c0
Make worker thread numa restriction a flag
IsaacKhor Nov 22, 2024
2414100
Default numa restriction to false
IsaacKhor Nov 22, 2024
2b728dc
Write simple config parser
IsaacKhor Nov 22, 2024
87a2174
Print number of workers correctly
IsaacKhor Nov 22, 2024
3a620ab
Add dynamic scheduler
IsaacKhor Nov 25, 2024
90d1de9
Change spdk reactor mask to a flag
IsaacKhor Nov 25, 2024
7ab57bc
Unset default spdk scheduler
IsaacKhor Nov 25, 2024
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
7 changes: 0 additions & 7 deletions .env

This file was deleted.

15 changes: 3 additions & 12 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,15 @@ on:

jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v3

- name: Setup Clang 18
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 18

- name: Install dependencies
run: |
sudo apt update
make install-deps
sudo pip3 install --upgrade meson

- name: Build
run: |
Expand All @@ -36,13 +29,11 @@ jobs:

- name: Run tests
run: |
mkdir -p /tmp/lsvd-read
mkdir -p /tmp/lsvd-write
mkdir -p /tmp/lsvd
mkdir -p /mnt/lsvd

cd build-dbg
sudo meson test
sudo ./imgtool create --size 1g --pool pone --img test-img
sudo ./imgtool create pone test-img --size 5g

- name: Logs
if: always()
Expand Down
21 changes: 10 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
.cache/
.idea/
.ipynb_checkpoints/
.vscode/
.cache/
__pycache__/
venv/
.ipynb_checkpoints/

builddir
build
qemu/*.img
qemu/*.iso
qemu/bzImage
build-*/
perf.*
subprojects/spdk/
venv/

subprojects/liburing-*
subprojects/packagecache
subprojects/nlohmann_json-*
subprojects/abseil-*/
subprojects/cachelib/
subprojects/packagecache/
subprojects/zpp_bits-*/
6 changes: 0 additions & 6 deletions .gitmodules

This file was deleted.

26 changes: 16 additions & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
FROM ubuntu:22.04
FROM ubuntu:24.04

# TODO(knikolla): Move (or remove) dependencies in the appropriate Makefile section
RUN apt-get update \
&& apt-get install -y git curl build-essential sudo cmake python3 python3-pip libssl-dev \
&& pip install -U meson
RUN apt update && apt install -y git curl build-essential sudo cmake python3 python3-pip python3-rados clang-18 lld-18

RUN sudo apt-get install -y wget lsb-release software-properties-common gnupg \
&& wget https://apt.llvm.org/llvm.sh \
&& chmod +x llvm.sh \
&& ./llvm.sh 18
# install deps here to cache them
RUN apt install -y libboost-all-dev libdouble-conversion-dev libevent-dev \
libgflags-dev libgmock-dev libgoogle-glog-dev libgtest-dev \
liblz4-dev liblzma-dev libsnappy-dev libsodium-dev libunwind-dev \
libzstd-dev ninja-build zlib1g-dev liburing-dev \
libnuma-dev libarchive-dev libibverbs-dev librdmacm-dev \
python3-pyelftools libcunit1-dev libaio-dev nasm librados-dev librbd-dev \
libssl-dev libtool libncurses-dev help2man \
meson mold libfmt-dev librados-dev libjemalloc-dev libradospp-dev \
pkg-config uuid-dev fish

WORKDIR /app
COPY Makefile /app/Makefile
COPY meson.* /app/
COPY src /app/src
COPY subprojects /app/subprojects
COPY test /app/test
COPY tools /app/tools

RUN make install-deps \
&& make release
RUN make release
ENTRYPOINT ["/app/build-rel/lsvd"]
CMD ["none", "--lsvd_cache_ram=100", "--lsvd_cache_nvm=500"]
27 changes: 11 additions & 16 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.DEFAULT_GOAL := debug
.PHONY: setup setup-debug release debug paper clean
.PHONY: setup release debug clean cmake

setup:
meson setup --native-file meson.ini build-rel --buildtype=release -Db_sanitize=none
Expand All @@ -8,28 +8,23 @@ setup:

debug:
meson setup --native-file meson.ini build-dbg --buildtype=debug
cd build-dbg; meson compile
meson compile -C build-dbg

release:
meson setup --native-file meson.ini build-rel --buildtype=release -Db_sanitize=none
cd build-rel; meson compile

paper:
@$(MAKE) -C atc2024
meson compile -C build-rel

clean:
cd build-rel; meson compile --clean
cd build-dbg; meson compile --clean
meson -C build-rel clean
meson -C build-dbg clean

install-deps:
# Folly deps
sudo apt install -y libboost-all-dev libdouble-conversion-dev libevent-dev \
libgflags-dev libgmock-dev libgoogle-glog-dev libgtest-dev \
liblz4-dev liblzma-dev libsnappy-dev libsodium-dev libunwind-dev \
libzstd-dev ninja-build zlib1g-dev
# SPDK deps
sudo apt install -y libnuma-dev libarchive-dev libibverbs-dev librdmacm-dev \
python3-pyelftools libcunit1-dev libaio-dev nasm librados-dev librbd-dev
# LSVD deps
sudo apt install -y meson mold libfmt-dev librados-dev \
libjemalloc-dev libradospp-dev pkg-config uuid-dev ceph-common
libzstd-dev ninja-build zlib1g-dev liburing-dev \
libnuma-dev libarchive-dev libibverbs-dev librdmacm-dev \
python3-pyelftools libcunit1-dev libaio-dev nasm librados-dev librbd-dev \
libssl-dev libtool libncurses-dev help2man \
meson mold libfmt-dev librados-dev libjemalloc-dev libradospp-dev \
pkg-config uuid-dev fish
Loading