k10railgunによるK10/K10.5世代のAMD製CPUの電圧下げに関するメモ(バージョン0.801.8a時点・ページ3/3)
「k10railgunによるK10/K10.5世代のAMD製CPUの電圧下げに関するメモ(バージョン0.801.8a時点・ページ2/3)」の続き。ここではk10railgun自体については扱わず、電圧を下げた運用に関係する負荷テストについてを扱う。
負荷テスト
負荷テストの必要性
一般的に、電圧を定格から(ある程度の幅を超えて)下げすぎると、CPUが正常ではない処理をして間違った内容のファイルが書き出されたり(ファイル破壊)、OSの動作が不安定になったり(例:フリーズを起こす)などの不具合を起こすことがある。電圧の設定値が問題を起こすレベルにあるのかどうかを見極められないと問題なく常用するのは難しく、その判別には長時間の負荷テストを含んだ設定の試行錯誤が必要不可欠となる。
とは言え、省電力目的であれば負荷テストのし過ぎは逆効果にもなるため、(リスクもある)限界ギリギリのラインを目指すのではなく、ある程度の余裕を持たせつつ、それで安全であると確認する意味で負荷テストをそれなりの時間しっかりと行う、というのがいいのかもしれない。
負荷テストの対象P-State
P-Stateは複数存在するため、cpufreq側で動作クロックを固定することでそれぞれ(全て)のP-Stateについての負荷テストを行うのが望ましいが、全てのP-Stateの電圧を定格電圧から同じずつ下げるのであれば最高クロックでのみテストを行って他はその結果を参考にするという方法もある。ただ、それでテストとして本当に十分と言えるかどうかは分からない。
一方で、「幾つかあるP-Stateの中で最大クロックと最小クロックのP-Stateの電圧だけを定格電圧から下げ、他のP-Stateは定格電圧」のような電圧設定をする場合は電圧を下げた2つのP-Stateをテストすれば十分と言える。最大クロックのP-Stateの電圧だけを下げるならそのP-Stateだけでよい。
Great Internet Mersenne Prime Search (GIMPS)による負荷テスト
メルセンヌ素数という数を探索するために使われるツールで、一度動かすと、止めるまでCPUには非常に高い負荷がかかり続ける。OSによってはprime95と呼ばれているが、GNU/Linux版はmprimeという名前のCLIツール。「prime」はここでは素数の意味(「Mersenne Prime」が「メルセンヌ素数」)。
http://www.mersenne.org/freesoft/
の「Setup Instructions for New Users」の下の「Step 2」にあるGNU/Linux向けのx86_32もしくはx86_64向けのリンクからファイルをダウンロードし、これを展開すると実行ファイルmprimeと幾つかの.txtファイルが得られる。
端末からこの実行ファイルを実行すると
$ ./mprime Welcome to GIMPS, the hunt for huge prime numbers. You will be asked a few simple questions and then the program will contact the primenet server to get some work for your computer. Good luck! Attention OVERCLOCKERS!! Mprime has gained a reputation as a useful stress testing tool for people that enjoy pushing their hardware to the limit. You are more than welcome to use this software for that purpose. Please select the stress testing choice below to avoid interfering with the PrimeNet server. Use the Options/Torture Test menu choice for your stress tests. Also, read the stress.txt file. If you want to both join GIMPS and run stress tests, then Join GIMPS and answer the questions. After the server gets some work for you, stop mprime, then run mprime -m and choose Options/Torture Test. Join Gimps? (Y=Yes, N=Just stress testing) (Y):
と表示される。ここではメルセンヌ素数探索のGIMPSプロジェクトに参加するかどうかの質問があるが、単に負荷テストツールとして使うのなら「N」を入力する。プロジェクトに参加する場合は追加の手順が必要だが、ここでは扱わない。
Join Gimps? (Y=Yes, N=Just stress testing) (Y): N
次に動作スレッド数が質問されるが、認識CPU数が自動検出され、そのままEnterを押すと次に進む(下の「torture」は拷問の意で「torture test」で厳しい負荷テストを示す)。
Number of torture test threads to run ([CPU数]):
テストの形態を選択できるが、通常は2種類の混合である「3」(既定の選択)でよい。
Choose a type of torture test to run. 1 = Small FFTs (maximum FPU stress, data fits in L2 cache, RAM not tested much). 2 = In-place large FFTs (maximum heat and power consumption, some RAM tested). 3 = Blend (tests some of everything, lots of RAM tested). 11,12,13 = Allows you to fine tune the above three selections. Blend is the default. NOTE: if you fail the blend test, but can pass the small FFT test then your problem is likely bad memory or a bad memory controller. Type of torture test to run (3):
これでEnterを押すとテストが始まり、メッセージが表示されていく。
Accept the answers above? (Y):
その後テストを止めたいときにはCtrl+Cを押し、表示されるメニューから「Test/Exit」の番号(下の場合は「5」)を選択する。
Main Menu 1. Test/Primenet 2. Test/Worker threads 3. Test/Status 4. Test/Continue 5. Test/Exit 6. Advanced/Test 7. Advanced/Time 8. Advanced/P-1 9. Advanced/ECM 10. Advanced/Manual Communication 11. Advanced/Unreserve Exponent 12. Advanced/Quit Gimps 13. Options/CPU 14. Options/Preferences 15. Options/Torture Test 16. Options/Benchmark 17. Help/About 18. Help/About PrimeNet Server Your choice: 5
次回起動時からは最初にこのメニューが出るので「Options/Torture Test」の番号(上の場合は「15」)を選択してスレッド数の入力から進めていくとテストを行える。
ccacheを用いたビルドの繰り返しによる負荷テスト
ccache(関連記事)での2回目以降のビルドでは多くのファイル読み書きを伴ってシステムに高い負荷をかけることができ、並列のビルドでccacheを用いると良い負荷テストになる。
具体的な手順の例としては、カーネルのソースツリーを一度ccache付きで一通りビルドしてそれを「make clean」し、その後ccacheによる高速なビルドを実行する。
(キャッシュするための1度目のビルド) [linux-[バージョン]]$ make HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc -j [スレッド数] (オブジェクトファイルなどを消す) [linux-[バージョン]]$ make HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc clean (最初の負荷テスト) [linux-[バージョン]]$ make HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc -j [スレッド数] (次の負荷テストのために消す) [linux-[バージョン]]$ make HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc clean (以降繰り返し...) [linux-[バージョン]]$ make HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc -j [スレッド数] [linux-[バージョン]]$ make HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc clean
もちろん、ビルドとcleanのまとまりをループにして自動的に反復処理することもできる。
その他の負荷テスト
ロスレスのコーデックを用いたエンコード処理やファイルの圧縮などを行ってから元のデータと同じものが得られるかを確認するなど、他にも色々な形で負荷テストを行うことができるが、ここでは具体的な手順については扱わない。
関連記事:
- ccacheで再コンパイル処理を高速化
- Linuxカーネル(2.6系)のビルドの流れ
- k10railgunによるK10/K10.5世代のAMD製CPUの電圧下げに関するメモ(バージョン0.801.8a時点・ページ1/3)
- k10railgunによるK10/K10.5世代のAMD製CPUの電圧下げに関するメモ(バージョン0.801.8a時点・ページ2/3)
使用したバージョン:
- k10railgun 0.801.8a
- GIMPS(mprime) 26.5
関連URL: