Loading CHANGELOG.md +10 −1 Original line number Diff line number Diff line Loading @@ -8,9 +8,18 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### New - Added a write size cache to the file system client to reduce potential metadata network bottlenecks during small I/O operations ([!193](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/193)). - The cache is experimental and thus disabled by default. Added the following environment variables. - `LIBGKFS_WRITE_SIZE_CACHE` - Enable caching the write size of files (default: OFF). - `LIBGKFS_WRITE_SIZE_CACHE_THRESHOLD` - Set the number of write operations after which the file size is synchronized with the corresponding daemon (default: 1000). The file size is further synchronized when the file is `close()`d or when `fsync()` is called. - Added a directory cache for the file system client to improve `ls -l` type operations by avoiding consecutive stat calls ([!194](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/194)). - The cache is experimental and thus disabled by default and can be enabled with the env variable `LIBGKFS_DISABLE_DIR_CACHE` set to `ON`. - The cache is experimental and thus disabled by default. Added the following environment variables. - `LIBGKFS_DENTRY_CACHE` - Enable caching directory entries until closing the directory (default: OFF). Further compile-time settings available at `include/config.hpp`. - Added file system expansion support ([!196](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/196)). - Added the tool `gkfs_malleability` to steer start, status, and finalize requests for expansion operations. - `-DGKFS_BUILD_TOOLS=ON` must be set for CMake to build the tool. Loading README.md +18 −2 Original line number Diff line number Diff line Loading @@ -517,8 +517,24 @@ Client-metrics require the CMake argument `-DGKFS_ENABLE_CLIENT_METRICS=ON` (see - `LIBGKFS_PROXY_PID_FILE` - Path to the proxy pid file (when using the GekkoFS proxy). - `LIBGKFS_NUM_REPL` - Number of replicas for data. #### Caching ##### Dentry cache Improves performance for `ls -l` type operations by caching file metadata for subsequent `stat()` operations during `readdir()`. Dependening on the size of the directory, this can avoid a signficant number of stat RPCs. - `LIBGKFS_DENTRY_CACHE` - Enable caching directory entries until closing the directory (default: OFF). Improves performance for `ls -l` type operations. Further compile-time settings available at `include/config.hpp`. Further compile-time settings available at `include/config.hpp`. ##### Write size cache During write operations, the client must update the file size on the responsible metadata daemon. The write size cache can reduce the metadata load on the daemon and reduce the number of RPCs during write operations, especially for many small I/O operations. Note that this cache may impact file size consistency in which stat operations may not reflect the actual file size until the file is closed. The cache does not impact the consistency of the file data itself. - `LIBGKFS_WRITE_SIZE_CACHE` - Enable caching the write size of files (default: OFF). - `LIBGKFS_WRITE_SIZE_CACHE_THRESHOLD` - Set the number of write operations after which the file size is synchronized with the corresponding daemon (default: 1000). The file size is further synchronized when the file is `close()`d or when `fsync()` is called. ### Daemon #### Logging Loading include/config.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ constexpr bool clear_dentry_cache_on_close = true; // Instead, the size is updated every `write_size_flush_threshold` writes per // file. fsync/close flushes the size to the server immediately. constexpr bool use_write_size_cache = false; constexpr auto write_size_flush_threshold = 100; constexpr auto write_size_flush_threshold = 1000; } // namespace cache namespace client_metrics { Loading Loading
CHANGELOG.md +10 −1 Original line number Diff line number Diff line Loading @@ -8,9 +8,18 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### New - Added a write size cache to the file system client to reduce potential metadata network bottlenecks during small I/O operations ([!193](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/193)). - The cache is experimental and thus disabled by default. Added the following environment variables. - `LIBGKFS_WRITE_SIZE_CACHE` - Enable caching the write size of files (default: OFF). - `LIBGKFS_WRITE_SIZE_CACHE_THRESHOLD` - Set the number of write operations after which the file size is synchronized with the corresponding daemon (default: 1000). The file size is further synchronized when the file is `close()`d or when `fsync()` is called. - Added a directory cache for the file system client to improve `ls -l` type operations by avoiding consecutive stat calls ([!194](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/194)). - The cache is experimental and thus disabled by default and can be enabled with the env variable `LIBGKFS_DISABLE_DIR_CACHE` set to `ON`. - The cache is experimental and thus disabled by default. Added the following environment variables. - `LIBGKFS_DENTRY_CACHE` - Enable caching directory entries until closing the directory (default: OFF). Further compile-time settings available at `include/config.hpp`. - Added file system expansion support ([!196](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/196)). - Added the tool `gkfs_malleability` to steer start, status, and finalize requests for expansion operations. - `-DGKFS_BUILD_TOOLS=ON` must be set for CMake to build the tool. Loading
README.md +18 −2 Original line number Diff line number Diff line Loading @@ -517,8 +517,24 @@ Client-metrics require the CMake argument `-DGKFS_ENABLE_CLIENT_METRICS=ON` (see - `LIBGKFS_PROXY_PID_FILE` - Path to the proxy pid file (when using the GekkoFS proxy). - `LIBGKFS_NUM_REPL` - Number of replicas for data. #### Caching ##### Dentry cache Improves performance for `ls -l` type operations by caching file metadata for subsequent `stat()` operations during `readdir()`. Dependening on the size of the directory, this can avoid a signficant number of stat RPCs. - `LIBGKFS_DENTRY_CACHE` - Enable caching directory entries until closing the directory (default: OFF). Improves performance for `ls -l` type operations. Further compile-time settings available at `include/config.hpp`. Further compile-time settings available at `include/config.hpp`. ##### Write size cache During write operations, the client must update the file size on the responsible metadata daemon. The write size cache can reduce the metadata load on the daemon and reduce the number of RPCs during write operations, especially for many small I/O operations. Note that this cache may impact file size consistency in which stat operations may not reflect the actual file size until the file is closed. The cache does not impact the consistency of the file data itself. - `LIBGKFS_WRITE_SIZE_CACHE` - Enable caching the write size of files (default: OFF). - `LIBGKFS_WRITE_SIZE_CACHE_THRESHOLD` - Set the number of write operations after which the file size is synchronized with the corresponding daemon (default: 1000). The file size is further synchronized when the file is `close()`d or when `fsync()` is called. ### Daemon #### Logging Loading
include/config.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ constexpr bool clear_dentry_cache_on_close = true; // Instead, the size is updated every `write_size_flush_threshold` writes per // file. fsync/close flushes the size to the server immediately. constexpr bool use_write_size_cache = false; constexpr auto write_size_flush_threshold = 100; constexpr auto write_size_flush_threshold = 1000; } // namespace cache namespace client_metrics { Loading