コンテンツへスキップ

電気料金の高騰により、ITにおいてもエネルギー効率の高い方法で行動することがますます重要になっている。Proxmoxを仮想化プラットフォームとして使用すれば、パフォーマンスを犠牲にすることなく、節電のための的を絞った対策を講じることができる。特に、24時間稼動しているホームネットワークやホームラボの小型サーバーは、電力を消費し、その結果、お金を食い物にする可能性がある。この記事では、Proxmoxを使って電力を節約し、同時にエコロジカル・フットプリントを削減する実践的なヒントを紹介する。

事前に:消費電力を測定する

対策の効果を目に見えるものにするために、消費電力を最適化する前に、まず消費電力を測定すべきである。これには、安価な測定器*またはTP-Link Tapo P110のようなスマートソケットがあれば十分だ。

プロックスモックスの節電:5つのヒント

Proxmoxの電力を節約するための5つのヒントは、ハードウェアの購入、BIOS設定、Proxmox自体のソフトウェア設定をカバーしている。

適切なハードウェア

もちろん、ハードウェアを正しく選択することは、Proxmoxのエネルギー消費を最適化するための基礎となる。古い企業向けハードウェアは、アイドル時の消費電力が200ワット以上と高いことが多い。そのため、消費者向けハードウェアに注目するのがよい。ミニPCSは、アイドル時の消費電力がわずか15~20ワットであることが多いため、特に適している。しかし、拡張オプションは非常に限られている。

拡張カードの消費電力にも注意が必要だ。例えば、Intel X520-D2 10Gbitネットワークカードだけでも8.6ワットを消費する。これはProxmoxの消費電力に影響する。

Hardwareluxxのフォーラムには、Proxmoxの特に省エネなコンフィギュレーションのリストがある。

Click here to display content from docs.google.com.

一般的には、すべての部品に依存する:電源ユニットから始まり、電源ユニットには一定の自己消費レベルがある。また、ブロンズ、シルバー、ゴールド、プラチナといった異なる効率レベルもある。

消費電力が高い方が有利な部品は、次のようなものだろう。

  • グラフィックスカード
  • RAIDコントローラ/HBA
  • 10GBit以上のネットワークカード

BIOS設定を正しく行う

不要なハードウェアを停止する

ほとんどのBIOS / UEFIは、特定のハードウェアを非アクティブにするオプションを提供している。例えば仮想化ホストでは、オーディオチップは必要ないことが多い。未使用のPCieデバイス、COMポート、USBポートも同様だ。

ASPMを起動する

ASPM(ActiveState Power Management)は、PCIe(Peripheral Component Interconnect Express)接続のエネルギー消費を最適化するためにコンピュータで使用される技術である。PCIeは高速インターフェースで、グラフィックカード、SSD、ネットワークカードなどのハードウェア・コンポーネントの接続によく使用される。

ASPMはどのように機能するのか?

ASPMは、システムの利用状況や要求に応じて、異なる電力状態を自動的に切り替える。

ASPMによる電力状態:
  1. L0(アクティブ状態):フルパワーの通常動作状態。
  2. L0s(低電力サブステート):節電のために接続が部分的に無効化される低電力状態。
  3. L1(低電力状態):消費電力をさらに抑えるため、接続をほぼ完全にオフにするディープスリープ状態。

変更はミリ秒単位で自動的に行われるため、システムの性能に影響はない。したがって、ASPMは常にBIOSで有効にしておく必要がある。

CPUの省電力機能を有効にする

CPUにもパワースタッツがあり、この場合はCスタッツと呼ばれる。メーカーやバージョンにもよるが、C10まで有効化できるはずだ。しかし、オプションがC6までしかない可能性もある。 しかし、ここではあまり電力を節約できないだろう。

Cステートとは何か?

