运行时设置
兼容模式 KVIKIO_COMPAT_MODE
当 KvikIO 在兼容模式下运行时,它不会加载 libcufile.so。相反,读写操作是使用 POSIX 完成的。请注意,这与 cuFile 中的兼容模式不同。KvikIO 可能通过使用 cuFile 库在非兼容模式下执行 I/O,但 cuFile 库本身被配置为其自身的兼容模式。有关更多详细信息,请参阅 cuFile 兼容模式 和 cuFile 环境变量。
环境变量 KVIKIO_COMPAT_MODE 有三个选项(不区分大小写)
ON(别名:TRUE,YES,1):启用兼容模式。
OFF(别名:FALSE,NO,0):禁用兼容模式,并强制使用 cuFile I/O。如果满足 cuFile 的系统要求且 cuFile 配置正确,GDS 将被激活。但是,如果系统不适合使用 cuFile,则OFF选项下的 I/O 操作可能会出错。
AUTO:优先尝试 cuFile I/O,如果未满足 cuFile 的系统要求,则回退到 POSIX I/O。
在 AUTO 模式下,KvikIO 在以下情况会回退到兼容模式
找不到
libcufile.so时。在 Windows Subsystem for Linux (WSL) 中运行时。
当
/run/udev不可读时,这通常发生在未通过--volume /run/udev:/run/udev:ro启动的 Docker 镜像中运行时。
此设置也可以通过 kvikio.defaults.compat_mode()(getter)和 kvikio.defaults.set()(setter)进行编程访问。
线程池 KVIKIO_NTHREADS
KvikIO 可以自动使用多个线程进行 I/O。将环境变量 KVIKIO_NTHREADS 设置为线程池中的线程数。如果未设置,默认值为 1。
此设置也可以通过 kvikio.defaults.num_threads()(getter)和 kvikio.defaults.set()(setter)进行访问。
任务大小 KVIKIO_TASK_SIZE
KvikIO 将并行 I/O 操作拆分为多个任务。将环境变量 KVIKIO_TASK_SIZE 设置为最大任务大小(以字节为单位)。如果未设置,默认值为 4194304 (4 MiB)。
此设置也可以通过 kvikio.defaults.task_size()(getter)和 kvikio.defaults.set()(setter)进行访问。
GDS 阈值 KVIKIO_GDS_THRESHOLD
为了提高小 I/O 的性能,.pread() 和 .pwrite() 实现了一个快捷方式,绕过线程池直接使用 POSIX 后端。将环境变量 KVIKIO_GDS_THRESHOLD 设置为使用 GDS 的最小大小(以字节为单位)。如果未设置,默认值为 1048576 (1 MiB)。
此设置也可以通过 kvikio.defaults.gds_threshold()(getter)和 kvikio.defaults.set()(setter)进行访问。
跳板缓冲区大小 KVIKIO_BOUNCE_BUFFER_SIZE
在文件和设备内存之间复制时,KvikIO 可能需要使用中间主机缓冲区(每个线程一个)。将环境变量 KVIKIO_BOUNCE_BUFFER_SIZE 设置为这些“跳板”缓冲区的大小(以字节为单位)。如果未设置,默认值为 16777216 (16 MiB)。
此设置也可以通过 kvikio.defaults.bounce_buffer_size()(getter)和 kvikio.defaults.set()(setter)进行访问。
HTTP 重试 KVIKIO_HTTP_STATUS_CODES, KVIKIO_HTTP_MAX_ATTEMPTS
当远程 I/O 读取返回错误时的行为可以通过 KVIKIO_HTTP_STATUS_CODES、KVIKIO_HTTP_MAX_ATTEMPTS 和 KVIKIO_HTTP_TIMEOUT 环境变量控制。
如果收到 KVIKIO_HTTP_STATUS_CODES 中的任何 HTTP 状态码,KvikIO 将重试请求。默认值是 429, 500, 502, 503, 504。此设置也可以通过 kvikio.defaults.http_status_codes()(getter)和 kvikio.defaults.set()(setter)进行访问。
抛出异常前的最大尝试次数由 KVIKIO_HTTP_MAX_ATTEMPTS 控制。默认值为 3。此设置也可以通过 kvikio.defaults.http_max_attempts()(getter)和 kvikio.defaults.set()(setter)进行访问。
每个 HTTP 请求的最大持续时间由 KVIKIO_HTTP_TIMEOUT 控制。默认值为 60,表示允许的持续时间(秒)。此设置也可以通过 kvikio.defaults.http_timoeout()(getter)和 kvikio.defaults.set()(setter)进行访问。