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