Cステートはプロセッサの省エネモードであり、CPUがフルに使用されていないときに消費電力を削減するのに役立つ。各Cステートは省エネ状態を表し、C0はアクティブ・モード、上位のCステート(C1、C2、C3など)は下位の省エネモードを表す。これらの状態では、エネルギーを節約するために、CPUの一部が休止またはスリープモードになる。

Proxmoxと組み合わせることで、BIOSでC-Statesを有効にして電力を節約し、適切なCPU管理を行うことで、負荷時のパフォーマンスを損なうことなく、サーバーが特に効率的に動作するようにすることができる。ここでは、一般的なC-Stateとその機能の詳細なリストを示す:

C0 – アクティブ状態

  • 説明
    計算を実行するCPUのアクティブな動作状態。
  • エネルギー消費:
    すべてのCPUコアがアクティブであるため、消費量が最も高い。
  • アプリケーション:
    アプリケーションやプロセスが実行されているときに使用される。

C1 – 停止状態

  • 説明
    CPUがもはやアクティブなタスクを実行していないが、すぐに作業を再開する準備ができている最初の省エネ状態。
  • エネルギー消費:
    C0より削減されるが、最小限である。
  • アプリケーション:
    短期間のアイドル状態。

C2 – クロック停止状態

  • 説明
    CPUがエネルギーを節約するためにプロセッサクロックを停止する、より深い省エネモード。
  • エネルギー消費:
    C1より低いが、ウェイクアップ時間が若干長い。
  • 用途:
    永久的ではないが、より長いアイドリング・フェーズのために使用する。

C3 – スリープ状態

  • 説明
    この状態では、内部CPUロジックは非活性化されるが、キャッシュ内容は保持される。
  • エネルギー消費:
    C2より大幅に低いが、応答時間は長い。
  • アプリケーション:
    計算負荷の高いタスクの合間など、アイドル時間が長い場合。

C4 – 深い睡眠状態

  • 説明
    CPUロジックと電圧の両方がさらに低下するディープスリープ状態。キャッシュは保持される。
  • エネルギー消費:
    非常に低いが、再起動時に顕著な遅れがある。
  • アプリケーション:
    長期間アクティブに使用されないシステム用。

C6 – 深いパワーダウン状態

  • 説明
    この状態では、CPUはほぼ完全にオフになる。電圧とキャッシュ内容も削除される。
  • エネルギー消費:
    極めて低く、標準的なCステートの中で最も低い消費量である。
  • アプリケーション:
    最大限の省エネ、特にサーバーや散発的にしか使用されないシステムにおいて。

GPUの省電力機能を有効にする

GPUのパワーステートを効率的に使用することは、特にProxmoxをハイパーバイザーとして使用する場合、エネルギー節約に向けた重要なステップとなる。NvidiaとAMDのGPUには、消費電力をワークロードに動的に適応させる、いわゆるパワーステートがある。しかし、これはProxmoxの下ではどのように見えるのだろうか?

パワー・ステーツとプロックスモックス

Proxmoxでは、GPUパススルーを介してGPUが仮想マシン(VM)に割り当てられている場合にのみ、GPUの電力状態を管理することができる。GPUがVMによってアクティブに使用されていない場合、GPUはいわゆる「アイドル状態」に留まることが多く、この状態では消費電力が大幅に増加する。これは、VMがアクティブでないと、GPUがVMのオペレーティング・システムのドライバによって通常制御される省エネモードに切り替えられないためである。

Proxmoxの省電力GPU電源状態
UnRaid VMのGPU(RTX 4060TI)はPowerstate 8をアクティブにする。

GPU(NvidiaとAMDの両方)のパワーステートは、エネルギー効率とパフォーマンスのために設計された特別な動作モードである。これらは、GPUのクロックレートと電圧を現在の作業負荷に適応させる。以下はその概要である:

