This project transparently translates POSIX calls into native calls for DDN's Infinite Memory Engine (IME) .
The program interfaces directly with IME libraries. To generate the wrapper, run
$ make
To use the wrapper you need to set the LD_PRELOAD
environment variable.
One time usage with ior:
$ LD_PRELOAD=<absolute_path_to_libposix2ime.so> ior
With Mvapich or Intel MPI:
$ mpirun -genv LD_PRELOAD <absolute_path_to_libposix2ime.so>
With OpenMPI:
$ mpirun -x LD_PRELOAD=<absolute_path_to_libposix2ime.so>
In addition, the IM_CLIENT_BFS_PATH
environment variable can be set to
contain the Backing File System (BFS) path used by IME (if mounted on
the compute nodes). By default, if this environment variable is set:
opendir
calls are redirected to the BFS mount point on the compute node (accelerates subsequent calls such asreaddir
). Export theIM_CLIENT_NO_BFS_OPENDIR=1
environment variable to disable the feature.- Buffer in
DIR
(directory descriptor) is enlarged from 32KB to about 1MB. It should make subsequent calls toreaddir
more efficient as more entries can fit in the buffer passed togetdents
calls. Export theIM_CLIENT_NO_LARGE_DIR_BUFFER=1
environment variable to disable the feature. open
withO_CREAT
flag calls are split into a mknod call in the BFS mount point on the compute node followed by an open (without theO_CREAT
flag) with the IME native interface. This feature improves create IOPs with Lustre. Indeedmknod
does not allocate an OST object with Lustre. This is not needed as data is stored in IME. Export theIM_CLIENT_NO_MKNOD_CREATE=1
environment variable to disable the feature.