运行时设置

兼容模式 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_CODESKVIKIO_HTTP_MAX_ATTEMPTSKVIKIO_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)进行访问。