NIVDIA
PCI-Express Runtime D3 (RTD3) Power
Management PCI-Express Runtime D3 (RTD3) Power Management是一種用于管理PCI-Express設(shè)備的低功耗模式的技術(shù)RTD3是一種睡眠狀態(tài),當(dāng)PCI-Express設(shè)備處于空閑狀態(tài)時,可以將其置于低功耗模式,以減少能源消耗和熱量產(chǎn)生。英偉達(dá)(NVIDIA)圖形處理器有許多省電機(jī)制。其中一些機(jī)制會降低芯片不同部分的時鐘和電壓,在某些情況下還會完全關(guān)閉芯片部分的時鐘或電源,但不會影響功能或繼續(xù)運(yùn)行,只是速度較慢。然而,英偉達(dá)(NVIDIA)GPU 的最低能耗狀態(tài)需要關(guān)閉整個芯片的電源,通常是通過調(diào)用 ACPI 來實現(xiàn)。這顯然會影響功能。在關(guān)機(jī)狀態(tài)下,GPU 無法運(yùn)行任何功能。必須注意的是,只有在 GPU 上沒有運(yùn)行任何工作負(fù)載的情況下才能進(jìn)入這種狀態(tài),而且在試圖開始工作或進(jìn)行任何內(nèi)存映射 I/O (MMIO) 訪問之前,必須先重新開啟 GPU 并恢復(fù)任何必要的狀態(tài)。
Configuring Power Management Support
NVIDIA的Linux驅(qū)動程序支持掛起(掛起到RAM)和休眠(掛起到磁盤)等系統(tǒng)電源管理操作,如在x86/x86_64平臺上的ACPI S3和S4。當(dāng)系統(tǒng)掛起或休眠時,NVIDIA內(nèi)核驅(qū)動程序會準(zhǔn)備正在使用的GPU進(jìn)入睡眠狀態(tài),并保存必要的狀態(tài),以便在系統(tǒng)稍后恢復(fù)時將這些GPU返回到正常運(yùn)行狀態(tài)。NVIDIA內(nèi)核驅(qū)動程序保存的GPU狀態(tài)包括在視頻內(nèi)存中進(jìn)行的分配。然而,這些分配通常是大量的,而且通常無法被清除。由于在掛起時驅(qū)動程序可用的系統(tǒng)內(nèi)存量通常不足以容納視頻內(nèi)存的大量拷貝,因此NVIDIA內(nèi)核驅(qū)動程序被設(shè)計成保守行動,并且通常只保存必要的視頻內(nèi)存分配。用戶空間的NVIDIA驅(qū)動程序和一些應(yīng)用程序在一定程度上彌補(bǔ)了視頻內(nèi)存內(nèi)容的損失,但可能導(dǎo)致渲染損壞和應(yīng)用程序在退出電源管理周期時崩潰等問題。為了更好地支持這些類型應(yīng)用程序的電源管理,NVIDIA的Linux驅(qū)動程序提供了一個自定義的電源管理接口,旨在與systemd等系統(tǒng)管理工具集成。此接口仍被視為實驗性質(zhì)。它默認(rèn)情況下不被使用,但可以利用它以實現(xiàn)更好的電源管理。
NIVDIA-SMI
NVIDIA 系統(tǒng)管理接口 (nvidia-smi) 是一個基于NVIDIA 管理庫 (NVML) 的命令行實用程序,旨在幫助管理和監(jiān)控 NVIDIA GPU 設(shè)備。該實用程序允許管理員查詢 GPU 設(shè)備狀態(tài),并通過適當(dāng)?shù)臋?quán)限允許管理員修改 GPU 設(shè)備狀態(tài)。它針對的是 Tesla TM、GRID TM、Quadro TM和 Titan X 產(chǎn)品,但其他 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的使用權(quán),一定程度上可以降低功耗
NVML
NVML(NVIDIA Management Library)是NVIDIA提供的一組API(應(yīng)用程序編程接口),用于管理和監(jiān)控NVIDIA GPU(圖形處理器單元)的相關(guān)參數(shù)和狀態(tài)。它提供了一種編程接口,使開發(fā)人員可以訪問和控制顯卡的各種屬性,如溫度、功耗、使用情況、性能狀態(tài)等。NVML API Reference Manual nvmlDeviceSetPowerManagementLimit
參數(shù)
device 目標(biāo)設(shè)備的標(biāo)識符
Power 設(shè)置電源管理限制(以毫瓦為單位)
返回值
NVML_SUCCESS 如果限制已經(jīng)設(shè)置完成
NVML_ERROR_UNINITIALIZED 庫尚未初始化成功
NVML_ERROR_INVALID_ARGUMENT 無效的值
NVML_ERROR_NOT_SUPPORTED 不支持該功能
NVML_ERROR_GPU_IS_LOST 目標(biāo)GPU已脫離總線
NVML_ERROR_UNKNOWN 任何意外錯誤出現(xiàn)
描述
設(shè)置該設(shè)備的新功率限制
注意
重新啟動或驅(qū)動程序卸載后,限制不會持續(xù)存在。啟用持久模式以防止驅(qū)動程序在沒有應(yīng)用程序使用設(shè)備時卸載
NVIDIA SETTINGS
NVIDIA官方的驅(qū)動程序(NVIDIA-Driver)提供了一些電源管理選項,可以通過NVIDIA設(shè)置工具(nvidia-settings)進(jìn)行配置。打開nvidia-settings,導(dǎo)航到“PowerMizer”選項卡,可以調(diào)整GPU的性能級別和電源模式。在這里,你可以選擇“自動”模式,讓驅(qū)動程序自動根據(jù)需要調(diào)整GPU的性能和功耗,或者選擇“最大性能”模式以獲取最佳性能。
LINUX電源管理框架
AMD GPU的Linux電源管理框架是一個由內(nèi)核模塊、用戶空間工具和ACPI方法等組成的復(fù)雜系統(tǒng),旨在優(yōu)化AMD GPU在Linux系統(tǒng)下的能耗和性能表現(xiàn)。在AMD GPU的Linux電源管理框架中,內(nèi)核模塊負(fù)責(zé)實現(xiàn)GPU的功耗監(jiān)測、功率管理和功率限制等功能,同時提供了一組名為“pp_*”函數(shù)的API,供用戶空間程序調(diào)用。用戶空間工具則通過調(diào)用這些API來實現(xiàn)GPU的功耗管理和性能調(diào)優(yōu)等功能,比如可以通過設(shè)置GPU的功耗限制來控制GPU的功耗和溫度,或者通過調(diào)整GPU的頻率來提高GPU的性能表現(xiàn)。ACPI方法則用于與系統(tǒng)BIOS進(jìn)行交互,以獲取和設(shè)置GPU的功耗管理相關(guān)參數(shù)。AMD GPU的Linux電源管理框架在Linux內(nèi)核中已經(jīng)得到了很好的支持,并且已經(jīng)成為了Linux操作系統(tǒng)中GPU電源管理的標(biāo)準(zhǔn)框架之一。通過使用AMD GPU的Linux電源管理框架,用戶可以更好地控制GPU的能耗和性能表現(xiàn),從而提高計算機(jī)的穩(wěn)定性和可靠性,同時也可以延長GPU的使用壽命。
HWMON
HWMON是指Linux內(nèi)核中的硬件監(jiān)控(Hardware Monitoring)子系統(tǒng),主要用于監(jiān)測計算機(jī)硬件的溫度、電壓、風(fēng)扇轉(zhuǎn)速等信息,并將這些信息以文件的形式保存在/sys/class/hwmon目錄下。HWMON子系統(tǒng)通常與傳感器硬件設(shè)備結(jié)合使用,如CPU溫度傳感器、風(fēng)扇轉(zhuǎn)速傳感器等,可以通過讀取/sys/class/hwmon目錄下的文件來獲取這些傳感器的實時數(shù)據(jù)。AMD GPU驅(qū)動針對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 文件來實現(xiàn)
power_dpm_state
power_dpm_state 文件是舊版接口,僅為了向后兼容而提供。amdgpu 驅(qū)動程序提供了 sysfs API,用于調(diào)整某些與電源相關(guān)的參數(shù)。文件 power_dpm_state 用于此目的。它接受以下參數(shù):battery balanced performance
power_dpm_force_performance_level
amdgpu 驅(qū)動程序提供了 sysfs API,用于調(diào)整某些與電源相關(guān)的參數(shù)。文件 power_dpm_force_performance_level 用于此目的。它接受以下參數(shù):
auto - 選擇自動時,驅(qū)動程序?qū)L試針對驅(qū)動程序中的當(dāng)前條件動態(tài)選擇最佳功率配置文件
low - 最低功耗狀態(tài)
high - 最高功耗狀態(tài)
manual - 用戶可以通過 sysfs pp_dpm_mclk、pp_dpm_sclk 和 pp_dpm_pcie 文件手動調(diào)整每個時鐘域啟用的 - 電源狀態(tài),并通過 pp_power_profile_mode sysfs 文件調(diào)整電源狀態(tài)轉(zhuǎn)換heuristics
profile_standard
profile_min_sclk
profile_min_mclk
profile_peak 選擇分析模式后,時鐘和電源門控將被禁用,并且時鐘將針對不同的分析情況進(jìn)行設(shè)置。建議使用此模式來分析特定工作負(fù)載,您不希望時鐘或時鐘波動的電源門控干擾您的結(jié)果。profile_standard 將時鐘設(shè)置為固定時鐘級別,該級別因不同的 asic 而異。profile_min_sclk 強(qiáng)制 sclk 為最低級別。profile_min_mclk 強(qiáng)制 mclk 至最低級別。profile_peak 將所有時鐘(mclk、sclk、pcie)設(shè)置為最高級別。
pp_table
amdgpu 驅(qū)動程序提供了一個 sysfs API,用于上傳新的 powerplay table。文件 pp_table 用于此目的。讀取該文件將轉(zhuǎn)儲當(dāng)前的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 驅(qū)動程序提供了一個 sysfs API,用于調(diào)整電源狀態(tài)下每個功率級別的時鐘和電壓。pp_od_clk_Voltage 用于此目的。請注意,公開的是實際內(nèi)存控制器時鐘速率,而不是 DRAM 的有效內(nèi)存時鐘
pp_dpm_*
amdgpu 驅(qū)動程序提供了一個 sysfs API,用于調(diào)整給定電源狀態(tài)啟用的功率級別。文件 pp_dpm_sclk、pp_dpm_mclk、pp_dpm_socclk、pp_dpm_fclk、pp_dpm_dcefclk 和 pp_dpm_pcie 用于此目的。####pp_power_profile_mode amdgpu 驅(qū)動程序提供了一個 sysfs API,用于調(diào)整與在電源狀態(tài)下的電源級別之間切換相關(guān)的heuristics。文件 pp_power_profile_mode 用于此目的
*_busy_percent
amdgpu 驅(qū)動程序提供了一個 sysfs API,用于讀取 GPU 繁忙程度的百分比。文件 gpu_busy_percent 用于此目的。。amdgpu 驅(qū)動程序提供了一個 sysfs API,用于讀取 VRAM 的繁忙程度(百分比)。文件 mem_busy_percent 用于此目的。
gpu_metrics
amdgpu 驅(qū)動程序提供 sysfs API 用于檢索當(dāng)前 GPU 指標(biāo)數(shù)據(jù)。文件 gpu_metrics 用于此目的。讀取該文件將轉(zhuǎn)儲所有當(dāng)前 GPU 指標(biāo)數(shù)據(jù)。這些數(shù)據(jù)包括溫度、頻率、引擎利用率、功耗、throttler狀態(tài)、風(fēng)扇速度和CPU核心統(tǒng)計數(shù)據(jù)(僅適用于APU)。
GFXOFF
GFXOFF 是大多數(shù)最新 GPU 的一項功能,可在運(yùn)行時節(jié)省電能。當(dāng)圖形處理器或計算管道沒有工作負(fù)載時,顯卡的 RLC(運(yùn)行列表控制器)固件會動態(tài)關(guān)閉圖形引擎。在支持的 GPU 上,GFXOFF 默認(rèn)開啟。用戶空間可通過 debugfs 接口與 GFXOFF 交互
ROCM-SIM
ROCM-SMI(ROCm System Management Interface)是一款用于管理和監(jiān)控AMD ROCm平臺的命令行工具。它提供了一系列選項和功能,用于管理GPU設(shè)備、監(jiān)控功耗和溫度、檢查顯存使用情況以及查看GPU的性能信息。ROCM-SMI可以用于以下操作:監(jiān)控GPU的功耗和溫度:ROCM-SMI可以顯示GPU的功耗和溫度信息,以及GPU的風(fēng)扇轉(zhuǎn)速、電壓和功耗限制等。這些信息對于調(diào)整GPU的功耗管理和性能優(yōu)化非常有用。管理GPU的功耗模式:ROCM-SMI可以設(shè)置GPU的功耗模式,例如常規(guī)模式、低功耗模式或固定功耗模式。這些模式可以根據(jù)需求來平衡GPU的功耗和性能。檢查顯存使用情況:ROCM-SMI可以顯示GPU顯存的使用情況,包括已使用的顯存量、剩余的顯存量以及顯存帶寬的使用情況。這對于優(yōu)化GPU計算和內(nèi)存管理非常有用。查看GPU的性能信息:ROCM-SMI可以顯示GPU的性能指標(biāo),如核心頻率、顯存頻率、顯存帶寬等。這些信息對于評估GPU的性能和進(jìn)行性能優(yōu)化非常有用。
Radeon-profile
Radeon-profile是一個第三方開源的工具,用于在Linux上管理和監(jiān)控AMD Radeon顯卡。它提供了一個圖形界面,可以用于調(diào)整顯卡的功耗管理、風(fēng)扇控制和性能調(diào)優(yōu)。通過Radeon-profile,用戶可以執(zhí)行以下操作:監(jiān)控功耗和溫度:Radeon-profile顯示GPU的功耗和溫度信息,幫助用戶了解顯卡的工作狀態(tài)和溫度情況。設(shè)置功耗模式:用戶可以切換顯卡的功耗模式,如自動模式、低功耗模式、中等功耗模式和高功耗模式。這些模式可以根據(jù)用戶需求平衡功耗和性能。風(fēng)扇控制:Radeon-profile允許用戶手動調(diào)整顯卡風(fēng)扇的轉(zhuǎn)速,以控制顯卡的溫度和散熱效果。調(diào)整顯卡的性能設(shè)置:用戶可以通過Radeon-profile調(diào)整顯卡的核心頻率、顯存頻率和電壓等參數(shù),以實現(xiàn)更好的性能。
-
處理器
+關(guān)注
關(guān)注
68文章
19051瀏覽量
228556 -
電源管理
+關(guān)注
關(guān)注
115文章
6130瀏覽量
143986 -
gpu
+關(guān)注
關(guān)注
27文章
4650瀏覽量
128490 -
Linux
+關(guān)注
關(guān)注
87文章
11182瀏覽量
208540 -
NIVDIA
+關(guān)注
關(guān)注
0文章
6瀏覽量
7127
原文標(biāo)題:GPU功耗管理方式介紹(Linux)
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論