0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NIVDIA和AMD GPU的LINUX電源管理框架講解

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2023-08-08 10:10 ? 次閱讀

NIVDIA

LINUX電源管理框架

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的性能和功耗,或者選擇“最大性能”模式以獲取最佳性能。

a1a39b0a-3590-11ee-9e74-dac502259ad0.png

AMD

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)更好的性能。

a1b19ea8-3590-11ee-9e74-dac502259ad0.png

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19051

    瀏覽量

    228556
  • 電源管理
    +關(guān)注

    關(guān)注

    115

    文章

    6130

    瀏覽量

    143986
  • gpu
    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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AMD迎頭猛追Intel 全球首發(fā)7nm GPU很威風(fēng)!

    `處理器大廠美商超微(AMD)日前發(fā)布全球首款7奈米制程資料中心繪圖處理器(GPU),為新世代人工智能(AI)、云端運(yùn)算與高效能運(yùn)算挹注動能。AMD Radeon Instinct MI60
    發(fā)表于 11-20 11:35

    深度學(xué)習(xí)框架TensorFlow&TensorFlow-GPU詳解

    TensorFlow&TensorFlow-GPU:深度學(xué)習(xí)框架TensorFlow&TensorFlow-GPU的簡介、安裝、使用方法詳細(xì)攻略
    發(fā)表于 12-25 17:21

    什么電源管理適用于FPGA、GPU和ASIC系統(tǒng)?

    在 FPGA、GPU 或 ASIC 控制的系統(tǒng)板上,僅有為數(shù)不多的幾種電源管理相關(guān)的設(shè)計挑戰(zhàn),但是由于需要反復(fù)調(diào)試,所以這類挑戰(zhàn)可能使系統(tǒng)的推出時間嚴(yán)重滯后。
    發(fā)表于 09-30 06:59

    什么電源管理適用于FPGA、GPU和ASIC系統(tǒng)

    在 FPGA、GPU 或 ASIC 控制的系統(tǒng)板上,僅有為數(shù)不多的幾種電源管理相關(guān)的設(shè)計挑戰(zhàn),但是由于需要反復(fù)調(diào)試,所以這類挑戰(zhàn)可能使系統(tǒng)的推出時間嚴(yán)重滯后。
    發(fā)表于 10-09 06:21

    探究Linux電源管理模型

    Linux電源管理/#more探究Linux電源管理模型,并為Tiny4412的LCD驅(qū)動添加
    發(fā)表于 10-29 06:04

    LINUX電源管理的相關(guān)資料分享

    Linux的系統(tǒng)suspend和resumeLinux內(nèi)核 runtime_PM 框架Linux內(nèi)核電源管理綜述
    發(fā)表于 11-15 07:10

    GPU如何在imx8m plus上工作以及GPU驅(qū)動程序如何集成到DRM驅(qū)動程序框架中?

    我正在研究 imx8m plus 的 DRM 驅(qū)動程序。在linux內(nèi)核源代碼中,我找到了CRTC、Encoder和Connector的驅(qū)動源,但是GPU驅(qū)動在哪里呢?我知道 vivante GPU
    發(fā)表于 06-08 08:23

    《SoC底層軟件低功耗系統(tǒng)設(shè)計與實現(xiàn)》基于Linux專門講解軟件低功耗框架和設(shè)計的書籍

    和細(xì)節(jié)都可以參考。 內(nèi)容充實 基于Linux講解了其涉及低功耗各個框架模塊的設(shè)計和實現(xiàn),后面的擴(kuò)展知識點(diǎn),低功耗問題定位及優(yōu)化思路都是干貨內(nèi)容,都是工程實踐相關(guān)的內(nèi)容,內(nèi)容比較充實。 從目錄也可以看出
    發(fā)表于 09-08 23:38

    linux存儲器管理

     linux存儲器管理 本章主要講解了存儲器管理的基本方式,剖析了Linux 操作系統(tǒng)對內(nèi)存的
    發(fā)表于 04-28 15:01 ?0次下載

    AMDLinux5.11開發(fā)版增添新顯卡的驅(qū)動

    正式版預(yù)計將于明年二月亮相。 本周三,AMDLinux 提交了多個 AMD GPU 核心的驅(qū)動,包含未發(fā)布的 GPU 核心。新的核心
    的頭像 發(fā)表于 11-30 10:14 ?1743次閱讀

    CPU、GPU、TPU、NPU等的講解

    CPU、GPU、TPU、NPU等的講解
    的頭像 發(fā)表于 01-05 14:54 ?1.1w次閱讀

    Linux電源管理

    CSDN僅用于增加百度收錄權(quán)重,排版未優(yōu)化,日常不維護(hù)。請訪問:www.hceng.cn 查看、評論。本博文對應(yīng)地址: https://hceng.cn/2018/01/18/Linux電源管理
    發(fā)表于 10-21 20:21 ?5次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>電源</b><b class='flag-5'>管理</b>

    LINUX電源管理

    Linux的系統(tǒng)suspend和resumeLinux內(nèi)核 runtime_PM 框架Linux內(nèi)核電源管理綜述
    發(fā)表于 11-07 19:36 ?8次下載
    <b class='flag-5'>LINUX</b><b class='flag-5'>電源</b><b class='flag-5'>管理</b>

    Linux電源管理研究筆記—動態(tài)電源管理 DPM

    Linux電源管理研究筆記—動態(tài)電源管理 DPM
    發(fā)表于 01-07 11:56 ?6次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>電源</b><b class='flag-5'>管理</b>研究筆記—動態(tài)<b class='flag-5'>電源</b><b class='flag-5'>管理</b> DPM

    Linux系統(tǒng) 電源管理的組成

    Linux 電源管理的組成 電源管理(Power Management)在 Linux Kern
    的頭像 發(fā)表于 07-20 11:11 ?715次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng) <b class='flag-5'>電源</b><b class='flag-5'>管理</b>的組成