GPU功耗管理方式介绍(Linux)

Linux阅码场 2023-08-08 10:04

NIVDIA

LINUX电源管理框架

PCI-Express Runtime D3 (RTD3) Power 

Management PCI-Express Runtime D3 (RTD3) Power Management是一种用于管理PCI-Express设备的低功耗模式的技术RTD3是一种睡眠状态,当PCI-Express设备处于空闲状态时,可以将其置于低功耗模式,以减少能源消耗和热量产生。英伟达™(NVIDIA®)图形处理器有许多省电机制。其中一些机制会降低芯片不同部分的时钟和电压,在某些情况下还会完全关闭芯片部分的时钟或电源,但不会影响功能或继续运行,只是速度较慢。然而,英伟达™(NVIDIA®)GPU 的最低能耗状态需要关闭整个芯片的电源,通常是通过调用 ACPI 来实现。这显然会影响功能。在关机状态下,GPU 无法运行任何功能。必须注意的是,只有在 GPU 上没有运行任何工作负载的情况下才能进入这种状态,而且在试图开始工作或进行任何内存映射 I/O (MMIO) 访问之前,必须先重新开启 GPU 并恢复任何必要的状态。

Configuring Power Management Support

NVIDIA的Linux驱动程序支持挂起(挂起到RAM)和休眠(挂起到磁盘)等系统电源管理操作,如在x86/x86_64平台上的ACPI S3和S4。当系统挂起或休眠时,NVIDIA内核驱动程序会准备正在使用的GPU进入睡眠状态,并保存必要的状态,以便在系统稍后恢复时将这些GPU返回到正常运行状态。NVIDIA内核驱动程序保存的GPU状态包括在视频内存中进行的分配。然而,这些分配通常是大量的,而且通常无法被清除。由于在挂起时驱动程序可用的系统内存量通常不足以容纳视频内存的大量拷贝,因此NVIDIA内核驱动程序被设计成保守行动,并且通常只保存必要的视频内存分配。用户空间的NVIDIA驱动程序和一些应用程序在一定程度上弥补了视频内存内容的损失,但可能导致渲染损坏和应用程序在退出电源管理周期时崩溃等问题。为了更好地支持这些类型应用程序的电源管理,NVIDIA的Linux驱动程序提供了一个自定义的电源管理接口,旨在与systemd等系统管理工具集成。此接口仍被视为实验性质。它默认情况下不被使用,但可以利用它以实现更好的电源管理。

NIVDIA-SMI

NVIDIA 系统管理接口 (nvidia-smi) 是一个基于NVIDIA 管理库 (NVML) 的命令行实用程序,旨在帮助管理和监控 NVIDIA GPU 设备。该实用程序允许管理员查询 GPU 设备状态,并通过适当的权限允许管理员修改 GPU 设备状态。它针对的是 Tesla TM、GRID TM、Quadro TM和 Titan X 产品,但其他 NVIDIA GPU 也提供有限的支持。

CUDA API

cudaSetDeviceFlags 

  • cudaDeviceScheduleSpin: Instruct CUDA to actively spin when waiting for results from the device. This can decrease latency when waiting for the device, but may lower the performance of CPU threads if they are performing work in parallel with the CUDA thread. 

  • cudaDeviceScheduleYield: Instruct CUDA to yield its thread when waiting for results from the device. This can increase latency when waiting for the device, but can increase the performance of CPU threads performing work in parallel with the device. 

使用cudaDeviceScheduleYield 在等待GPU完成工作时,GUDA会让出CPU的使用权,一定程度上可以降低功耗

NVML

NVML(NVIDIA Management Library)是NVIDIA提供的一组API(应用程序编程接口),用于管理和监控NVIDIA GPU(图形处理器单元)的相关参数和状态。它提供了一种编程接口,使开发人员可以访问和控制显卡的各种属性,如温度、功耗、使用情况、性能状态等。NVML API Reference Manual nvmlDeviceSetPowerManagementLimit

参数

  • device 目标设备的标识符
  • Power 设置电源管理限制(以毫瓦为单位)

返回值

  • NVML_SUCCESS 如果限制已经设置完成
  • NVML_ERROR_UNINITIALIZED 库尚未初始化成功
  • NVML_ERROR_INVALID_ARGUMENT 无效的值
  • NVML_ERROR_NOT_SUPPORTED 不支持该功能
  • NVML_ERROR_GPU_IS_LOST 目标GPU已脱离总线
  • NVML_ERROR_UNKNOWN 任何意外错误出现

描述

设置该设备的新功率限制

注意

重新启动或驱动程序卸载后,限制不会持续存在。启用持久模式以防止驱动程序在没有应用程序使用设备时卸载

NVIDIA SETTINGS

