デュアルコアAtom330を使ってみる(D945GCLF2)

ずいぶんとご無沙汰してましたが、あまり間が空くのもよろしくないので、少し仕事から離れたところで・・。

さて、1週間ほど前から、近所のソフマップ天王寺店の店頭にて、D945GCLF2というデュアルコアAtomを搭載したマザーが売られており、面白そうだったので買ってみました。
Atomには以前から興味があったものの、動作が少しもっさりしてるとのことで、1代前のD945GCLF(Atom230搭載)は敬遠してました。ただ、D945GCLF2では、デュアルコアのAtom330を搭載して、HTにも対応とのことで、HT有効時には4CPU分として利用できることもあり、悪くなさそうです。
また、SSDの32GBが1万円を切っており、せっかくなので両方試してみることにしました。

ケースをちょっとだけ良い物にしたこともあり、一番高かったのはケースでしたが、それでも5万円程度ですべて収まりました。ケースをケチって、SSDを抜いて、怪しげなメモリを利用すれば、3万円以下でも組めそうな勢いなので、コストパフォーマンス的には抜群です。 で、スペックと価格は以下のとおり。
種類 型番 スペック 価格
マザーボード D945GCLF2 Atom 330
i945GC Chipset
1000BaseT(Realtek RTL8111)
\10,980
SSDディスク CSSD-SM32NP 32GB MLC \9,980
ハードディスク WD10EACS 1TB 16MBキャッシュ 7200rpm? \10,990
メモリー Castor LoDDR2-2GB-800 DDR2 2GB PC6400 \3,980
ケース

\13,380
SATAケーブル

\675
SATA電源変換コネクタ

\390

\50,375


なお、マザーボード自体は、USBは当然のことながら、PCIバス1スロット、1000BaseT対応のLANポート、SATA×2ポート、PATA×1ポートなど、必要なものはすべて用意されています。また、PCIバスにLANカードを挿せば2ポートを実現できますし、RAIDカードも挿せますから、それなりに本格的なサーバとしても利用できそうです。

で、完成した写真は右のとおり。
5インチベイもあるケースでしたが、インストール時にDVDドライブをつけてみたものの、放熱が悪そうなこともあり、取り外してしまいました。
感想としては、発熱も音も少なく、なかなか良いハードウェアだと思います。

次にOSインストールですが、今回はCentOS5.2にしました。これがまた曲者で、今回はネットワークカードとSATAディスクのエラーの両方でかなりてこずりました。
まず、ネットワークカードですが、認識されるのに通信ができないという事態に見舞われます。原因は、実際に載っているチップがRTL8111なのに、r8169(RealtekのRTL8169)として認識されていることのようです。仕方がないので、とりあえず予備でおいてあったバッファローのLGY-PCI-GT(RTL8169搭載)を利用してeth1として認識させることに。
実際の運用開始時には、RealtekのウェブサイトからLinux版のドライバをダウンロードしインストールすることで解決します(後述)が、とりあえずインストールのときはeth1を利用しました。

そして、とりあえずネットワークカードはいったん問題を回避したものの、インストール後に、ディスク関係のエラーが山のように出るという問題に遭遇。そればかりか、延々とエラーが続き、マルチユーザモードでは立ち上がる気配すら見せません。
ためしに、SSDではなくハードディスクにインストールしてみると問題なかったのですが、せっかくSSDを買ったにもかかわらず使えないのも負けた気がするので、いろいろ調査した結果、カーネルのパラメータにirqpollを付加して急場しのぎができました。いや、これで数時間悩んでしまいました。

ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1.00: BMDMA stat 0x24
ata1.00: cmd 35/00:20:75:c9:03/00:02:00:00:00/e0 tag 0 dma 278528 out
         res 51/04:00:00:00:00/04:00:00:00:00/a0 Emask 0x1 (device error)
