运行时设置
兼容模式 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)进行访问。