試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

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のまとまりをループにして自動的に反復処理することもできる。

その他の負荷テスト

ロスレスのコーデックを用いたエンコード処理やファイルの圧縮などを行ってから元のデータと同じものが得られるかを確認するなど、他にも色々な形で負荷テストを行うことができるが、ここでは具体的な手順については扱わない。

関連記事:

使用したバージョン:

  • k10railgun 0.801.8a
  • GIMPS(mprime) 26.5

関連URL: