Before you proceed, here's some facts about this project...
Maintenance
All previous issues get ZERO REPLY from authors, dating all the way back to 2019. Last updated many years ago.
Instructions
The README is VERY OUTDATED and WRONG. It instructs you to install bmi for mercury, which is deprecated by mercury. And the run command? It simply won't work out of the box due to bugs in code (more on that later). Moreover, even if you do ever get to start the server, the client can never connect to it. There is ZERO document about proper configuration and usage.
Bugs in code
I have been working on this code for several days and found some serious bugs. You can check it yourself.
On the server side, the default config for EnvName is posix, and the README says rados or sth else, but in its parsing process it only works with default (or perhaps unbufferedio, I didn't try that) and rados is not even implemented.
The code is defaulted to use bmi+tcp out of the box and the README keep telling you to use mercury rpc, but the RPCOptions's rpc type is hardcoded to be kSocketRPC regardless of whether PDLFS_MERCURY_RPC is defined or not, meaning it NEVER USES MERCURY. The ctest about rpc passes because the test code is hardcoded to use tcp and udp separately.
Functionality
FUNDAMENTAL FS semantics like rmdir and rename are missing, so mdtest won't even run. And they even call this a filesystem lol.
What I want to say is
If you have a choice, just get out and don't use this. This won't deliver what was claimed in the paper. Objections are welcomed, but please show me the real code ;).
How to get it work (in Ubuntu-22.04)
Install libfabric.
Don't install it with apt in Ubuntu 22.04, that one's version is too old. Get a new version and compile it yourself.
wget https://github.com/ofiwg/libfabric/releases/download/v1.21.0/libfabric-1.21.0.tar.bz2
tar -xjf libfabric-1.21.0.tar.bz2
cd libfabric-1.21.0
./configure && make -j
sudo checkinstall
# or you can do `sudo make install` if you don't want to `apt install checkinstall`
Install mercury
# extra dependency
sudo apt install libjson-c-dev
# idk why, but mercury says it needs this.
sudo bash -c "echo 0 > /proc/sys/kernel/yama/ptrace_scope"
git clone --recurse-submodules https://github.com/mercury-hpc/mercury.git
cd mercury
mkdir build && cd build
ccmake ..
# remember to configure MERCURY_USE_OFI to ON
make -j
sudo checkinstall -pkgname mercury
For anyone still interested, I have worked out a way to run mdtest on DeltaFS. You can check that out in my fork. Of course, all fixes and instructions mentioned here is included - and even better because you don't have to modify the code yourself.
Before you proceed, here's some facts about this project...
Maintenance
All previous issues get ZERO REPLY from authors, dating all the way back to 2019. Last updated many years ago.
Instructions
The README is VERY OUTDATED and WRONG. It instructs you to install bmi for mercury, which is deprecated by mercury. And the run command? It simply won't work out of the box due to bugs in code (more on that later). Moreover, even if you do ever get to start the server, the client can never connect to it. There is ZERO document about proper configuration and usage.
Bugs in code
I have been working on this code for several days and found some serious bugs. You can check it yourself.
EnvName
isposix
, and the README saysrados
or sth else, but in its parsing process it only works withdefault
(or perhapsunbufferedio
, I didn't try that) andrados
is not even implemented.bmi+tcp
out of the box and the README keep telling you to use mercury rpc, but theRPCOptions
's rpc type is hardcoded to bekSocketRPC
regardless of whetherPDLFS_MERCURY_RPC
is defined or not, meaning it NEVER USES MERCURY. The ctest about rpc passes because the test code is hardcoded to usetcp
andudp
separately.Functionality
FUNDAMENTAL FS semantics like
rmdir
andrename
are missing, somdtest
won't even run. And they even call this a filesystem lol.What I want to say is
If you have a choice, just get out and don't use this. This won't deliver what was claimed in the paper. Objections are welcomed, but please show me the real code ;).
How to get it work (in Ubuntu-22.04)
Install libfabric.
Don't install it with apt in Ubuntu 22.04, that one's version is too old. Get a new version and compile it yourself.
Install mercury
Fix the bugs in code
Then compile the deltafs code. Enable mercury, MPI. To run the server:
Run the client shell