Loading .gitlab-ci.yml +2 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ gkfs: -DGKFS_INSTALL_TESTS:BOOL=ON -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} -DGKFS_USE_GUIDED_DISTRIBUTION:BOOL=ON -DGKFS_ENABLE_PARALLAX:BOOL=ON -DGKFS_ENABLE_ROCKSDB:BOOL=ON ${CI_PROJECT_DIR} - make -j$(nproc) install # reduce artifacts size Loading CMakeLists.txt +3 −25 Original line number Diff line number Diff line Loading @@ -119,16 +119,12 @@ include(gkfs-code-coverage) set(CMAKE_EXPORT_COMPILE_COMMANDS 0) # Rocksdb dependencies find_package(LZ4 REQUIRED) find_package(JeMalloc) # required if rocksdb has been build with jemalloc find_package(RocksDB REQUIRED) # margo dependencies find_package(Mercury REQUIRED) find_package(Abt REQUIRED) find_package(Margo REQUIRED) find_package(Syscall_intercept REQUIRED) find_package(Parallax REQUIRED) find_package(Threads REQUIRED) # parallax find_package(yaml REQUIRED) Loading Loading @@ -184,6 +180,8 @@ if (GKFS_ENABLE_AGIOS) find_package(AGIOS REQUIRED) endif () option(GKFS_ENABLE_PARALLAX "Enable Parallax db backend" OFF) option(GKFS_ENABLE_ROCKSDB "Enable ROCKSDB backend" ON) set(CLIENT_LOG_MESSAGE_SIZE 1024 CACHE STRING "Maximum size of a log message in the client library") add_definitions(-DLIBGKFS_LOG_MESSAGE_SIZE=${CLIENT_LOG_MESSAGE_SIZE}) Loading @@ -201,27 +199,7 @@ endif() configure_file(include/common/cmake_configure.hpp.in include/common/cmake_configure.hpp) # Imported target add_library(RocksDB INTERFACE IMPORTED GLOBAL) target_link_libraries(RocksDB INTERFACE ${ROCKSDB_LIBRARIES} # rocksdb libs ${LZ4_LIBRARIES} ) if (${JeMalloc_FOUND}) target_link_libraries(RocksDB INTERFACE ${JEMALLOC_LIBRARIES} ) endif () # we cannot use target_include_directories with CMake < 3.11 set_target_properties(RocksDB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ROCKSDB_INCLUDE_DIRS} ) add_library(CLI11 INTERFACE) # we cannot use target_include_directories with CMake < 3.11 Loading README.md +8 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,14 @@ Then, the `examples/distributors/guided/generate.py` scrpt is used to create the Finally, modify `guided_config.txt` to your distribution requirements. ### Metadata Backends There are two different metadata backends in GekkoFS. The default one uses `rocksdb`, however an alternative based on `PARALLAX` from `FORTH` is available. To enable it use the `-DGKFS_ENABLE_PARALLAX:BOOL=ON` option, you can also disable `rocksdb` with `-DGKFS_ENABLE_ROCKSDB:BOOL=ON`. Once it is enabled, `--dbbackend` option will be functional. ### Acknowledgment This software was partially supported by the EC H2020 funded NEXTGenIO project (Project ID: 671951, www.nextgenio.eu). Loading include/daemon/backend/metadata/db.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -38,8 +38,9 @@ #include <tuple> #include <daemon/backend/metadata/metadata_backend.hpp> #include <daemon/backend/metadata/rocksdb_backend.hpp> #ifdef GKFS_ENABLE_PARALLAX #include <daemon/backend/metadata/parallax_backend.hpp> #endif namespace rdb = rocksdb; namespace gkfs::metadata { Loading src/daemon/backend/metadata/CMakeLists.txt +63 −7 Original line number Diff line number Diff line Loading @@ -43,20 +43,75 @@ if (HAS_LIBURING) set(LIBURING "-luring") endif() target_sources(metadata_db set(DB_DEFAULT_SOURCES PUBLIC ${INCLUDE_DIR}/daemon/backend/metadata/db.hpp ${INCLUDE_DIR}/daemon/backend/exceptions.hpp ${INCLUDE_DIR}/daemon/backend/metadata/metadata_backend.hpp ${INCLUDE_DIR}/daemon/backend/metadata/rocksdb_backend.hpp ${INCLUDE_DIR}/daemon/backend/metadata/parallax_backend.hpp PRIVATE ${INCLUDE_DIR}/daemon/backend/metadata/merge.hpp ${CMAKE_CURRENT_LIST_DIR}/merge.cpp ${CMAKE_CURRENT_LIST_DIR}/db.cpp ) if (GKFS_ENABLE_ROCKSDB) # Rocksdb dependencies find_package(LZ4 REQUIRED) find_package(JeMalloc) # required if rocksdb has been build with jemalloc find_package(RocksDB REQUIRED) # Imported target add_library(RocksDB INTERFACE IMPORTED GLOBAL) target_link_libraries(RocksDB INTERFACE ${ROCKSDB_LIBRARIES} # rocksdb libs ${LZ4_LIBRARIES} ) if (${JeMalloc_FOUND}) target_link_libraries(RocksDB INTERFACE ${JEMALLOC_LIBRARIES} ) endif () # we cannot use target_include_directories with CMake < 3.11 set_target_properties(RocksDB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ROCKSDB_INCLUDE_DIRS} ) set(DB_ROCKSDB_SOURCES PUBLIC ${INCLUDE_DIR}/daemon/backend/metadata/rocksdb_backend.hpp PRIVATE ${CMAKE_CURRENT_LIST_DIR}/rocksdb_backend.cpp ) target_compile_definitions(metadata_db PUBLIC GKFS_ENABLE_ROCKSDB ) endif() if (GKFS_ENABLE_PARALLAX) find_package(Parallax REQUIRED) set(DB_PARALLAX_SOURCES PUBLIC ${INCLUDE_DIR}/daemon/backend/metadata/parallax_backend.hpp PRIVATE ${CMAKE_CURRENT_LIST_DIR}/parallax_backend.cpp ) target_compile_definitions(metadata_db PUBLIC GKFS_ENABLE_PARALLAX ) add_library(Parallax INTERFACE IMPORTED GLOBAL) endif() target_sources(metadata_db ${DB_DEFAULT_SOURCES} ${DB_PARALLAX_SOURCES} ${DB_ROCKSDB_SOURCES}) add_library(metadata_module STATIC Loading @@ -73,7 +128,8 @@ target_link_libraries(metadata_module PUBLIC spdlog ) add_library(Parallax INTERFACE IMPORTED GLOBAL) target_link_libraries(metadata_db ${PARALLAX_LIBRARY} Loading Loading
.gitlab-ci.yml +2 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ gkfs: -DGKFS_INSTALL_TESTS:BOOL=ON -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} -DGKFS_USE_GUIDED_DISTRIBUTION:BOOL=ON -DGKFS_ENABLE_PARALLAX:BOOL=ON -DGKFS_ENABLE_ROCKSDB:BOOL=ON ${CI_PROJECT_DIR} - make -j$(nproc) install # reduce artifacts size Loading
CMakeLists.txt +3 −25 Original line number Diff line number Diff line Loading @@ -119,16 +119,12 @@ include(gkfs-code-coverage) set(CMAKE_EXPORT_COMPILE_COMMANDS 0) # Rocksdb dependencies find_package(LZ4 REQUIRED) find_package(JeMalloc) # required if rocksdb has been build with jemalloc find_package(RocksDB REQUIRED) # margo dependencies find_package(Mercury REQUIRED) find_package(Abt REQUIRED) find_package(Margo REQUIRED) find_package(Syscall_intercept REQUIRED) find_package(Parallax REQUIRED) find_package(Threads REQUIRED) # parallax find_package(yaml REQUIRED) Loading Loading @@ -184,6 +180,8 @@ if (GKFS_ENABLE_AGIOS) find_package(AGIOS REQUIRED) endif () option(GKFS_ENABLE_PARALLAX "Enable Parallax db backend" OFF) option(GKFS_ENABLE_ROCKSDB "Enable ROCKSDB backend" ON) set(CLIENT_LOG_MESSAGE_SIZE 1024 CACHE STRING "Maximum size of a log message in the client library") add_definitions(-DLIBGKFS_LOG_MESSAGE_SIZE=${CLIENT_LOG_MESSAGE_SIZE}) Loading @@ -201,27 +199,7 @@ endif() configure_file(include/common/cmake_configure.hpp.in include/common/cmake_configure.hpp) # Imported target add_library(RocksDB INTERFACE IMPORTED GLOBAL) target_link_libraries(RocksDB INTERFACE ${ROCKSDB_LIBRARIES} # rocksdb libs ${LZ4_LIBRARIES} ) if (${JeMalloc_FOUND}) target_link_libraries(RocksDB INTERFACE ${JEMALLOC_LIBRARIES} ) endif () # we cannot use target_include_directories with CMake < 3.11 set_target_properties(RocksDB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ROCKSDB_INCLUDE_DIRS} ) add_library(CLI11 INTERFACE) # we cannot use target_include_directories with CMake < 3.11 Loading
README.md +8 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,14 @@ Then, the `examples/distributors/guided/generate.py` scrpt is used to create the Finally, modify `guided_config.txt` to your distribution requirements. ### Metadata Backends There are two different metadata backends in GekkoFS. The default one uses `rocksdb`, however an alternative based on `PARALLAX` from `FORTH` is available. To enable it use the `-DGKFS_ENABLE_PARALLAX:BOOL=ON` option, you can also disable `rocksdb` with `-DGKFS_ENABLE_ROCKSDB:BOOL=ON`. Once it is enabled, `--dbbackend` option will be functional. ### Acknowledgment This software was partially supported by the EC H2020 funded NEXTGenIO project (Project ID: 671951, www.nextgenio.eu). Loading
include/daemon/backend/metadata/db.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -38,8 +38,9 @@ #include <tuple> #include <daemon/backend/metadata/metadata_backend.hpp> #include <daemon/backend/metadata/rocksdb_backend.hpp> #ifdef GKFS_ENABLE_PARALLAX #include <daemon/backend/metadata/parallax_backend.hpp> #endif namespace rdb = rocksdb; namespace gkfs::metadata { Loading
src/daemon/backend/metadata/CMakeLists.txt +63 −7 Original line number Diff line number Diff line Loading @@ -43,20 +43,75 @@ if (HAS_LIBURING) set(LIBURING "-luring") endif() target_sources(metadata_db set(DB_DEFAULT_SOURCES PUBLIC ${INCLUDE_DIR}/daemon/backend/metadata/db.hpp ${INCLUDE_DIR}/daemon/backend/exceptions.hpp ${INCLUDE_DIR}/daemon/backend/metadata/metadata_backend.hpp ${INCLUDE_DIR}/daemon/backend/metadata/rocksdb_backend.hpp ${INCLUDE_DIR}/daemon/backend/metadata/parallax_backend.hpp PRIVATE ${INCLUDE_DIR}/daemon/backend/metadata/merge.hpp ${CMAKE_CURRENT_LIST_DIR}/merge.cpp ${CMAKE_CURRENT_LIST_DIR}/db.cpp ) if (GKFS_ENABLE_ROCKSDB) # Rocksdb dependencies find_package(LZ4 REQUIRED) find_package(JeMalloc) # required if rocksdb has been build with jemalloc find_package(RocksDB REQUIRED) # Imported target add_library(RocksDB INTERFACE IMPORTED GLOBAL) target_link_libraries(RocksDB INTERFACE ${ROCKSDB_LIBRARIES} # rocksdb libs ${LZ4_LIBRARIES} ) if (${JeMalloc_FOUND}) target_link_libraries(RocksDB INTERFACE ${JEMALLOC_LIBRARIES} ) endif () # we cannot use target_include_directories with CMake < 3.11 set_target_properties(RocksDB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ROCKSDB_INCLUDE_DIRS} ) set(DB_ROCKSDB_SOURCES PUBLIC ${INCLUDE_DIR}/daemon/backend/metadata/rocksdb_backend.hpp PRIVATE ${CMAKE_CURRENT_LIST_DIR}/rocksdb_backend.cpp ) target_compile_definitions(metadata_db PUBLIC GKFS_ENABLE_ROCKSDB ) endif() if (GKFS_ENABLE_PARALLAX) find_package(Parallax REQUIRED) set(DB_PARALLAX_SOURCES PUBLIC ${INCLUDE_DIR}/daemon/backend/metadata/parallax_backend.hpp PRIVATE ${CMAKE_CURRENT_LIST_DIR}/parallax_backend.cpp ) target_compile_definitions(metadata_db PUBLIC GKFS_ENABLE_PARALLAX ) add_library(Parallax INTERFACE IMPORTED GLOBAL) endif() target_sources(metadata_db ${DB_DEFAULT_SOURCES} ${DB_PARALLAX_SOURCES} ${DB_ROCKSDB_SOURCES}) add_library(metadata_module STATIC Loading @@ -73,7 +128,8 @@ target_link_libraries(metadata_module PUBLIC spdlog ) add_library(Parallax INTERFACE IMPORTED GLOBAL) target_link_libraries(metadata_db ${PARALLAX_LIBRARY} Loading