POSIX
Overview
The POSIX backend provides asynchronous file I/O for DRAM-to-file transfers. Unless an I/O mechanism is selected explicitly, it uses the first implementation available at build time in this order: Linux AIO, io_uring, then POSIX AIO.
Installation
The POSIX backend is built by default with no required external dependencies.
Optional Dependencies
For enhanced I/O performance, install one or both of these libraries:
Linux AIO (libaio):
io_uring (liburing):
When running in Docker, io_uring syscalls are blocked by default. You need to create a custom seccomp profile that allows io_uring_setup, io_uring_enter, io_uring_register, and io_uring_sync. See the POSIX plug-in README for Docker configuration details.
Configuration
The POSIX backend has no backend-specific environment variables. Configure it with string key-value parameters when creating the backend.
Backend Parameters
Set only one of the three use_* parameters. If more than one is true, the backend selects use_aio first, then use_uring, then use_posix_aio. If none is set, it selects the first implementation compiled into NIXL using the same order.
An explicit selection does not fall back to another implementation. Backend creation fails if the selected mechanism was not included in the NIXL build or cannot initialize in the current environment.
When using io_uring in a container, the container security policy must permit the io_uring system calls described above.
When to Use
- DRAM-to-file on local filesystems — Standard file I/O for reading and writing host memory to local storage.
- Environments without GPU or GDS — Use POSIX when GPUDirect Storage is not available or not needed.
- Fallback for any DRAM-to-file transfer — A reliable default when no specialized storage backend is required.