Loading .gitmodules +1 −1 Original line number Diff line number Diff line [submodule "external/hermes"] path = external/hermes url = https://github.com/marcvef/hermes.git url = https://github.com/gekkofs/hermes.git [submodule "tests/scripts/bats"] path = tests/scripts/bats url = https://github.com/bats-core/bats-core.git Loading CHANGELOG.md +7 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,13 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### New - Added the GekkoFS proxy as an optional gateway between client and daemon. The proxy is started on each compute node that houses clients ([!191](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/191)). - Additional options for the GekkoFS daemon were added to integrate the GekkoFS proxy. - The proxy introduced a new executable: `gkfs_proxy`. - The `gkfs` run script has been significantly reworked to accommodate the proxy and a number of additional features, e.g., CPU socket pinning. - The environment variable `LIBGKFS_PROXY_PID_FILE` was added for clients when a non-default pid file path is in use. - Added client-side metrics including the periodic export to a file or ZeroMQ sink via the TCP protocol ([!176](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/176)). - CMake option added to enable this optional feature `-DGKFS_ENABLE_CLIENT_METRICS=ON` Loading README.md +44 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ GekkoFS testing support: `python38-devel` (**>Python-3.6 required**) execute the following command from the root of the source directory: `git submodule update --init` 3. Set up the necessary environment variables where the compiled direct GekkoFS dependencies will be installed at (we assume the path `/home/foo/gekkofs_deps/install` in the following) - `export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/foo/gekkofs_deps/install/lib:/home/foo/gekkofs_deps/install/lib64` - `export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/foo/gekkofs_deps/install/lib:/home/foo/gekkofs_deps/install/lib64` 4. Download and compile the direct dependencies, e.g., - Download example: `gekkofs/scripts/dl_dep.sh /home/foo/gekkofs_deps/git` - Compilation example: `gekkofs/scripts/compile_dep.sh /home/foo/gekkofs_deps/git /home/foo/gekkofs_deps/install` Loading Loading @@ -372,6 +373,48 @@ total_bytes: 1802366 total_iops: 4 ``` ### GekkoFS proxy The GekkoFS proxy is an additional (alternative) component that runs on each client and acts as gateway between the client and daemons. It can improve network stability, e.g., for opa-psm2, and provides a basis for future asynchronous I/O as well as client caching techniques to control file system semantics. The `gkfs` script fully supports the GekkoFS proxy and an example can be found in `scripts/run`. When using the proxy manually additional arguments are required on the daemon side, i.e., which network interface and protocol should be used: ```bash <daemon args> --proxy-listen eno1 --proxy-protocol ofi+sockets ``` The proxy is started thereafter: ```bash ./gkfs_proxy -H ./gkfs_hostfile --pid-path ./vef_gkfs_proxy.pid -p ofi+sockets ``` The shared hostfile was generated by the daemons whereas the pid_path is local to the machine and is detected by clients. The pid-path defaults to `/tmp/gkfs_proxy.pid`. Under default operation, clients detect automatically whether to use the proxy. If another proxy path is used, the environment variable `LIBGKFS_PROXY_PID_FILE` can be set for the clients. Alternatively, the `gkfs` automatically sets all required arguments: ```bash scripts/run/gkfs -c scripts/run/gkfs.conf -f start --proxy * [gkfs] Starting GekkoFS daemons (1 nodes) ... * [gkfs] GekkoFS daemons running * [gkfs] Startup time: 2.013 seconds * [gkfs] Starting GekkoFS proxies (1 nodes) ... * [gkfs] GekkoFS proxies running * [gkfs] Startup time: 5.002 seconds Press 'q' to exit ``` Please consult `include/config.hpp` for additional configuration options. Note, GekkoFS proxy does not support replication. ## Acknowledgment This software was partially supported by the EC H2020 funded NEXTGenIO project (Project ID: 671951, www.nextgenio.eu). Loading examples/distributors/guided/generate.py +2 −2 Original line number Diff line number Diff line ### # Copyright 2018-2020, Barcelona Supercomputing Center (BSC), Spain # Copyright 2015-2020, Johannes Gutenberg Universitaet Mainz, Germany # Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain # Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany # This software was partially supported by the # EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu). Loading include/client/rpc/forward_data_proxy.hpp +2 −2 Original line number Diff line number Diff line /* Copyright 2018-2020, Barcelona Supercomputing Center (BSC), Spain Copyright 2015-2020, Johannes Gutenberg Universitaet Mainz, Germany Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany This software was partially supported by the EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu). Loading Loading
.gitmodules +1 −1 Original line number Diff line number Diff line [submodule "external/hermes"] path = external/hermes url = https://github.com/marcvef/hermes.git url = https://github.com/gekkofs/hermes.git [submodule "tests/scripts/bats"] path = tests/scripts/bats url = https://github.com/bats-core/bats-core.git Loading
CHANGELOG.md +7 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,13 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### New - Added the GekkoFS proxy as an optional gateway between client and daemon. The proxy is started on each compute node that houses clients ([!191](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/191)). - Additional options for the GekkoFS daemon were added to integrate the GekkoFS proxy. - The proxy introduced a new executable: `gkfs_proxy`. - The `gkfs` run script has been significantly reworked to accommodate the proxy and a number of additional features, e.g., CPU socket pinning. - The environment variable `LIBGKFS_PROXY_PID_FILE` was added for clients when a non-default pid file path is in use. - Added client-side metrics including the periodic export to a file or ZeroMQ sink via the TCP protocol ([!176](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/176)). - CMake option added to enable this optional feature `-DGKFS_ENABLE_CLIENT_METRICS=ON` Loading
README.md +44 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ GekkoFS testing support: `python38-devel` (**>Python-3.6 required**) execute the following command from the root of the source directory: `git submodule update --init` 3. Set up the necessary environment variables where the compiled direct GekkoFS dependencies will be installed at (we assume the path `/home/foo/gekkofs_deps/install` in the following) - `export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/foo/gekkofs_deps/install/lib:/home/foo/gekkofs_deps/install/lib64` - `export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/foo/gekkofs_deps/install/lib:/home/foo/gekkofs_deps/install/lib64` 4. Download and compile the direct dependencies, e.g., - Download example: `gekkofs/scripts/dl_dep.sh /home/foo/gekkofs_deps/git` - Compilation example: `gekkofs/scripts/compile_dep.sh /home/foo/gekkofs_deps/git /home/foo/gekkofs_deps/install` Loading Loading @@ -372,6 +373,48 @@ total_bytes: 1802366 total_iops: 4 ``` ### GekkoFS proxy The GekkoFS proxy is an additional (alternative) component that runs on each client and acts as gateway between the client and daemons. It can improve network stability, e.g., for opa-psm2, and provides a basis for future asynchronous I/O as well as client caching techniques to control file system semantics. The `gkfs` script fully supports the GekkoFS proxy and an example can be found in `scripts/run`. When using the proxy manually additional arguments are required on the daemon side, i.e., which network interface and protocol should be used: ```bash <daemon args> --proxy-listen eno1 --proxy-protocol ofi+sockets ``` The proxy is started thereafter: ```bash ./gkfs_proxy -H ./gkfs_hostfile --pid-path ./vef_gkfs_proxy.pid -p ofi+sockets ``` The shared hostfile was generated by the daemons whereas the pid_path is local to the machine and is detected by clients. The pid-path defaults to `/tmp/gkfs_proxy.pid`. Under default operation, clients detect automatically whether to use the proxy. If another proxy path is used, the environment variable `LIBGKFS_PROXY_PID_FILE` can be set for the clients. Alternatively, the `gkfs` automatically sets all required arguments: ```bash scripts/run/gkfs -c scripts/run/gkfs.conf -f start --proxy * [gkfs] Starting GekkoFS daemons (1 nodes) ... * [gkfs] GekkoFS daemons running * [gkfs] Startup time: 2.013 seconds * [gkfs] Starting GekkoFS proxies (1 nodes) ... * [gkfs] GekkoFS proxies running * [gkfs] Startup time: 5.002 seconds Press 'q' to exit ``` Please consult `include/config.hpp` for additional configuration options. Note, GekkoFS proxy does not support replication. ## Acknowledgment This software was partially supported by the EC H2020 funded NEXTGenIO project (Project ID: 671951, www.nextgenio.eu). Loading
examples/distributors/guided/generate.py +2 −2 Original line number Diff line number Diff line ### # Copyright 2018-2020, Barcelona Supercomputing Center (BSC), Spain # Copyright 2015-2020, Johannes Gutenberg Universitaet Mainz, Germany # Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain # Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany # This software was partially supported by the # EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu). Loading
include/client/rpc/forward_data_proxy.hpp +2 −2 Original line number Diff line number Diff line /* Copyright 2018-2020, Barcelona Supercomputing Center (BSC), Spain Copyright 2015-2020, Johannes Gutenberg Universitaet Mainz, Germany Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany This software was partially supported by the EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu). Loading