Nvidiaパワーステート(Pステート)
  • P0:最大パフォーマンス。この状態は、ゲームやGPUレンダリングなどの負荷の高いタスクに使用される。
  • P1-P8:作業負荷に応じて異なる電力レベル。例えば、それほど負荷の高くないアプリケーションや部分的な負荷に対応する。
  • P8-P12:アイドル時または低活動時に作動する省エネモード。GPUのクロックはここで最小になる。
  • アダプティブ・モード:Nvidia GPUは負荷に応じてP-Stateを動的に切り替える。
AMDパワー・ステーツ(パワープレイ・ステーツ)
  • DPM(ダイナミック・パワー・マネージメント)状態:自動的に調整されるさまざまな電力レベル
    :ポリラング・プレースホルダーは変更しない
  • ZeroCore Power:画面がスタンバイ状態のとき、GPUがほぼ完全にオフになる特別なモード。
類似点
  • ブーストモード:両メーカーともブーストテクノロジー(Nvidia GPU Boost、AMD Boost Clock)を提供しており、十分な冷却と電源供給があれば、一時的に公称値よりもクロックレートを上げることができる。
  • アイドルモード:大きな負荷がないときの最小消費電力。

パワー・ステーツは、エネルギー消費、発熱、性能のバランスを最適化するのに役立つ。

VMなしで高い消費電力

ProxmoxのGPUがVMにバインドされていない場合、消費電力の高い標準モードのままとなる。これは、GPUがアクティブに使用されていなくても、エネルギー消費の増加につながる。この問題はProxmoxフォーラムでも議論されている。

ProxmoxのGPUパススルーで電力を節約する

Proxmoxで節電するためには、以下の点に注意する必要がある:

  1. GPUをVMに割り当てる:これは、VMがGPUの電力状態を制御できる唯一の方法である。
  2. GPUドライバがVMに正しくインストールされていることを確認する:これにより、GPUが不要なときに省エネモード(NvidiaならP8、AMDならZeroCoreなど)に切り替えることができる。
  3. GPU パススルー設定を確認する:設定が正しくない場合、GPU、ひいてはProxmoxサーバーが不必要な電力を消費する可能性がある。

全体を自動化する方法もフォーラムで見つかった。

ProxmoxのGPU Power StatesのダミーVMでエネルギーを節約する

GPUに割り当てられているVMがたまにしか使用されない場合、ダミーVMで電源状態を制御するのが便利だ。これはメインVMがシャットダウンされると自動的に起動する。ドライバがインストールされているため、GPUを低電力状態に設定することができる。

ステップ1:ダミーVMのセットアップ
ProxmoxでVMを作成する
  • リソース:512MB RAM、2CPUコア、4GBメモリ。
  • オペレーティングシステム:Debian(例:Debian Bookworm)。
GPUをPCIデバイスとして追加する
  • ProxmoxのダミーVMに移動する。
  • ハードウェア>PCIデバイスの追加と進み、GPUを選択する。

Debianを設定する

etc/apt/sources.listファイルを開く。

nano /etc/apt/sources.list

以下のリポジトリを追加する:

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware

パッケージソースを更新し、Nvidiaドライバをインストールする:

apt update
apt install nvidia-smi

VMを再起動する:

reboot
ステップ2:フックスクリプトを作成する

フック・スクリプトは、メインVMがアクティブかどうかに応じてダミーVMが自動的に起動・停止するようにする。

フックスクリプト用のディレクトリに切り替える:

cd /var/lib/vz/snippets

スクリプトを作成し、実行可能にする

touch nvidiavm.sh
chmod +x nvidiavm.sh
nano nvidiavm.sh

以下の内容を挿入する(VM IDを調整する):

#!/bin/bash
VMID=$1
PHASE=$2

if [ "$VMID" = "105" ]; then
  if [ "$PHASE" = "pre-start" ]; then
    echo "Win10 VM pre-start: Stopping Nvidia Dummy VM"
    qm stop 200

  elif [ "$PHASE" = "post-stop" ]; then
    echo "Win10 VM post-stop: Starting Nvidia Dummy VM"
    qm start 200
  fi
