distributed.netな日々:2012年4月

2012年4月1日:64bitクライアントの優位性

Windows 7(64bit)マシンを使用できる機会がありましたので、dnetcのベンチマークをとってみました。いい機会ですので32bit版と64bit版の両方のクライアントで試してみました。ちなみにCPUはCore i7 2630QM(2.0GHz)です。Sandy Bridge世代ですのでターボブーストが効くので、実際のクロックがいくらになったかはよくわかりませんけれど。

で、ベンチマークの結果ですが以下の通りです。

・32bit版クライアント

distributed.net client for Win32 Copyright 1997-2011, distributed.net
Please visit http://www.distributed.net/ for up-to-date contest information.
Start the client with '-help' for a list of valid command line options.
dnetc v2.9110-519-CTR-11041423 for Win32 (WindowsNT 6.1).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/
[Mar 28 13:46:49 UTC] Automatic processor type detection found
                      an Intel Core i3/i5/i7-2xxx processor.
[Mar 28 13:46:49 UTC] OGR-NG: using core #3 (cj-asm-sse2).
[Mar 28 13:47:08 UTC] OGR-NG: Benchmark for core #3 (cj-asm-sse2)
                      0.00:00:16.20 [23,787,781 nodes/sec]
[Mar 28 13:47:08 UTC] RC5-72: using core #6 (GO 2-pipe).
[Mar 28 13:47:28 UTC] RC5-72: Benchmark for core #6 (GO 2-pipe)
                      0.00:00:16.38 [6,280,019 keys/sec]
distributed.net client for Win64 Copyright 1997-2011, distributed.net
Please visit http://www.distributed.net/ for up-to-date contest information.
Start the client with '-help' for a list of valid command line options.

・64bit版クライアント

dnetc v2.9110-519-CTR-11041423 for Win64 (WindowsNT 6.1).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/
Using email address (distributed.net ID) 'aoyagi@kyf.biglobe.ne.jp'
[Mar 28 13:22:51 UTC] Automatic processor type detection found
                      an Intel Core i3/i5/i7-2xxx processor.
[Mar 28 13:22:51 UTC] OGR-NG: using core #2 (cj-asm-sse2).
[Mar 28 13:23:09 UTC] OGR-NG: Benchmark for core #2 (cj-asm-sse2)
                      0.00:00:16.30 [62,713,875 nodes/sec]
[Mar 28 13:23:09 UTC] RC5-72: using core #2 (GO 2-pipe c).
[Mar 28 13:23:28 UTC] RC5-72: Benchmark for core #2 (GO 2-pipe c)
                      0.00:00:16.23 [8,138,224 keys/sec]

凄いのは64bit版クライアントで、32bit版クライアントに対してRC5-72で1.3倍、OGR-NGでは実に2.6倍もの速度をたたき出しています。

これには少々驚いたので、手元のPCでもVMwareを使ってFreeBSD(amd64)環境を作ってベンチマークをとってみました。こちらのCPUはAthlon 64 X2 5600+(2.9GHz)です。

・32bit版クライアント

distributed.net client for FreeBSD Copyright 1997-2011, distributed.net
Please visit http://www.distributed.net/ for up-to-date contest information.
Start the client with '-help' for a list of valid command line options.
dnetc v2.9110-519-CTR-11041814 for FreeBSD (FreeBSD 9.0-RELEASE).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/
[Apr 01 06:54:37 UTC] Automatic processor type detection found
                      an AMD Athlon 64 X2 Dual Core processor.
[Apr 01 06:54:37 UTC] OGR-NG: using core #5 (cj-asm-sse-k8).
[Apr 01 06:54:56 UTC] OGR-NG: Benchmark for core #5 (cj-asm-sse-k8)
                      0.00:00:16.26 [25,411,833 nodes/sec]
[Apr 01 06:54:56 UTC] RC5-72: using core #11 (GO 2-pipe b).
[Apr 01 06:55:15 UTC] RC5-72: Benchmark for core #11 (GO 2-pipe b)
                      0.00:00:16.91 [12,671,907 keys/sec]

・64bit版クライアント

distributed.net client for FreeBSD Copyright 1997-2011, distributed.net
Please visit http://www.distributed.net/ for up-to-date contest information.
Start the client with '-help' for a list of valid command line options.
dnetc v2.9110-519-CTR-11040104 for FreeBSD (FreeBSD 9.0-RELEASE).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/
[Apr 01 06:55:22 UTC] Automatic processor type detection found
                      an AMD Athlon 64 X2 Dual Core processor.
