Commit f61afc37 authored by Ramon Nou's avatar Ramon Nou
Browse files

Added CMAKE options to enable only one metadata backend

parent 68b85cab
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
+3 −25
Original line number Diff line number Diff line
@@ -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)
@@ -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})
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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).
+2 −1
Original line number Diff line number Diff line
@@ -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 {
+63 −7
Original line number Diff line number Diff line
@@ -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
@@ -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