|
|
# GekkoFWD
|
|
|
|
|
|
The I/O forwarding mode enables Gekko to act as intermediate I/O nodes between the compute nodes and the parallel file system servers. GekkoFWD uses the shared PFS for storage, instead of a local store available at the compute nodes. Originally, in GekkoFS, data operations are distributed across all nodes. Once an operation is intercepted, the client forwards it to the responsible server, determined by hashing the file's path. In GekkoFWD, the data is forwarded to a single server determined by an allocation policy, without breaking the file into chunks, as the PFS already has its striping mechanism.
|
|
|
|
|
|
As in the original version, there is no communication between the servers. Consequently, we have included a thread in the interception library to ensure all clients follow a pre-defined allocation policy. This thread is responsible for checking updates in the mapping of the I/O nodes and implement that change on the node it is running.
|
|
|
|
|
|
To enable the I/O forwarding mode of Gekko, during compilation time you should include:
|
|
|
|
|
|
```
|
|
|
-DENABLE_FORWARDING:BOOL=ON
|
|
|
```
|
|
|
|
|
|
## I/O Scheduling
|
|
|
|
|
|
Because a forwarding layer is transparent to applications, it usually is the target of I/O optimizations such as file-level request scheduling. For that reason, we have integrated the AGIOS scheduling library into GekkoFWD. AGIOS has several schedulers available, and it also allows us to prototype new scheduling solutions. On the GekkoFWD daemon running at the I/O nodes, once a request is received, it is sent to AGIOS to determine when it should be processed. Once scheduled, it is then dispatched and executed.
|
|
|
|
|
|
I/O scheduling in GekkoFWD is an optional feature. You can enable it during compilation time:
|
|
|
|
|
|
```
|
|
|
-DENABLE_AGIOS:BOOL=ON
|
|
|
```
|
|
|
|
|
|
You need to make sure to have the `agios.conf` file in the `/tmp` folder of each node (or in another pre-defined path)· This file contains AGIOS configurations, such as the I/O scheduler it should use.
|
|
|
|
|
|
## Running
|
|
|
|
|
|
Before running any applications with GekkoFWD, you need to have a forwarding map file. It should contain a hostname and the ID of an I/O node, to which all intercepted requests should be forwarded. Here is an example with two I/O nodes:
|
|
|
|
|
|
```
|
|
|
node-1 0
|
|
|
node-2 0
|
|
|
node-3 1
|
|
|
node-4 1
|
|
|
```
|
|
|
|
|
|
An environment variable named `LIBGKFS_FORWARDING_MAP_FILE` should be used to identify the map file on each client. Typically, this file would be stored in a shared infrastructure, such as the default PFS. |
|
|
\ No newline at end of file |