New feature: 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:
<daemon args> --proxy-listen eno1 --proxy-protocol ofi+sockets
The proxy is started thereafter:
./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:
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.
Closes #114 (closed)
Merge request reports
Activity
changed milestone to %v0.9.3
added Code Maintenance New feature labels
assigned to @marcvef
mentioned in merge request !152 (closed)
added 58 commits
-
d0ece348...e83e86d2 - 28 commits from branch
master
- e83e86d2...607366a2 - 20 earlier commits
- 912e648b - Improve log output for client RPCs
- da0827f1 - Avoid race condition and segfault during read/write
- 210326b8 - Renamed Cache to DentryCache. Added several options to config.hpp Removed...
- 73ded4d8 - Adding write_size cache, enable by config and disable via...
- 020ee6ac - Avoid nullptr in gkfsfunctions
- f1977b9f - Allow to set separate dirbuffsize in proxy
- 8de11409 - Remove/remove_dir optimization: Avoid 1 RPC per call
- 1a722e05 - Proxy: Remove optimization added
- bf8a2c8a - Finalizing gkfs script and configs
- dee56ce8 - Update Hermes submodule to support multiple clients
Toggle commit list-
d0ece348...e83e86d2 - 28 commits from branch
added 8 commits
- e28714b0 - gkfs script slurm nodelist support, bugfix, cpu affinity
- 7a10c352 - Improve log output for client RPCs
- 4330fdb5 - Avoid race condition and segfault during read/write
- c73e68eb - Avoid nullptr in gkfsfunctions
- 59065b2e - Allow to set separate dirbuffsize in proxy
- d6724f78 - Finalizing gkfs script and configs
- f26b11b5 - Finalizing proxy
- 54ada931 - Update Hermes submodule to support multiple clients
Toggle commit listmentioned in merge request !195 (merged)
requested review from @rnou
@rnou This is ready. Any objections for merging?