NVIDIA官方的驱动程序(NVIDIA-Driver)提供了一些电源管理选项,可以通过NVIDIA设置工具(nvidia-settings)进行配置。打开nvidia-settings,导航到“PowerMizer”选项卡,可以调整GPU的性能级别和电源模式。在这里,你可以选择“自动”模式,让驱动程序自动根据需要调整GPU的性能和功耗,或者选择“最大性能”模式以获取最佳性能。

AMD

LINUX电源管理框架

AMD GPU的Linux电源管理框架是一个由内核模块、用户空间工具和ACPI方法等组成的复杂系统,旨在优化AMD GPU在Linux系统下的能耗和性能表现。在AMD GPU的Linux电源管理框架中,内核模块负责实现GPU的功耗监测、功率管理和功率限制等功能,同时提供了一组名为“pp_*”函数的API,供用户空间程序调用。用户空间工具则通过调用这些API来实现GPU的功耗管理和性能调优等功能,比如可以通过设置GPU的功耗限制来控制GPU的功耗和温度,或者通过调整GPU的频率来提高GPU的性能表现。ACPI方法则用于与系统BIOS进行交互,以获取和设置GPU的功耗管理相关参数。AMD GPU的Linux电源管理框架在Linux内核中已经得到了很好的支持,并且已经成为了Linux操作系统中GPU电源管理的标准框架之一。通过使用AMD GPU的Linux电源管理框架,用户可以更好地控制GPU的能耗和性能表现,从而提高计算机的稳定性和可靠性,同时也可以延长GPU的使用寿命。

HWMON

HWMON是指Linux内核中的硬件监控(Hardware Monitoring)子系统,主要用于监测计算机硬件的温度、电压、风扇转速等信息,并将这些信息以文件的形式保存在/sys/class/hwmon目录下。HWMON子系统通常与传感器硬件设备结合使用,如CPU温度传感器、风扇转速传感器等,可以通过读取/sys/class/hwmon目录下的文件来获取这些传感器的实时数据。AMD GPU驱动针对HWMON接口支持以下功能

  • GPU temperature (via the on-die sensor)
  • GPU voltage
  • Northbridge voltage (APUs only)
  • GPU power
  • GPU fan
  • GPU gfx/compute engine clock
  • GPU memory clock (dGPU only)

SysFs

GPU的电源控制可以通过sysfs 文件来实现

power_dpm_state

power_dpm_state 文件是旧版接口,仅为了向后兼容而提供。amdgpu 驱动程序提供了 sysfs API,用于调整某些与电源相关的参数。文件 power_dpm_state 用于此目的。它接受以下参数:battery balanced performance

power_dpm_force_performance_level

amdgpu 驱动程序提供了 sysfs API,用于调整某些与电源相关的参数。文件 power_dpm_force_performance_level 用于此目的。它接受以下参数:

  • auto - 选择自动时,驱动程序将尝试针对驱动程序中的当前条件动态选择最佳功率配置文件
  • low - 最低功耗状态
  • high - 最高功耗状态
  • manual - 用户可以通过 sysfs pp_dpm_mclk、pp_dpm_sclk 和 pp_dpm_pcie 文件手动调整每个时钟域启用的 - 电源状态,并通过 pp_power_profile_mode sysfs 文件调整电源状态转换heuristics
  • profile_standard
  • profile_min_sclk
  • profile_min_mclk
  • profile_peak 选择分析模式后,时钟和电源门控将被禁用,并且时钟将针对不同的分析情况进行设置。建议使用此模式来分析特定工作负载,您不希望时钟或时钟波动的电源门控干扰您的结果。profile_standard 将时钟设置为固定时钟级别,该级别因不同的 asic 而异。profile_min_sclk 强制 sclk 为最低级别。profile_min_mclk 强制 mclk 至最低级别。profile_peak 将所有时钟(mclk、sclk、pcie)设置为最高级别。

pp_table

amdgpu 驱动程序提供了一个 sysfs API,用于上传新的 powerplay table。文件 pp_table 用于此目的。读取该文件将转储当前的powerplay table。写入文件将尝试上传新的 powerplay table并使用该新表重新初始化 powerplay。AMD PowerPlay is the brand name for a set of technologies for the reduction of the energy consumption implemented in several of AMD's graphics processing units and APUs supported by their proprietary graphics device driver "Catalyst". AMD PowerPlay is also implemented into ATI/AMD chipsets which integrated graphics and into AMD's Imageon handheld chipset, that was sold to Qualcomm in 2008.(From wiki)

pp_od_clk_voltage

amdgpu 驱动程序提供了一个 sysfs API,用于调整电源状态下每个功率级别的时钟和电压。pp_od_clk_Voltage 用于此目的。请注意,公开的是实际内存控制器时钟速率,而不是 DRAM 的有效内存时钟

