Loading CHANGELOG.md +5 −3 Original line number Diff line number Diff line Loading @@ -7,16 +7,16 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### New - Added a new script for starting and stopping daemons on multiple nodes ([!135](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/135)). - Added statistics gathering on daemons ([!132](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/132)). - Stats output can be enabled with: - `--enable-collection` collects normal statistics. - `--enable-chunkstats` collects extended chunk statistics. - Statistics output to file is controlled by `--output-stats <filename>` - Added Prometheus support for outputting statistics ([!132](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/132)): - Added Prometheus support for outputting statistics ([!132](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/132)): - Prometheus dependency optional and enabled at compile time with the CMake argument `GKFS_ENABLE_PROMETHEUS`. - `--enable-prometheus` enables statistics pushing to Prometheus if statistics are enabled. - `--prometheus-gateway` sets an IP and port for the Prometheus connection. Loading @@ -29,6 +29,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - `-c` argument has been moved to `--clean-rootdir-finish` and is now used to clean rootdir/metadir on daemon shutdown ([!110](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/110)). - Environment variable to change Daemon log levels was changed from `GKFS_LOG_LEVEL` to `GKFS_DAEMON_LOG_LEVEL` ([!135](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/135)). ### Removed - Removed old initialization code in the GekkoFS Loading README.md +47 −12 Original line number Diff line number Diff line Loading @@ -144,12 +144,49 @@ to be empty. For MPI application, the `LD_PRELOAD` variable can be passed with the `-x` argument for `mpirun/mpiexec`. ## Run GekkoFS daemons on multiple nodes (beta version!) The `scripts/run/gkfs` script can be used to simplify starting the GekkoFS daemon on one or multiple nodes. To start GekkoFS on multiple nodes, a Slurm environment that can execute `srun` is required. Users can further modify `scripts/run/gkfs.conf` to mold default configurations to their environment. The following options are available for `scripts/run/gkfs`: ```bash usage: gkfs [-h/--help] [-r/--rootdir <path>] [-m/--mountdir <path>] [-a/--args <daemon_args>] [-f/--foreground <false>] [--srun <false>] [-n/--numnodes <jobsize>] [--cpuspertask <64>] [--numactl <false>] [-v/--verbose <false>] {start,stop} This script simplifies the starting and stopping GekkoFS daemons. If daemons are started on multiple nodes, a Slurm environment is required. The script looks for the 'gkfs.conf' file in the same directory where additional permanent configurations can be set. positional arguments: command Command to execute: 'start' and 'stop' optional arguments: -h, --help Shows this help message and exits -r, --rootdir <path> Providing the rootdir path for GekkoFS daemons. -m, --mountdir <path> Providing the mountdir path for GekkoFS daemons. -a, --args <daemon_arguments> Add various additional daemon arguments, e.g., "-l ib0 -P ofi+psm2". -f, --foreground Starts the script in the foreground. Daemons are stopped by pressing 'q'. --srun Use srun to start daemons on multiple nodes. -n, --numnodes <n> GekkoFS daemons are started on n nodes. Nodelist is extracted from Slurm via the SLURM_JOB_ID env variable. --cpuspertask <#cores> Set the number of cores the daemons can use. Must use '--srun'. --numactl Use numactl for the daemon. Modify gkfs.conf for further numactl configurations. -c, --config Path to configuration file. By defaults looks for a 'gkfs.conf' in this directory. -v, --verbose Increase verbosity ``` ### Logging The following environment variables can be used to enable logging in the client library: `LIBGKFS_LOG=<module>` and `LIBGKFS_LOG_OUTPUT=<path/to/file>` to configure the output module and set the path to the log file of the client library. If not path is specified in `LIBGKFS_LOG_OUTPUT`, the client library will send log messages to `/tmp/gkfs_client.log`. The following environment variables can be used to enable logging in the client library: `LIBGKFS_LOG=<module>` and `LIBGKFS_LOG_OUTPUT=<path/to/file>` to configure the output module and set the path to the log file of the client library. If not path is specified in `LIBGKFS_LOG_OUTPUT`, the client library will send log messages to `/tmp/gkfs_client.log`. The following modules are available: Loading Loading @@ -182,13 +219,11 @@ setting the `LIBGKFS_LOG_SYSCALL_FILTER` environment variable. For instance, setting it to `LIBGKFS_LOG_SYSCALL_FILTER=epoll_wait,epoll_create` will filter out any log entries from the `epoll_wait()` and `epoll_create()` system calls. Additionally, setting the `LIBGKFS_LOG_OUTPUT_TRUNC` environment variable with a value different from `0` will instruct the logging subsystem to truncate the file used for logging, rather than append to it. Additionally, setting the `LIBGKFS_LOG_OUTPUT_TRUNC` environment variable with a value different from `0` will instruct the logging subsystem to truncate the file used for logging, rather than append to it. For the daemon, the `GKFS_DAEMON_LOG_PATH=<path/to/file>` environment variable can be provided to set the path to the log file, and the log module can be selected with the `GKFS_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` For the daemon, the `GKFS_DAEMON_LOG_PATH=<path/to/file>` environment variable can be provided to set the path to the log file, and the log module can be selected with the `GKFS_DAEMON_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` environment variable. # Miscellaneous Loading docs/sphinx/users/running.md +38 −1 Original line number Diff line number Diff line Loading @@ -136,6 +136,43 @@ to be empty. For MPI applications, the `LD_PRELOAD` and `LIBGKFS_HOSTS_FILE` variables can be passed with the `-x` argument for `mpirun/mpiexec`. ## Run GekkoFS daemons on multiple nodes (beta version!) The `scripts/run/gkfs` script can be used to simplify starting the GekkoFS daemon on one or multiple nodes. To start GekkoFS on multiple nodes, a Slurm environment that can execute `srun` is required. Users can further modify `scripts/run/gkfs.conf` to mold default configurations to their environment. The following options are available for `scripts/run/gkfs`: ```bash usage: gkfs [-h/--help] [-r/--rootdir <path>] [-m/--mountdir <path>] [-a/--args <daemon_args>] [-f/--foreground <false>] [--srun <false>] [-n/--numnodes <jobsize>] [--cpuspertask <64>] [--numactl <false>] [-v/--verbose <false>] {start,stop} This script simplifies the starting and stopping GekkoFS daemons. If daemons are started on multiple nodes, a Slurm environment is required. The script looks for the 'gkfs.conf' file in the same directory where additional permanent configurations can be set. positional arguments: command Command to execute: 'start' and 'stop' optional arguments: -h, --help Shows this help message and exits -r, --rootdir <path> Providing the rootdir path for GekkoFS daemons. -m, --mountdir <path> Providing the mountdir path for GekkoFS daemons. -a, --args <daemon_arguments> Add various additional daemon arguments, e.g., "-l ib0 -P ofi+psm2". -f, --foreground Starts the script in the foreground. Daemons are stopped by pressing 'q'. --srun Use srun to start daemons on multiple nodes. -n, --numnodes <n> GekkoFS daemons are started on n nodes. Nodelist is extracted from Slurm via the SLURM_JOB_ID env variable. --cpuspertask <#cores> Set the number of cores the daemons can use. Must use '--srun'. --numactl Use numactl for the daemon. Modify gkfs.conf for further numactl configurations. -c, --config Path to configuration file. By defaults looks for a 'gkfs.conf' in this directory. -v, --verbose Increase verbosity ``` ### Logging #### Client logging Loading Loading @@ -178,5 +215,5 @@ the logging subsystem to truncate the file used for logging, rather than append #### Daemon logging For the daemon, the `GKFS_DAEMON_LOG_PATH=<path/to/file>` environment variable can be provided to set the path to the log file, and the log module can be selected with the `GKFS_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` log file, and the log module can be selected with the `GKFS_DAEMON_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` environment variable whereas `trace` produces the most trace records while `info` is the default value. No newline at end of file include/config.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ // environment prefixes (are concatenated in env module at compile time) #define CLIENT_ENV_PREFIX "LIBGKFS_" #define DAEMON_ENV_PREFIX "GKFS_" #define DAEMON_ENV_PREFIX "GKFS_DAEMON_" #define COMMON_ENV_PREFIX "GKFS_" namespace gkfs::config { Loading include/daemon/env.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ #include <config.hpp> #define ADD_PREFIX(str) DAEMON_ENV_PREFIX str #define ADD_PREFIX(str) COMMON_ENV_PREFIX str /* Environment variables for the GekkoFS daemon */ namespace gkfs::env { Loading Loading
CHANGELOG.md +5 −3 Original line number Diff line number Diff line Loading @@ -7,16 +7,16 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### New - Added a new script for starting and stopping daemons on multiple nodes ([!135](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/135)). - Added statistics gathering on daemons ([!132](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/132)). - Stats output can be enabled with: - `--enable-collection` collects normal statistics. - `--enable-chunkstats` collects extended chunk statistics. - Statistics output to file is controlled by `--output-stats <filename>` - Added Prometheus support for outputting statistics ([!132](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/132)): - Added Prometheus support for outputting statistics ([!132](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/132)): - Prometheus dependency optional and enabled at compile time with the CMake argument `GKFS_ENABLE_PROMETHEUS`. - `--enable-prometheus` enables statistics pushing to Prometheus if statistics are enabled. - `--prometheus-gateway` sets an IP and port for the Prometheus connection. Loading @@ -29,6 +29,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - `-c` argument has been moved to `--clean-rootdir-finish` and is now used to clean rootdir/metadir on daemon shutdown ([!110](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/110)). - Environment variable to change Daemon log levels was changed from `GKFS_LOG_LEVEL` to `GKFS_DAEMON_LOG_LEVEL` ([!135](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/135)). ### Removed - Removed old initialization code in the GekkoFS Loading
README.md +47 −12 Original line number Diff line number Diff line Loading @@ -144,12 +144,49 @@ to be empty. For MPI application, the `LD_PRELOAD` variable can be passed with the `-x` argument for `mpirun/mpiexec`. ## Run GekkoFS daemons on multiple nodes (beta version!) The `scripts/run/gkfs` script can be used to simplify starting the GekkoFS daemon on one or multiple nodes. To start GekkoFS on multiple nodes, a Slurm environment that can execute `srun` is required. Users can further modify `scripts/run/gkfs.conf` to mold default configurations to their environment. The following options are available for `scripts/run/gkfs`: ```bash usage: gkfs [-h/--help] [-r/--rootdir <path>] [-m/--mountdir <path>] [-a/--args <daemon_args>] [-f/--foreground <false>] [--srun <false>] [-n/--numnodes <jobsize>] [--cpuspertask <64>] [--numactl <false>] [-v/--verbose <false>] {start,stop} This script simplifies the starting and stopping GekkoFS daemons. If daemons are started on multiple nodes, a Slurm environment is required. The script looks for the 'gkfs.conf' file in the same directory where additional permanent configurations can be set. positional arguments: command Command to execute: 'start' and 'stop' optional arguments: -h, --help Shows this help message and exits -r, --rootdir <path> Providing the rootdir path for GekkoFS daemons. -m, --mountdir <path> Providing the mountdir path for GekkoFS daemons. -a, --args <daemon_arguments> Add various additional daemon arguments, e.g., "-l ib0 -P ofi+psm2". -f, --foreground Starts the script in the foreground. Daemons are stopped by pressing 'q'. --srun Use srun to start daemons on multiple nodes. -n, --numnodes <n> GekkoFS daemons are started on n nodes. Nodelist is extracted from Slurm via the SLURM_JOB_ID env variable. --cpuspertask <#cores> Set the number of cores the daemons can use. Must use '--srun'. --numactl Use numactl for the daemon. Modify gkfs.conf for further numactl configurations. -c, --config Path to configuration file. By defaults looks for a 'gkfs.conf' in this directory. -v, --verbose Increase verbosity ``` ### Logging The following environment variables can be used to enable logging in the client library: `LIBGKFS_LOG=<module>` and `LIBGKFS_LOG_OUTPUT=<path/to/file>` to configure the output module and set the path to the log file of the client library. If not path is specified in `LIBGKFS_LOG_OUTPUT`, the client library will send log messages to `/tmp/gkfs_client.log`. The following environment variables can be used to enable logging in the client library: `LIBGKFS_LOG=<module>` and `LIBGKFS_LOG_OUTPUT=<path/to/file>` to configure the output module and set the path to the log file of the client library. If not path is specified in `LIBGKFS_LOG_OUTPUT`, the client library will send log messages to `/tmp/gkfs_client.log`. The following modules are available: Loading Loading @@ -182,13 +219,11 @@ setting the `LIBGKFS_LOG_SYSCALL_FILTER` environment variable. For instance, setting it to `LIBGKFS_LOG_SYSCALL_FILTER=epoll_wait,epoll_create` will filter out any log entries from the `epoll_wait()` and `epoll_create()` system calls. Additionally, setting the `LIBGKFS_LOG_OUTPUT_TRUNC` environment variable with a value different from `0` will instruct the logging subsystem to truncate the file used for logging, rather than append to it. Additionally, setting the `LIBGKFS_LOG_OUTPUT_TRUNC` environment variable with a value different from `0` will instruct the logging subsystem to truncate the file used for logging, rather than append to it. For the daemon, the `GKFS_DAEMON_LOG_PATH=<path/to/file>` environment variable can be provided to set the path to the log file, and the log module can be selected with the `GKFS_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` For the daemon, the `GKFS_DAEMON_LOG_PATH=<path/to/file>` environment variable can be provided to set the path to the log file, and the log module can be selected with the `GKFS_DAEMON_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` environment variable. # Miscellaneous Loading
docs/sphinx/users/running.md +38 −1 Original line number Diff line number Diff line Loading @@ -136,6 +136,43 @@ to be empty. For MPI applications, the `LD_PRELOAD` and `LIBGKFS_HOSTS_FILE` variables can be passed with the `-x` argument for `mpirun/mpiexec`. ## Run GekkoFS daemons on multiple nodes (beta version!) The `scripts/run/gkfs` script can be used to simplify starting the GekkoFS daemon on one or multiple nodes. To start GekkoFS on multiple nodes, a Slurm environment that can execute `srun` is required. Users can further modify `scripts/run/gkfs.conf` to mold default configurations to their environment. The following options are available for `scripts/run/gkfs`: ```bash usage: gkfs [-h/--help] [-r/--rootdir <path>] [-m/--mountdir <path>] [-a/--args <daemon_args>] [-f/--foreground <false>] [--srun <false>] [-n/--numnodes <jobsize>] [--cpuspertask <64>] [--numactl <false>] [-v/--verbose <false>] {start,stop} This script simplifies the starting and stopping GekkoFS daemons. If daemons are started on multiple nodes, a Slurm environment is required. The script looks for the 'gkfs.conf' file in the same directory where additional permanent configurations can be set. positional arguments: command Command to execute: 'start' and 'stop' optional arguments: -h, --help Shows this help message and exits -r, --rootdir <path> Providing the rootdir path for GekkoFS daemons. -m, --mountdir <path> Providing the mountdir path for GekkoFS daemons. -a, --args <daemon_arguments> Add various additional daemon arguments, e.g., "-l ib0 -P ofi+psm2". -f, --foreground Starts the script in the foreground. Daemons are stopped by pressing 'q'. --srun Use srun to start daemons on multiple nodes. -n, --numnodes <n> GekkoFS daemons are started on n nodes. Nodelist is extracted from Slurm via the SLURM_JOB_ID env variable. --cpuspertask <#cores> Set the number of cores the daemons can use. Must use '--srun'. --numactl Use numactl for the daemon. Modify gkfs.conf for further numactl configurations. -c, --config Path to configuration file. By defaults looks for a 'gkfs.conf' in this directory. -v, --verbose Increase verbosity ``` ### Logging #### Client logging Loading Loading @@ -178,5 +215,5 @@ the logging subsystem to truncate the file used for logging, rather than append #### Daemon logging For the daemon, the `GKFS_DAEMON_LOG_PATH=<path/to/file>` environment variable can be provided to set the path to the log file, and the log module can be selected with the `GKFS_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` log file, and the log module can be selected with the `GKFS_DAEMON_LOG_LEVEL={off,critical,err,warn,info,debug,trace}` environment variable whereas `trace` produces the most trace records while `info` is the default value. No newline at end of file
include/config.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ // environment prefixes (are concatenated in env module at compile time) #define CLIENT_ENV_PREFIX "LIBGKFS_" #define DAEMON_ENV_PREFIX "GKFS_" #define DAEMON_ENV_PREFIX "GKFS_DAEMON_" #define COMMON_ENV_PREFIX "GKFS_" namespace gkfs::config { Loading
include/daemon/env.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ #include <config.hpp> #define ADD_PREFIX(str) DAEMON_ENV_PREFIX str #define ADD_PREFIX(str) COMMON_ENV_PREFIX str /* Environment variables for the GekkoFS daemon */ namespace gkfs::env { Loading