[Apr 01 06:55:22 UTC] OGR-NG: using core #1 (cj-asm-generic).
[Apr 01 06:55:43 UTC] OGR-NG: Benchmark for core #1 (cj-asm-generic)
                      0.00:00:16.98 [35,543,189 nodes/sec]
[Apr 01 06:55:43 UTC] RC5-72: using core #3 (GO 2-pipe d).
[Apr 01 06:56:02 UTC] RC5-72: Benchmark for core #3 (GO 2-pipe d)
                      0.00:00:16.12 [14,203,913 keys/sec]

Core i7ほどではありませんが、こちらも64bit版クライアントが有意に速くなってますね。考えるまでもないことですが、64bit環境では64bit版クライアントを使用したほうが有利になるようです。いやぁ、それにしてもこんなに速くなっているとは。手元のPCは今でもWindows XP(32bit)を使用しているのですが、この結果を受けてWindows 7(64bit)に乗り換えたくなりました(^^)。

(追記)

誤解がありました。詳しくは「Thinkpad X61覚醒!」をご覧ください。

2012年4月2日:【OGR-27】「ちびすた、でかすた」2012年第1四半期

あんまりしょっちゅう集計していたらしんどいので、四半期毎に「ちびすた、でかすた」の集計をしてみることにします。

ということで2012年の第1四半期が終わったので、ここまでの集計。これまでの総計で1118個のスタブを処理しております。前回の集計時(2012年1月30日時点)では454個でしたので、この2ヶ月ほどの間に664個のスタブを処理した事になります。

全1118個のスタブのなかで最大、最小はそれぞれ以下のものでした。

[Jan 26 11:52:06 UTC] OGR-NG #a: 27/5-44-51-8-2-1* [2,897,329,394 nodes]
[Jan 08 17:40:10 UTC] OGR-NG #b: 27/5-7-19-11-18-34* [1,017,073,635,802 nodes]

ということで、ちびすた、でかすたの記録更新はなりませんでしたね。うーん、それなりの個数を処理していると思うのに、やはり"引き"が大事なんですかねぇ。

(2012/7/1追記)

集計スクリプトにバグがありまして、上記の値それぞれに誤りがありました。正しくは処理量が4586で、ちびすたは

[Feb 25 22:17:45 UTC] OGR-NG #b: 27/6-55-21-1-2-7 [781,433,733 nodes]

でした。でかすたはバグ修正したあとも変わっておりません。

2012年4月8日:【OGR-27】OGR-27が50%を超えました

staff blogsにOGR-27 50% completionというエントリーが上がっていました。OGR-27が50%の折り返し点に到達しました。実際には、もう何日も前に越えているんですけどね(^^)。

OGR-27 / Overall Project Statsによりますと、プロジェクト開始から1,138日で51.03%まで進行しています。単純計算であと3年ほどで終了することになりますね。実際、OGR-27 / Stubspace Statusの終了予測日はいずれも2015年となっています。

ということで、順位を上げるならそろそろラストチャンスかもしれません。私も先日追加したThinkpad X61に加えて、更に戦力追加を検討してみたいと思います。

2012年4月8日:Thinkpad X61投入

新戦力としてThinkpad X61を投入しました。こんな古い機種が新品のわけがありませんから、もちろん中古で購入です(^^)。

新戦力の投入にあたっては、以下のような点を考えました。

まずデスクトップは消費電力が大きすぎて、電力当りのパフォーマンスが悪すぎるということです。節電が叫ばれている昨今において、この点は大きく考慮する必要があるでしょう。もちろん、家計における電気代というのも大きな要因です。ということでノートPCを選択することにしました。

次に、CPUです。大雑把に言って、AMDのCPUはRC5の処理が得意で、IntelのCPUはOGRの処理が得意です。現在私が参戦しているのはOGR-27ですから、IntelのCPUを選択するのがよいということになります。個人的にはAMDの方が好きなんですけどね。

ではIntelのCPUなら何でもいいかというとそういうわけではありません。64bitクライアントの優位性でも書きましたとおり、64bitクライアントの優位性はゆるぎないものです。今さら64bit非対応のCPUを選択するというのはありえません。ということでAMD64(IntelだからEM64Tですが)対応のCPUになります。

コアは多いに越したことはありません。といっても多くなるとそれだけ価格も高くなるので、ほどほどのところで抑える必要がありますが。

というようなことを考慮に入れたうえで選定したのが、Core2Duoを搭載したThinkpadです。なんでThinkpadかというと、私がThinkpad教徒だからというだけの理由です(^^)。ま、Lenovoに移って以降は信仰心もだいぶ揺らいできてはいるのですが、それでも他のノートPCよりはまだ信頼しているかなぁ、個人的には。

条件に合う中古Thinkpadを価格.comで探していたところ、なかなかいい物件がみつかりました。それがThinkPad X61 7675 A56です。CPUクロックが2.4GHzと高いのが、なかなかよいではないですか。

そして、このThinkPad X61 7675 A56が中古で13,650円で売っていたのです!これは安い!

もちろん安いのには理由があって、いくつか問題があります。まずバッテリーがありません。しかし、dnetcを動かすのには問題ありません!

筐体や画面の何箇所かにキズやカケがあります。しかし、dnetcを動かすのには問題ありません!

キートップの印刷がいくつかかすれています。しかし、dnetcを動かすのには問題ありません!

ちょっと気になるのはPC-DoctorでFailedが出るということなのですが、これについては支障ないことを祈るしかありません。

ということで善(?)は急げで早速注文しました。ちなみに購入したのはThinkPad 専門店 Be-Stockというところです。Thinkpadの中古のみを扱っているという、なんとも奇特(?)なお店です。それで経営が成り立つというのも凄い話ですね。Thinkpadがそれだけ市場性があるということなのか。成り立つのであれば、特化するのは店の売りになりますから、いいことだと思います。この店は今回初めて知りましたが、対応も問題ありませんでしたので、今後も利用していきたいと思います。

代金を振り込んで発送されて、無事に到着しました。おおー、Thinkpadは何台も買ったけど、Lenovoになってからは初めてだな。中古だけど。ざっくりと外観チェックをした限りは使用上に特に問題は無し。PC Doctorも実行してみたけど、エラーは出なかった。あれー?まあ出ないならそれでいいんだけど。

初期チェックで問題ないなら、いよいよdnetcの稼動です。64bitクライアントを動かす都合上、FreeBSD(amd64)にインストールします。でもってベンチマークを取ってみたところ以下のようになりました。

・32bit版クライアント

distributed.net client for FreeBSD Copyright 1997-2011, distributed.net
Please visit http://www.distributed.net/ for up-to-date contest information.
Start the client with '-help' for a list of valid command line options.
dnetc v2.9110-519-CTR-11041814 for FreeBSD (FreeBSD 9.0-RELEASE).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/
[Apr 06 04:11:24 UTC] Automatic processor type detection found
                      an Intel Core 2/Extreme/Xeon processor.
[Apr 06 04:11:24 UTC] OGR-NG: using core #6 (cj-asm-sse4.1).
[Apr 06 04:11:43 UTC] OGR-NG: Benchmark for core #6 (cj-asm-sse4.1)
                      0.00:00:16.42 [19,836,519 nodes/sec]
[Apr 06 04:11:43 UTC] RC5-72: using core #11 (GO 2-pipe b).
[Apr 06 04:12:03 UTC] RC5-72: Benchmark for core #11 (GO 2-pipe b)
                      0.00:00:17.04 [4,518,369 keys/sec]

・64bit版クライアント

distributed.net client for FreeBSD Copyright 1997-2011, distributed.net
Please visit http://www.distributed.net/ for up-to-date contest information.
Start the client with '-help' for a list of valid command line options.
dnetc v2.9110-519-CTR-11040104 for FreeBSD (FreeBSD 9.0-RELEASE).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/
[Apr 06 04:12:12 UTC] Automatic processor type detection found
                      an Intel Core 2/Extreme/Xeon processor.
[Apr 06 04:12:12 UTC] OGR-NG: using core #2 (cj-asm-sse2).
[Apr 06 04:12:31 UTC] OGR-NG: Benchmark for core #2 (cj-asm-sse2)
                      0.00:00:16.64 [24,918,631 nodes/sec]
[Apr 06 04:12:31 UTC] RC5-72: using core #3 (GO 2-pipe d).
[Apr 06 04:12:50 UTC] RC5-72: Benchmark for core #3 (GO 2-pipe d)
                      0.00:00:16.33 [4,610,852 keys/sec]

あれ、思ったより速くない。なんでや。ていうか、Core2Duoの64bit処理がそんなに速くないのか。むーん。考えてみればCore2Duoが使われていた頃って、まだまだWindows XPの独壇場で64bitコードなんて使われてもいなかったわけだよね。Intelとしても、使われることのない64bit処理にトランジスタを割けないわけで、処理が遅くても仕方がないか。

ということで、思ったほどの処理速度は出なかったのですが、それでもdnetcフル稼働で消費電力20W程度と、省電力には多いに貢献してくれています。なので、まあこれはこれでいいかなぁ、と。