pp_dpm_*

amdgpu 驱动程序提供了一个 sysfs API,用于调整给定电源状态启用的功率级别。文件 pp_dpm_sclk、pp_dpm_mclk、pp_dpm_socclk、pp_dpm_fclk、pp_dpm_dcefclk 和 pp_dpm_pcie 用于此目的。####pp_power_profile_mode amdgpu 驱动程序提供了一个 sysfs API,用于调整与在电源状态下的电源级别之间切换相关的heuristics。文件 pp_power_profile_mode 用于此目的

*_busy_percent

amdgpu 驱动程序提供了一个 sysfs API,用于读取 GPU 繁忙程度的百分比。文件 gpu_busy_percent 用于此目的。。amdgpu 驱动程序提供了一个 sysfs API,用于读取 VRAM 的繁忙程度(百分比)。文件 mem_busy_percent 用于此目的。

gpu_metrics

amdgpu 驱动程序提供 sysfs API 用于检索当前 GPU 指标数据。文件 gpu_metrics 用于此目的。读取该文件将转储所有当前 GPU 指标数据。这些数据包括温度、频率、引擎利用率、功耗、throttler状态、风扇速度和CPU核心统计数据(仅适用于APU)。

GFXOFF

GFXOFF 是大多数最新 GPU 的一项功能,可在运行时节省电能。当图形处理器或计算管道没有工作负载时,显卡的 RLC(运行列表控制器)固件会动态关闭图形引擎。在支持的 GPU 上,GFXOFF 默认开启。用户空间可通过 debugfs 接口与 GFXOFF 交互

ROCM-SIM

ROCM-SMI(ROCm System Management Interface)是一款用于管理和监控AMD ROCm平台的命令行工具。它提供了一系列选项和功能,用于管理GPU设备、监控功耗和温度、检查显存使用情况以及查看GPU的性能信息。ROCM-SMI可以用于以下操作:监控GPU的功耗和温度:ROCM-SMI可以显示GPU的功耗和温度信息,以及GPU的风扇转速、电压和功耗限制等。这些信息对于调整GPU的功耗管理和性能优化非常有用。管理GPU的功耗模式:ROCM-SMI可以设置GPU的功耗模式,例如常规模式、低功耗模式或固定功耗模式。这些模式可以根据需求来平衡GPU的功耗和性能。检查显存使用情况:ROCM-SMI可以显示GPU显存的使用情况,包括已使用的显存量、剩余的显存量以及显存带宽的使用情况。这对于优化GPU计算和内存管理非常有用。查看GPU的性能信息:ROCM-SMI可以显示GPU的性能指标,如核心频率、显存频率、显存带宽等。这些信息对于评估GPU的性能和进行性能优化非常有用。

Radeon-profile

Radeon-profile是一个第三方开源的工具,用于在Linux上管理和监控AMD Radeon显卡。它提供了一个图形界面,可以用于调整显卡的功耗管理、风扇控制和性能调优。通过Radeon-profile,用户可以执行以下操作:监控功耗和温度:Radeon-profile显示GPU的功耗和温度信息,帮助用户了解显卡的工作状态和温度情况。设置功耗模式:用户可以切换显卡的功耗模式,如自动模式、低功耗模式、中等功耗模式和高功耗模式。这些模式可以根据用户需求平衡功耗和性能。风扇控制:Radeon-profile允许用户手动调整显卡风扇的转速,以控制显卡的温度和散热效果。调整显卡的性能设置:用户可以通过Radeon-profile调整显卡的核心频率、显存频率和电压等参数,以实现更好的性能。

参考资料

https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/

https://docs.kernel.org/hwmon/hwmon-kernel-api.html

https://docs.nvidia.com/deploy/nvml-api/


Linux阅码场 专业的Linux技术社区和Linux操作系统学习平台,内容涉及Linux内核,Linux内存管理,Linux进程管理,Linux文件系统和IO,Linux性能调优,Linux设备驱动以及Linux虚拟化和云计算等各方各面.
评论
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 173浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 159浏览
  • 前言近年来,随着汽车工业的快速发展,尤其是新能源汽车与智能汽车领域的崛起,汽车安全标准和认证要求日益严格,应用范围愈加广泛。ISO 26262和ISO 21448作为两个重要的汽车安全标准,它们在“系统安全”中扮演的角色各自不同,但又有一定交集。在智能网联汽车的高级辅助驾驶系统(ADAS)应用中,理解这两个标准的区别及其相互关系,对于保障车辆的安全性至关重要。ISO 26262:汽车功能安全的基石如图2.1所示,ISO 26262对“功能安全”的定义解释为:不存在由于电子/电气系统失效引起的危害
    广电计量 2025-01-02 17:18 218浏览
  • 国际标准IPC 标准:IPC-A-600:规定了印刷电路板制造过程中的质量要求和验收标准,涵盖材料、外观、尺寸、焊接、表面处理等方面。IPC-2221/2222:IPC-2221 提供了用于设计印刷电路板的一般原则和要求,IPC-2222 则针对高可靠性电子产品的设计提供了进一步的指导。IPC-6012:详细定义了刚性基板和柔性基板的要求,包括材料、工艺、尺寸、层次结构、特征等。IPC-4101:定义了印刷电路板的基板材料的物理和电气特性。IPC-7351:提供了元件封装的设计规范,包括封装尺寸
    Jeffreyzhang123 2025-01-02 16:50 198浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 113浏览
  • 在科技飞速发展的今天,机器人已经逐渐深入到我们生活和工作的各个领域。从工业生产线上不知疲倦的机械臂,到探索未知环境的智能探测机器人,再到贴心陪伴的家用服务机器人,它们的身影无处不在。而在这些机器人的背后,C 语言作为一种强大且高效的编程语言,发挥着至关重要的作用。C 语言为何适合机器人编程C 语言诞生于 20 世纪 70 年代,凭借其简洁高效、可移植性强以及对硬件的直接操控能力,成为机器人编程领域的宠儿。机器人的运行环境往往对资源有着严格的限制,需要程序占用较少的内存和运行空间。C 语言具有出色
    Jeffreyzhang123 2025-01-02 16:26 153浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 164浏览
  • 【工程师故事】+半年的经历依然忧伤,带着焦虑和绝望  对于一个企业来说,赚钱才是第一位的,对于一个人来说,赚钱也是第一位的。因为企业要活下去,因为个人也要活下去。企业打不了倒闭。个人还是要吃饭的。企业倒闭了,打不了从头再来。个人失业了,面对的不仅是房贷车贷和教育,还有找工作的焦虑。企业说,一个公司倒闭了,说明不了什么,这是正常的一个现象。个人说,一个中年男人失业了,面对的压力太大了,焦虑会摧毁你的一切。企业说,是个公司倒闭了,也不是什么大的问题,只不过是这些公司经营有问题吧。
    curton 2025-01-02 23:08 290浏览
  • Matter加持:新世代串流装置如何改变智能家居体验?随着现在智能家庭快速成长,串流装置(Streaming Device,以下简称Streaming Device)除了提供更卓越的影音体验,越来越多厂商开始推出支持Matter标准的串流产品,使其能作为智能家庭中枢,连结多种智能家电。消费者可以透过Matter的功能执行多样化功能,例如:开关灯、控制窗帘、对讲机开门,以及操作所有支持Matter的智能家电。此外,再搭配语音遥控器与语音助理,打造出一个更加智能、便捷的居家生活。支持Matter协议
    百佳泰测试实验室 2025-01-03 10:29 143浏览
  • 影像质量应用于多个不同领域,无论是在娱乐、医疗或工业应用中,高质量的影像都是决策的关键基础。清晰的影像不仅能提升观看体验,还能保证关键细节的准确传达,例如:在医学影像中,它对诊断结果有着直接的影响!不仅如此,影像质量还影响了:▶ 压缩技术▶ 存储需求▶ 传输效率随着技术进步,影像质量的标准不断提高,对于研究与开发领域,理解并提升影像质量已成为不可忽视的重要课题。在图像处理的过程中,硬件与软件除了各自扮演着不可或缺的基础角色,有效地协作能够确保图像处理过程既高效又具有优异的质量。软硬件各扮演了什么
    百佳泰测试实验室 2025-01-03 10:39 137浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 119浏览
  • 从无到有:智能手机的早期探索无线电话装置的诞生:1902 年,美国人内森・斯塔布菲尔德在肯塔基州制成了第一个无线电话装置,这是人类对 “手机” 技术最早的探索。第一部移动手机问世:1938 年,美国贝尔实验室为美国军方制成了世界上第一部 “移动” 手机。民用手机的出现:1973 年 4 月 3 日,摩托罗拉工程师马丁・库珀在纽约曼哈顿街头手持世界上第一台民用手机摩托罗拉 DynaTAC 8000X 的原型机,给竞争对手 AT&T 公司的朋友打了一个电话。这款手机重 2 磅,通话时间仅能支持半小时
    Jeffreyzhang123 2025-01-02 16:41 167浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 155浏览
  • 本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。查看系统版本信息查看操作系统版本信息root@ido:/# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=20.04DISTRIB_CODENAME=focalDIS
    Industio_触觉智能 2025-01-03 11:37 137浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