ata1.00: status: { DRDY ERR }
ata1.00: error: { ABRT }
ata1.00: configured for UDMA/133
ata1: EH complete
SCSI device sda: 62881792 512-byte hdwr sectors (32195 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write through
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1.00: BMDMA stat 0x24
ata1.00: cmd ca/00:18:9d:ce:03/00:00:00:00:00/e0 tag 0 dma 12288 out
         res 51/04:00:00:00:00/04:00:00:00:00/a0 Emask 0x1 (device error)
ata1.00: status: { DRDY ERR }
ata1.00: error: { ABRT }
ata1.00: configured for UDMA/133
ata1: EH complete
SCSI device sda: 62881792 512-byte hdwr sectors (32195 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write through
[drm] Initialized drm 1.0.1 20051102
ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 233
[drm] Initialized i915 1.8.0 20060929 on minor 0
hda: cdrom_pc_intr: The drive appears confused (ireason = 0x01). Trying to recover by ending request.

とりあえず、以下のように/boot/grub/grub.confを修正

title CentOS (2.6.18-92.el5)
	root (hd0,0)
	kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/VolGroup01/LogVol00 rhgb quiet irqpoll ←ココ
	initrd /initrd-2.6.18-92.el5.img

なお、上で書いたとおり、ネットワークカードが認識されていないので、RTL8111用のドライバインストールが必要です。
ドライバは、Realtekのウェブサイトからダウンロードでき、私がダウンロードしたのは r8168-8.008.00.tar.bz2というものでした。
これを、どこかのディレクトリで展開し、readmeファイルにあるとおりにインストールすれば完了です。

# make clean modules
# make install
# depmod -a
# insmod ./src/r8168.ko
# lsmod | grep r8168
r8168                  36884  0 ← 表示されればOK
後は、/etc/modprobe.conf の eth0に対するaliasを変更すれば、eth0の利用準備ができます。
alias eth0 r8168 ← 通常にインストールすると r8169になってしまっているはず
この後で、eth1として追加で挿していたバッファーローのネットワークカードを抜き、無事eth0としてオンボードのNICが認識されました。
# ethtool -i eth0
driver: r8168
version: 8.008.00-NAPI
firmware-version:
bus-info: 0000:01:00.0

これですべて終わりです。

なお、デュアルコアでかつHT対応なので、/proc/cpuinfoでは4つのCPUが見えています。シングルスレッドでシングルプロセスの場合には、それほどパフォーマンスに差は出ないかもしれませんが、サーバソフトウェアの多くは対応していると思われるので、十分に力を使いきれるのではないでしょうか。
Atom330のcpuinfo - 20080928-atom-cpuinfo.txt
ちなみに、BogoMIPSは12772.97と出ました。


Total of 4 processors activated (12772.97 BogoMIPS).

ディスクI/Oのほうは、SSDとHDDのパフォーマンスの差がなく、少々残念な結果になりました。

# hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads:  190 MB in  3.03 seconds =  62.72 MB/sec
# hdparm -t /dev/sdb
/dev/sdb:
 Timing buffered disk reads:  190 MB in  3.00 seconds =  63.32 MB/sec
まだ、DMAモードがOffなこと、32bit I/OがOffなことなど、チューニングの余地が多分にありそうです。 とりあえず、hdparmの -cオプションと-dオプションを利用してパラメータ変更を行おうとしましたが、エラーとなってしまったので、kernelのバージョンアップなど検討してみます。(それとも、そもそもチップがサポートしてないのでしょうか・・・そんなことはないと思うけど)
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Inappropriate ioctl for device
 setting 32-bit IO_support flag to 1
 HDIO_SET_32BIT failed: Invalid argument
UNIXBenchの結果は、235.7とまずまずでした。
                     INDEX VALUES
TEST                                        BASELINE     RESULT      INDEX
Arithmetic Test (type = double)              29820.0   159570.8       53.5
Dhrystone 2 using register variables        116700.0  2834237.1      242.9
Execl Throughput                                43.0     1245.6      289.7
File Copy 1024 bufsize 2000 maxblocks         3960.0   102713.0      259.4
File Copy 256 bufsize 500 maxblocks           1655.0    28882.0      174.5
File Copy 4096 bufsize 8000 maxblocks         5800.0   299036.0      515.6
Pipe Throughput                              12440.0   187493.0      150.7
Pipe-based Context Switching                  4000.0    45235.4      113.1
Process Creation                               126.0     5403.1      428.8
Shell Scripts (8 concurrent)                     6.0      538.7      897.8
System Call Overhead                         15000.0   324813.4      216.5
                                                                 =========
     FINAL SCORE                                                     235.7
UNIXBenchの結果

とりあえず、ディスク周りではまだ完璧で無い感があるものの、実際に利用した感想としては、予想以上にパフォーマンスが高いと思います。X上でFirefoxを利用していますが、ストレスは全く感じません。
また、バックグラウンドで地デジ録画をしながらでも、別の作業が重くなるということもなく、今のところは全く不満ありません。

トータルで3万円程度で自宅サーバ、ぜひ皆さんもいかがでしょうか。

コメント(2)

masa23

ホームファイルサーバとかによさそうですね。
Atom230のD945GCLFは100MのNICなんでその辺がネックでしたが、D945GCLF2はなかなかよさそうですね。
Atom330がIntel-VT対応してたら小さなXen鯖とか面白いかも知れないんですが。

データシート見てないから対応してるかどうか知りませんが

あぼーとん

Atom330で鯖を立てようとしていたので、非常に参考になりました。