(追記)

誤解がありました。詳しくは「Thinkpad X61覚醒!」をご覧ください。

2012年4月13日:【RC5-72】1000万ブロック到達!

本日、Final Tear ZはRC5-72プロジェクトにおいて1000万ブロックに到達いたしました!

いやー、すごい。しかし何が凄いって1000万ブロックといったところで、RC5-72の全体のプロジェクトから見たら芥子粒ほどの大きさでしかないっていうのが凄い。

ともあれ、記念のブロックに到達してめでたいのであります。チームメートの皆さん、ご協力ありがとうございます。

2012年4月15日:【OGR-27】TeXintosh Japan (Kaisei Physics Club)さんを抜きました

正確には昨日なんですが、OGR-27でTeXintosh Japan (Kaisei Physics Club)さんを抜きました。2月22日にターゲット設定してから約2ヶ月。結構かかりましたが、100万Gnodes差があったことを考えると、意外と早く抜けたなという気もします。

さて次の上位の日本のチームですが、見落としがなければTeam OS/2 Japanさんということになりますが、多分これは抜けません(^^)。Team OS/2 Japanさんは現時点で199位で順位差は17位、Gnodesの差はは130万ほどですが、どうやらかなりブーストされているようなので、あちらの方が駆け上がっていくものと思われます。

ということで、我々Final Tear Zとしては、しばらくはのんびりわが道を行くことになるでしょうか。

2012年4月21日:【FreeBSD】ULEスケジューラの問題

前述の通り、Thinkpad X61にはFreeBSD(amd64)をインストールして使用しています。バージョンは9.0RELEASEです。で、このFreeBSDなんですが、dnetcを常時稼動しているとどうも挙動が変なんです。具体的にはスケジューラが思い通りに動いてくれなくて、フロントの作業が思うようにはかどらなかったりします。

もうちょっと詳しく説明しますと、dnetcは通常バックグラウンドプロセスとして24時間稼動しています。そのままだと、他のプロセスの動作が重くなってしまいますのでdnetcは自分で自分のプロセス優先度を最低にします。これはWindows版などでも同じです。FreeBSDをはじめとするUNIXではこの優先度をnice値といい、+20から-20までの値をとります。デフォルトは0で、+20がもっとも優先度が低く、-20がもっとも優先度が高くなります。dnetcは自分で自分のnice値を+20にするわけですね。

ということになっていますので、dnetcを裏で動かしながらでも、表では通常の作業が快適にできるということになっているのですが、なぜかFreeBSD 9.0RELEASEではこれができない。dnetcを動かしながらだと表の作業が重くなったり、最悪進まなくなったりします。

