4.5. 记账统计
一组 API,旨在提供关于 GPU 使用情况的每个进程的信息。
-
所有记账统计和记账模式都存在于 NVIDIA 驱动程序中,并在驱动程序卸载时重置为默认值(禁用)。建议在启用持久模式的情况下运行。
-
启用记账模式对 GPU 性能没有负面影响。
模块
类
函数
- nvmlReturn_t nvmlDeviceClearAccountingPids ( nvmlDevice_t 设备 )
- nvmlReturn_t nvmlDeviceGetAccountingBufferSize ( nvmlDevice_t 设备, unsigned int* 缓冲区大小 )
- nvmlReturn_t nvmlDeviceGetAccountingMode ( nvmlDevice_t 设备, nvmlEnableState_t* 模式 )
- nvmlReturn_t nvmlDeviceGetAccountingPids ( nvmlDevice_t 设备, unsigned int* 计数, unsigned int* 进程 ID )
- nvmlReturn_t nvmlDeviceGetAccountingStats ( nvmlDevice_t 设备, unsigned int 进程 ID, nvmlAccountingStats_t* 统计信息 )
- nvmlReturn_t nvmlDeviceSetAccountingMode ( nvmlDevice_t 设备, nvmlEnableState_t 模式 )
- nvmlReturn_t nvmlDeviceSetPowerManagementLimit_v2 ( nvmlDevice_t 设备, nvmlPowerValue_v2_t* 功率值 )
函数
- nvmlReturn_t nvmlDeviceClearAccountingPids ( nvmlDevice_t 设备 )
-
参数
- 设备
- 目标设备的标识符
返回
- NVML_SUCCESS 如果已清除记账信息
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_NO_PERMISSION 如果用户没有执行此操作的权限
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
清除关于所有已终止进程的记账信息。
适用于 Kepler 或更新的完全支持的设备。需要 root/管理员权限。
参见 nvmlDeviceGetAccountingMode 参见 nvmlDeviceGetAccountingStats 参见 nvmlDeviceSetAccountingMode
- nvmlReturn_t nvmlDeviceGetAccountingBufferSize ( nvmlDevice_t 设备, unsigned int* 缓冲区大小 )
-
参数
- 设备
- 目标设备的标识符
- 缓冲区大小
- 在其中提供用于记账统计的循环缓冲区大小(元素数量)的引用。
返回
- NVML_SUCCESS 如果成功检索到缓冲区大小
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 bufferSize 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能或记账模式已禁用
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
返回带有记账 pids 的循环缓冲区可以容纳的进程数量。
适用于 Kepler 或更新的完全支持的设备。
这是将存储记账信息的进程的最大数量,在此数量之后,关于最旧进程的信息将被关于新进程的信息覆盖。
另请参阅
- nvmlReturn_t nvmlDeviceGetAccountingMode ( nvmlDevice_t 设备, nvmlEnableState_t* 模式 )
-
参数
- 设备
- 目标设备的标识符
- 模式
- 在其中返回当前记账模式的引用
返回
- NVML_SUCCESS 如果已成功检索到模式
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 mode 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
查询每个进程记账模式的状态。
适用于 Kepler 或更新的完全支持的设备。
参见 nvmlDeviceGetAccountingStats 了解更多详情。参见 nvmlDeviceSetAccountingMode
- nvmlReturn_t nvmlDeviceGetAccountingPids ( nvmlDevice_t 设备, unsigned int* 计数, unsigned int* 进程 ID )
-
参数
- 设备
- 目标设备的标识符
- 计数
- 在其中提供 pids 数组大小的引用,并返回准备查询的元素数量
- 进程 ID
- 在其中返回进程 ID 列表的引用
返回
- NVML_SUCCESS 如果成功检索到 pids
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 count 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能或记账模式已禁用或在 vGPU 主机上。
- NVML_ERROR_INSUFFICIENT_SIZE 如果 count 太小(count 设置为预期值)
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
查询可以查询记账统计信息的进程列表。返回的进程列表可能处于运行或终止状态。
适用于 Kepler 或更新的完全支持的设备。
要查询记账模式下的进程数量,请使用 *count = 0 和 pids=NULL 调用此函数。返回代码将是 NVML_ERROR_INSUFFICIENT_SIZE,并带有指示进程数量的更新后的 count 值。
了解更多详情,参见 nvmlDeviceGetAccountingStats。
注意在 PID 冲突的情况下,在循环缓冲区满之前,某些进程可能无法访问。
另请参阅
- nvmlReturn_t nvmlDeviceGetAccountingStats ( nvmlDevice_t 设备, unsigned int 进程 ID, nvmlAccountingStats_t* 统计信息 )
-
参数
- 设备
- 目标设备的标识符
- 进程 ID
- 要查询统计信息的目标进程的进程 ID
- 统计信息
- 在其中返回进程的记账统计信息的引用
返回
- NVML_SUCCESS 如果已成功检索到统计信息
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 stats 为 NULL
- NVML_ERROR_NOT_FOUND 如果未找到进程统计信息
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能或记账模式已禁用或在 vGPU 主机上。
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
查询进程的记账统计信息。
适用于 Kepler 或更新的完全支持的设备。
记账统计信息捕获进程生命周期内的 GPU 利用率和其他统计信息。可以在进程的生命周期内及其终止后查询记账统计信息。nvmlAccountingStats_t 中的时间字段在进程生命周期内报告为 0,并在进程终止后更新为实际运行时间。记账统计信息保存在循环缓冲区中,新创建的进程会覆盖关于旧进程的信息。
参见 nvmlAccountingStats_t 了解有关每个返回指标的描述。可以查询的进程列表可以从 nvmlDeviceGetAccountingPids 检索。
注意-
记账模式需要开启。参见 nvmlDeviceGetAccountingMode。
-
只能查询计算和图形应用程序的统计信息。监控应用程序的统计信息无法查询,因为它们不贡献 GPU 利用率。
-
在 pid 冲突的情况下,将仅报告最新进程(最后终止的进程)的统计信息
另请参阅
- nvmlReturn_t nvmlDeviceSetAccountingMode ( nvmlDevice_t 设备, nvmlEnableState_t 模式 )
-
参数
- 设备
- 目标设备的标识符
- 模式
- 目标记账模式
返回
- NVML_SUCCESS 如果已设置新模式
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备或模式无效
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_NO_PERMISSION 如果用户没有执行此操作的权限
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
启用或禁用每个进程的记账。
适用于 Kepler 或更新的完全支持的设备。需要 root/管理员权限。
注意-
此设置不是持久性的,并且在驱动程序卸载后将默认为禁用。启用持久模式以确保设置不会切换为禁用。
-
启用记账模式对 GPU 性能没有负面影响。
-
禁用记账会清除所有记账 pids 信息。
-
在启用 MIG 的 GPU 上,记账模式将设置为禁用,且不支持更改它。
参见 nvmlDeviceGetAccountingMode 参见 nvmlDeviceGetAccountingStats 参见 nvmlDeviceClearAccountingPids
- nvmlReturn_t nvmlDeviceSetPowerManagementLimit_v2 ( nvmlDevice_t 设备, nvmlPowerValue_v2_t* 功率值 )
-
参数
- 设备
- 目标设备的标识符
- 功率值
- 要设置的以毫瓦为单位的功率管理限制
返回
- NVML_SUCCESS 如果已设置限制
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果设备无效或 powerValue 为 NULL 或包含无效值
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_GPU_IS_LOST 如果目标 GPU 已从总线上脱落或无法访问
- NVML_ERROR_UNKNOWN 在任何意外错误时
描述
设置此设备的新功率限制。
适用于 Kepler 或更新的完全支持的设备。需要 root/管理员权限。
参见 nvmlDeviceGetPowerManagementLimitConstraints 以检查允许的值范围。
参见 nvmlPowerValue_v2_t 了解有关该结构体的更多信息。
注意限制在重启或驱动程序卸载后不会持久。启用持久模式以防止在没有应用程序使用设备时驱动程序卸载。
此 API 替换了 nvmlDeviceSetPowerManagementLimit。它可以作为旧版本的直接替代品使用。
另请参阅