AMD GPUの電力削減

AMD GPUの電力削減

Linuxで最近オープンソースのAMDGPU対応GPUの電力量(言いますか?)をどのように減らしますか?

ここでの目標は、消費電力を減らし、パフォーマンス/ワットの最適点、つまりカードに付属しているよりも低い消費電力に近づくことです。

理想的には、これはDebianを使用してパッケージ化されたソフトウェアです。ありがとうございます!

ベストアンサー1

紹介する


消費電力を減らすには、GPUの電圧を下げるか、GPUの電源状態を制限するか、「デボルト」する必要があります。

2015年以降、最新(4.17以上)カーネルとamdgpuRadeon GPUを使用した最新のドライバを使用すると、カードをオーバークロックすることができます(したがって電圧を下げ、消費電力(ワット)を減らすことができます)。

そのトピックについて見つけたいくつかのリソースへのリンクを提供しますが、この回答には関連情報の一部が含まれています。最初の部分では、次のように仮定します。前提条件そこに入り、電圧を下げて継続しようとします。残りの答えは、必要な人にAMD GPUチューニングリソースのコレクションとして提供されます。

早期警告として、GPU電圧を下げたりオーバークロックすると安定性の問題が発生することがあります。電圧とクロックの設定を変更したら、GPUの安定性をテストして、GPUがまだ「安全な」方法で動作していることを確認する必要があります(例:GpuTestFurMarkを使用することは、パフォーマンスと安定性をテストするための良い方法です。しかもPhoronixテストスイートLinuxでコンピュータをベンチマークします。)消費電力を減らすための努力で最も望ましくないことは、クラッシュ、欠陥、アーティファクト、またはその他のパフォーマンスの低下を引き起こすことです。

高速で簡単な低電圧


Wikiの指示に従ってくださいLinuxReviews.org次の手順を実行して、パフォーマンスレベル(したがって消費電力)を変更できます。

変更する前に最初にすべきことは、手動制御を有効にすること/sys/class/drm/card0/device/power_dpm_force_performance_levelです。manual時計の値を書くとwrite error: Invalid argument errors分からない値が出てきます。

echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level

power_dpm_force_performance_level以下を除く利用可能な設定manual:

auto ドライバの自動選択 low 可能な最低クロックを強制し、そこでGPUをロックします。 high 可能な限り高いクロックを強制し、そこからGPUをロックします。
profile_standard
profile_min_sclk
profile_min_mclk
profile_peak 「プロファイリングモードを選択すると、クロッキングとパワーゲーティングが無効になり、クロッキングはさまざまなプロファイリング状況設定を対象としています。このモードは、クロック変動が結果を妨げないようにする特定のワークロードをプロファイリングし、sclkをすべてのクロック( mclk、mclkなど)にできるだけ低いレベルにprofile_standard強制する固定クロックレベルに設定することをお勧めしprofile_min_sclkますprofile_min_mclkprofile_peak

単に値をまたはlowレベルprofile_min_sclk profile_min_mclkに設定して、コアクロックとメモリクロックをそれぞれ下げることで消費電力を削減できます。

この文書の残りの部分よりも詳細な制御が必要な場合は、この文書がお客様の要件に適しています。

前提条件


最新のサポートドライバでバージョン4.17以降のカーネルがインストールされていることを確認する必要がありますAMDGPU。必要に応じて、DebianのインストールをDebian 10(Buster)に更新するか、buster-backportsリポジトリを追加する必要があります。

/etc/apt/sources.listバックポートを追加するには、次の行を含むようにファイルを編集する必要があります。

deb http://deb.debian.org/debian buster-backports 

その後、実行してapt updateバックポートストアの追加を完了します。

次の手順を実行して新しいカーネルをインストールします。

apt-cache search linux-image #Find the kernel and kernel headers available to you.
apt install linux-image-<flavor> #Use `apt-get -t buster-backports <package>` if necessary

再起動してxserver-xorg-video-amdgpu libgl1-mesa-dri libglx-mesa0 mesa-vulkan-drivers xserver-xorg-video-allパッケージをインストールします。

南島または島(GCN 1 / GCN 2 AMD GPU)のサポートを有効にする必要がある場合、このArchWikiページをフォローしてください

最後に、カーネルパラメータを追加してsysfsからクロックと電圧調整へのアクセスをロック解除する必要がありますamdgpu.ppfeaturemask=0xffffffff(注:この値はテストと特定の変更によって異なります。これはカードを完全にロック解除するためだけです)です)。

次の行を編集して、次の操作を行い/etc/default/grubます。

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.ppfeaturemask=0xffffffff"  

それからsudo update-grub

ここを確認して再起動後、現在の機能マスクを確認してください。

printf "0x%08x\n" $(cat /sys/module/amdgpu/parameters/ppfeaturemask)

オーバークロック/バンピング


警告:エラーはすぐに致命的なハードウェア損傷を引き起こす可能性があるため、入力した値を慎重に確認してください。

すべてを設定したら、手動またはツールサポートの2つの方法で時計と電圧を調整できます。

手動

RedditユーザーPannubaがAMD GPUをオーバークロックする方法を説明します。この投稿

以下を編集する必要があります。/sys/class/drm/card0/device/pp_od_clk_voltage

編集したい場所を見つけます。readlink -f /sys/class/drm/card0/device

コアのP状態#7とVRAMのP状態#2を編集しようとしています。これは、GPUがロード状態で実行されたときの値であるためです。

sudo sh -c "echo 's 7 1450 1150' > /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/pp_od_clk_voltage"
sudo sh -c "echo 'm 2 2065 950' > /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/pp_od_clk_voltage"

ファイルパスは次のとおりです。彼らのGPU。前のコマンドを使用してパスを検索します。あなたの。所望のクロック速度及び電圧値も様々である。電圧を下げるには、コアとVRAMの各P状態電圧をデフォルト値より低く変更します。クロック速度を同じに保つことができますが、場合によってはこの値を下げる必要があります。 GPUの安定性テストとベンチマークが始まるところです。

のように建築ウィキペディア、次のコマンドを実行して、特定のP状態を適用、確認、強制、リセットできます。

適用するには、以下を実行してください。

echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage

動作していることを確認するには、3D負荷でクロックと電圧を読みます。

watch -n 0.5  cat /sys/kernel/debug/dri/0/amdgpu_pm_info

次のコマンドを使用してデフォルト値にリセットできます。

echo "r" > /sys/class/drm/card0/device/pp_od_clk_voltage

たとえば、点滅アーチファクトやブレークなどの電力を大幅に節約するP状態の問題を解決するために、ドライバが特定のP状態に切り替えないように無効にすることもできます。 GPU自体をより低いクロックで実行できるようにしながら、Polaris RX 5xxカードで最高のVRAM P状態を強制するには、次の手順を実行します。

echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo "2" >  /sys/class/drm/card0/device/pp_dpm_mclk

最高のGPU P状態3つだけが許可されます。

echo "5 6 7" >  /sys/class/drm/card0/device/pp_dpm_sclk

GPUが許可する最大消費電力を50ワットに設定するには、次の手順を実行します。

echo 50000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap

Linuxカーネル4.20以前は、この値を減らすことしかできず、増やすことはできませんでした。

起動時にこれらの変更を適用するには、スクリプトとsystemdサービスを作成する必要があります。スクリプトはテストしたジョブ値とGPUのファイルパスを使用する必要があります。

/usr/bin/システム全体のスクリプトのために、安全な場所にこのスクリプトを保存してください。

#!/bin/sh
sudo sh -c "echo 's 7 <Your desired values here>' > /sys/devices/Your/Path/Here/pp_od_clk_voltage"
sudo sh -c "echo 'm 2 <Your desired values here' > /sys/devices/Your/Path/Here/pp_od_clk_voltage"
sudo sh -c "echo 'c' > /sys/devices/Your/Path/Here/pp_od_clk_voltage"

/etc/systemd/system/undervolt.service次のようなファイルを作成します。

[Unit]
Description=Undervolting GPU

[Service]
Type=oneshot
ExecStart=/Path/To/Script.sh

[Install]
WantedBy=multi-user.target

sudo systemctl enable undervolt.service有効にするには実行してください。再起動後に実行して確認しますcat /sys/devices/Your/Path/Here/pp_od_clk_voltage

Pannubaユーザーはまた、コンテンツをデフォルト値に復元するスクリプトを作成することを提案しました。これは必ずしもSystemDサービスである必要はありません。

ツールサポート

AMD GPUをオーバークロックするために使用できるいくつかのツールがあります。

それぞれには特定の前提条件と設定があり、個別にリリースできます。システムの設定と調整方法については、該当するガイドを参照してください。

結論として


ご覧のとおり、AMD GPU Linuxチューニングは最高の経験になっています。 Windows ユーザーが利用できる多くの機能が Linux ユーザーも利用可能になり、オープンソースドライバも使用できるようになりました。さまざまな調整とオプションを実行できます。具体的な内容は皆様にお任せいたします。消費電力を減らすには、P状態で電圧を下げるか、カードの電力を制限することもできます。何でも変更したら、カードとコンピュータの信頼性をテストしてください。 Radeonオープンソースドライバ機能の詳細をご覧ください。ここ

この回答について質問や質問がある場合は、コメントを残してください。コマンドを試す前に、私が提供する各リンクを注意深く読んでください。誤解を解決し、投稿を改善するためにフィードバックを送信していただきありがとうございます。必要に応じて回答を更新できます。

頑張ってください!

リソース


おすすめ記事