これはどうしたことだろうと、色々ぐぐっていると「FreeBSD 7.2 ののろいを解く!! の巻」(http://www.bsddiary.net/d/20091028.html)という記事を見つけました。7.2RELEASEでの話ですが、9.0RELEASEでもデフォルトのスケジューラはULEですので、同様に適用できる話ではないかと思います。

高負荷時に優れた性能を発揮するというULEスケジューラにそのような問題があるというのも半信半疑でしたが、ためしに4BSDスケジューラに変更してカーネルを作り直してみましたところ、顕著に問題が解決しました。ちなみにこの問題はdnetcに限った話ではありません。以下のような単純なプログラムでも再現できます。

# cat a.c
int main()
{
        while( 1 );
}
# cc a.c -o a.out
# nice +20 ./a.out &
[1] 58390
# nice +20 ./a.out &
[2] 58391
# nice +0 ./a.out &
[3] 58392
# sleep 60 ; top -d 1

nice値+20と+0のプロセスを動作させて、+0のプロセスが優先されているかどうかを確認します。+20を2回実行しているのはCore2Duoでコアが2個あるからです。

4BSDスケジューラで実行した結果は以下の通り。

  PID USERNAME   THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
58392 root         1  72    0  3916K   636K RUN     0   1:03 99.26% a.out
58390 root         1  81   20  3916K   636K RUN     1   0:38 49.64% a.out
58391 root         1  81   20  3916K   636K CPU1    1   0:34 49.42% a.out

nice+0のプロセスが優先されていることが確認され、期待通りです。

一方、ULEスケジューラで実行した結果は以下の通り。

  PID USERNAME   THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
 1453 root         1 121   20  3916K   788K RUN     0   0:51 98.29% a.out
 1454 root         1  96    0  3916K   788K RUN     1   0:55 82.08% a.out
 1452 root         1 101   20  3916K   788K CPU1    1   0:30 32.47% a.out

なぜかnice+20のプロセスがnice+0のプロセスより優先されてしまっています。このテストでは単純にCPUしか使わないプログラムで試しましたが、表のプロセスをmakeなどI/O処理を伴うものだと、I/O待ちのスケジューリングも組み合わさってmakeがほとんど進まないという現象も起きたりします。

新しいULEスケジューラに問題があるというのはいまいち納得できないのですが、もしかしたらまだ枯れきっていないということなのかもしれません。ULEスケジューラの将来のバージョンでは改善されることを期待して、とりあえずは4BSDスケジューラを使うことにします。

2012年4月21日:Thinkpad X61覚醒!

Thinkpad X61が真の力に目覚めました!

って言っても、その力を封印していたのは私なんですけれど(^^)。

えーと、どういうことかと言うと「Thinkpad X61投入」で報告したベンチマークが間違っていたんですね。いや、間違っていたというか真の力ではなかったというか。

64bitOSであるFreeBSD(amd64)をインストールしたと書きましたが、実はこの時点ではこれは正確ではなく、Windows XP(32bit)にVMware playerをインストールしてその上にFreeBSD(amd64)をインストールしていたのです。なんでこんなややこしいことをしたかといいますと、それは初期不良があった場合の対応のため。初期不良が出たときに、OSが標準のWindows XPでないと店に対応してもらえない可能性が考えられます。それでなくても、不良検出をおこなうPC-DoctorはWindows XP上で動きますから、しばらくはWindows XPを消すわけにはいきません。でもすぐに64bitの性能が欲しいという事で、VMware playerを使用したのでした。この選択自体はそれほど間違っていなかったと思うのですが、その状態での性能を本来の性能と思い込んだのは間違いでした。まさかVMware playerによる仮想環境と本来の環境で64bit性能がこんなに違うとは。だってVMwareはコードはネイティブに動作させるからI/Oとかを含まない処理であればそれほど性能低下しないと思い込んでいたんですもん。

ともあれ、しばらく耐久試験をして初期不良の心配がなくなったのでWindows XPを消してFreeBSD(amd64)をインストールして64bit版のdnetcを動かしてみた結果が以下のものです。

distributed.net client for FreeBSD Copyright 1997-2011, distributed.net
Please visit http://www.distributed.net/ for up-to-date contest information.
Start the client with '-help' for a list of valid command line options.
dnetc v2.9110-519-CTR-11040104 for FreeBSD (FreeBSD 9.0-RELEASE).
Please provide the *entire* version descriptor when submitting bug reports.
The distributed.net bug report pages are at http://bugs.distributed.net/
Using email address (distributed.net ID) 'aoyagi@kyf.biglobe.ne.jp'
[Apr 21 00:18:35 UTC] Automatic processor type detection found
                      an Intel Core 2/Extreme/Xeon processor.
[Apr 21 00:18:35 UTC] OGR-NG: using core #2 (cj-asm-sse2).
[Apr 21 00:18:54 UTC] OGR-NG: Benchmark for core #2 (cj-asm-sse2)
                      0.00:00:16.13 [50,702,278 nodes/sec]
[Apr 21 00:18:54 UTC] RC5-72: using core #3 (GO 2-pipe d).
[Apr 21 00:19:22 UTC] RC5-72: Benchmark for core #3 (GO 2-pipe d)
                      0.00:00:20.85 [9,456,806 keys/sec]

Thinkpad X61投入」で報告したベンチマークに比べて、

とほぼ倍速になっています。まさかこんなに性能が違うなんて。ていうか、Core2Duoの64bit処理がそんなに速くないとか書いてしまって、インテルさんごめんなさい。私が悪かったです。

それにしても、こうなると「64bitクライアントの優位性」でのAthlon 64 X2 5600+(2.9GHz)の64bitの結果も疑わしいですね。AMDさんにもごめんなさい。

ということで教訓。64bitアプリは、きちんと64bit OSで動かしたほうが速い(こともある)。でした。

2012年4月27日:新戦力追加!

マグカップとコースター
マグカップとコースター

新しい戦力を追加しました!と言いましてもPCではありませんでして(^^)。マグカップとコースターであります(^^)。

マグカップが必要になったんで、どうせならということでdnetwareで販売しているマグカップにしようということで注文していたのでした。で、届いたのがこれです。

この戦力投入で解析能力もアップ!......するわきゃあないんですが(^^)。ともあれ、気持ち的には盛り上がってきますよね。

ということで、Let's cracking!! Moo!!