fi
  • VMID105:リソース集約型VMのID。
  • VMID200:ダミーVMのID。

CTRL + Xと “Y “でファイルを保存する。

ステップ3:メインVMにフックスクリプトを割り当てる

スクリプトをパフォーマンス重視のVMにバインドする:

qm set 105 --hookscript local:snippets/nvidiavm.sh

メインVMを起動・停止する。フック・スクリプトの実行を:

journalctl -b

このようなエントリーを見るべきだ:

Jul 29 01:53:48 deb qmeventd[135980]: Win10 VM post-stop: Starting Nvidia Dummy VM

このセットアップでは、アイドル時でもGPUは省電力状態を維持する。ダミーVMは、フックスクリプトが自動制御を引き継いでいる間、Nvidiaドライバがロードされたままであることを保証する。

ProxmoxでCPUクロックを下げて電力を節約する

Proxmoxはデフォルトですべての省電力機能を無効にし、最大限のパフォーマンスを保証する。しかし、いくつかの調整を行うことで、CPUクロックレートを下げ、Proxmoxで効率的に電力を節約することができる。これらの変更は公式にはサポートされていないが、何の問題もなく動作する。ただし、まずコンポーネントを省エネモードから “ウェイクアップ “させる必要があるため、システムの反応が少し遅くなる可能性があることに注意してほしい。

CPUモードをチェックする

このコマンドを使えば、CPUがどのモードで動作しているかを調べることができる:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

各CPUコアはここに個別にリストされている。デフォルトでは、モードは「パフォーマンス」に設定されている。CPUコアの現在の周波数を見たい場合は、 :

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq

CPUを省エネモードに切り替える

CPUをより効率的にし、クロックレートを下げるには、”scaling_governor “を “powersave “に設定すればよい:

echo "powersave" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

これはCPUコアの周波数を下げ、Proxmoxの省電力化に役立つ。ただし、この値は再起動またはアップデート後にデフォルト値にリセットされる。

設定を永久保存する

crontabにコマンドを入力することで、再起動後も省エネモードが有効になる:

でCrontabを開く:

crontab -e

どのエディターを使うか聞かれたら、「nano」を選ぶ。キーボードの “1 “を押す。crontabファイルの一番下に以下の行を追加する:

@reboot echo "powersave" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

CTRL+Xでファイルを保存し、”Y “で変更を確認する。

設定を確認する

再起動後、上記のコマンドを使って、CPUコアが省エネモードで動作していることを確認できる。例えば

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

すべてのコアが “powersave “に設定されているかどうか。

これらの調整により、CPUクロックレートを下げ、Proxmoxで効果的に電力を節約することができる。その結果、システムの反応が多少遅くなったとしても、エネルギー消費量の削減という恩恵を受けることができる。効率が最も重要な環境には理想的だ。


Proxmoxは、インフラストラクチャのエネルギー消費を削減し、より効率的に作業するための多くのオプションを提供する。最新の省エネハードウェアを使用し、ASPM(Active State Power Management)などのBIOS設定を最適化し、不要なデバイスを停止することで、すでに大幅な節約を達成することができる。さらに、適切なCPUパワーガバナーを使用すれば、消費電力をさらに削減できる。GPUパススルーのトリックを使えば、パワーステートを積極的に利用することで、GPUのエネルギー効率を高めることもできる。

プロックスモックスによる節電が理にかなっている理由

節電は、エネルギーコストの削減という経済的な利益をもたらすだけでなく、環境保護にもつながる。特に、電気料金が高騰し、環境に対する意識が高まっている今、エネルギー効率の高いITインフラは決定的なアドバンテージとなる。適切な設定により、Proxmoxの利点を犠牲にすることなく、運用コストの削減と持続可能性への貢献を同時に実現することができる。

これらの対策により、Proxmoxの電力を節約し、効率的で環境に優しいITソリューションを構築することができる。