NIVDIA
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的性能和功耗,或者選擇“最大性能”模式以獲取最佳性能。
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調整顯卡的核心頻率、顯存頻率和電壓等參數,以實現更好的性能。
-
處理器
+關注
關注
68文章
19259瀏覽量
229655 -
電源管理
+關注
關注
115文章
6180瀏覽量
144452 -
gpu
+關注
關注
28文章
4729瀏覽量
128892 -
Linux
+關注
關注
87文章
11294瀏覽量
209341 -
NIVDIA
+關注
關注
0文章
6瀏覽量
7138
原文標題:GPU功耗管理方式介紹(Linux)
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論