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

  • 投稿日:
  • by
  • Category:

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

さて、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万円程度で自宅サーバ、ぜひ皆さんもいかがでしょうか。

会員メニューのセッションに関する指摘について

  • 投稿日:
  • by
  • Category:

先日、「Web屋のネタ帳」というブログから、「さくらインターネットの会員メニュー画面のセッション情報はログアウトしても1年たっても消えない件」という旨のトラックバックがありました。
それによると、「クッキーを保存しておくと、1年後でもログインできる」といった内容で、クッキーを保存する人なんておるんかいなと思いつつも、実際に保存していた人が居たことに、少し興味が惹かれました。
ただ、指摘されている内容については、実際と異なることも多く、当該ブログの管理者様にはコメントだけお送りしたのですが、特に返事の無いまま、飛び火をして憶測だけが流れ続けていることに少し憂慮しており、ここで解説させて頂くことにしました。

ちなみに、「考え」の部分は、私個人の考えですので、その点はお含みおきください。


まず初めに、当該ブログにおいて指摘されている点を以下の2点に要約します。

  • セッション管理をする際にはログアウト時にセッション破棄を行わなければならない

  • ログインからしばらくたった後(1年後)もそのまま利用できるのは、良くない

1点目は技術的な指摘であり、会員メニューがセッション管理を行っていたならば、当然ログアウト時にセッション破棄を行わなければならないというのは、書いているとおりです。この部分のみを切り取ってみれば、間違いありません。
しかし、会員メニューに当てはめてみると、これには重大な間違いがあります。
それは何かというと、会員メニューではセッション管理をしていないということです。なので、セッションを破棄するという動作がそもそもありません。
つまり、問題点その1と、問題点その2は、会員メニューには当てはまりませんので、ご安心ください。
20070424-browser.gif
2点目はポリシー的な指摘であり、考えが分かれるところです。
ただ、管理者の方が指摘されている、「ログインしてから1年以上もたった後に解約できるのは問題」という部分は間違っており、実際にはログイン後に一定時間が過ぎると、パスワードの再確認がなされます。また、住所変更や、クレジットカードの表示・変更の場合にも、同様の処理が行われます。
すなわち、問題点その3についても、会員メニューには当てはまりません。
(後ほど、管理者によって修正されています。ありがとうございます)
もちろん、サーバ設定については一定期間経過後にできないようにすればとの意見もあると思いますが、逆に不便になる点もあり「考えが分かれる」と表記させて頂きました。

ところで、セッション管理というキーワードが出てきましたので、ユーザ認証が必要なサイトに関して、すこし解説をさせていただく事にします。
まず、ユーザ認証が必要なサイトに関して、以下に代表的な3種類をあげさせていただきました。


  1. セッションで管理する

  2. ユーザ名とパスワードはログインを行う場合のみデータベースへ確認し、その後はサーバとブラウザがセッションIDと呼ばれるランダムに生成された文字列を共有して、認証行います。
    比較的多く利用されている手法で、今回ご指摘頂いた管理者の方の意見も、これをベースとされています。
    たとえるならば、カード表面にランダムに振られた番号の書かれた印鑑登録カードと同じようなものです。最初に免許書等で本人確認を行い、それ以降はカード番号の記された印鑑登録カードを持っていくだけで印鑑登録証明書が発行されるのに似てるでしょう。

  3. その都度ユーザ名とパスワードを送る

  4. その都度、ユーザ名とパスワードをサーバに送付し、毎回データベースに確認します。これは古典的な方法で、ブラウザのダイアログボックスにユーザ名とパスワードを入力する手法が多く見られます。
    たとえるならば、キャッシュカードのようなもので、毎回暗証番号を入れることに似ています。

  5. ハッシュを利用する

  6. ユーザ名とパスワードをログイン時のみに行うのはセッション管理に良く似ていますが、サーバに何らかのIDを残すことはしません。手法としては、サーバ側でサーバ暗号とユーザ名をハッシュ化しクライアントに知らせ、アクセスする際にはハッシュとユーザ名をサーバに通知します。サーバ側はサーバ暗号とユーザ名を再度ハッシュ化し、通知されたハッシュ値と比較して認証を行います。
    その都度ユーザ名とパスワードを送る仕組みと異なり、パスワードは最初のみに限定して安全性を高めると共に、毎回データベースに確認する手間を省けます。

以上が、それぞれの解説です。
他にも、さまざまな方法がありますが、今回は3つだけの紹介とさせていただきます。
以下が、それぞれの特徴などをまとめた表です。

セッション管理 都度送信 ハッシュの利用
特徴 セッション内でさまざまなデータを扱うことができ、認証情報の破棄も簡単にできる。 古典的な方法であり、動作が分かりやすい。 サーバで管理すべき情報が無く、サーバを分離しやすい。また、認証の有効期間をプログラム側で設定できる。
不便な点 サーバ内でセッション情報を管理しなければならず、サーバを分離するのも手間がかかる。 毎回パスワードを交換しなければならず、且つデータベースへの確認も必要となる。 認証の時間管理を適切に行わねばならず、プログラムが煩雑になる。
危険な点 サーバのセッション情報が漏れると、全てのセッションが乗っ取られる パスワードを毎回送信するため、漏洩の確率があがる 暗号やハッシュ値の適切な管理を行わないと、いつまでも認証が出来たり、勝手に認証情報を偽造されることがある

なお、詳しく書くことはできませんが、会員メニューの認証は3番目の「ハッシュを利用する」に近いものを採用しています。その為、セッション管理が無く、当該ブログで指摘しているようなセッション削除に関する問題は理論上発生しないということは、上記のとおりです。
この仕組みを採用した背景としては、会員メニューのページ毎に有効期限を指定したいということと、実際のサーバは複数に分かれておりセッションの管理が煩雑になることとの2点からです。このおかげで、クレジットカードは高頻度に、サービス一覧は低頻度にパスワードを再確認する仕組みを構築できています。さらに、会員メニュー、コントロールパネル、オンラインサインアップ、DNSゾーン編集、ドメインコンパネ等、さまざまなシステムへシングルサインオン可能な環境が構築できました。

ちなみに、この仕組みの危険な点として記した暗号の漏洩や詐称を防ぐべく、公開鍵暗号を利用した暗号化での実装を行っており、認証サーバ以外、会員メニューやレンタルサーバコントロールパネルを含めて、全てのサーバにおいて秘密鍵が含まれておらず、それらのサーバでクッキーの偽造はできません。
さらに、クッキーの中には会員IDと発行日時、キーのインデックス以外の情報はほとんど入っておらず、当然のことながらパスワードなどの機密情報は全くありません。

ところで、高木浩光氏の指摘はとても的を射ており感心する限りですが、キーの有効性についてはキーのインデックス情報により対処ができるようになっており、古いキーの失効をさせることも可能です。
すなわち、時間情報とキーインデックスを公開鍵暗号によって詐称できない裏づけの元にクッキーを生成し、失効したキーインデックスのシリアル番号を登録しておくことにより、古いクッキーの無力化が図れるようになっています。

なお、唯一当社で考えなければならないこととしては、ページ毎の有効期限を再考することかと思っています。
例えば、レンタルサーバのコントロールパネルには、かなりの長時間にわたってクッキーの失効を抑制していますが、1ヶ月毎にパスワード再確認の必要性があるのかもしれません。
このあたりについては、皆様のお知恵をお借りしつつ、ポリシーの再検討をさせて頂きたく思っております。

まとめ


  1. 認証にセッション管理は利用しておらず、セッションを破棄する仕組みはそもそも存在しない

  2. クッキー(SID)の有効期間はコントロールできる仕組みであり、ページ毎に個別の期限を設けている

  3. クッキー(SID)を選択的に無効化できる仕組みがサーバ側に備わっている(失効情報)

  4. クッキー(SID)には会員IDとキーインデックス(シリアル)、発行時間などが含まれており、詐称防止のために公開鍵暗号を用いている

  5. 現在の有効期限を今より短くしないといけないページがあるのかもしれない(コンパネ等)

  6. ログアウトを押しつつクッキーを保存する人は通常はおらず、居たとしても前述のように有効期限管理で代用可能(クッキーを破棄するログアウト方法は一般的)


技術的にかなり複雑なシステムで、ウェブプログラミングの技術が相当に深い方でないと、この仕組みに問題ないことがわかっていただけないのは事実で、頭の良い方がうまく補足していただけると幸いです。
結局、仕組みをどのようにしても(セッション形式を用いても)、1年以上クッキーを残してサーバにセッション等の情報を残す限り、認証状態の継続を行うことは可能であり、技術的な仕組みにはまったく問題無いわけですが、ポリシーは再考する場合もあるのではないかところで、まとめとさせていただきたいと思います。(26日一部修正)

以上、長文を最後までごらん頂き、ありがとうございました。
また、当該ブログの管理者様には深く感謝いたします。

今後とも、さくらインターネットのサービスをよろしくお願いします。

追記1 4/28
当該ブログの管理者様によって記事が追加されていました。
http://neta.ywcafe.net/000731.html
大変丁寧にご対応いただき、ありがとうございます。
ちなみに、「公開してくださってもかまいません」については、特に他意はなく(笑)、ほかの方にメールを送った際に『ブログで公開しても言いか』と返信されることがたまにあるので、書いただけでした。私的には、「セッションではないらしい」ということと「パスワード確認があるらしい」ということが、ほかのかたがたに伝われば、特に問題は無く、結局このエントリーもあるので、見解の発表はすでに達成できたと思っています。
なお、新しい記事で書かれていた有効期限は、たいへん有用かと思うので、実現できればいいなと思います。SIDに含まれるキー自体は1日で失効させて、利用者の方があらかじめ設定した期間に限ってパスワードなしでキーを更新していくなどの方法も取れるかもしれません。

インターネットウィーク

  • 投稿日:
  • by
  • Category:

私が担当したインターネットウィークでのチュートリアルも、無事終了しました。
少し消化不良気味でしたが、たくさんの方にお越し頂き、大変嬉しく思います。
関係する方々には大変ご協力を頂き、ありがとうござました。

MACを外付けハードディスクにする

  • 投稿日:
  • by
  • Category:

家には、MAC MINIとiBookあわせて2台のMACがあります。
そのMACの間でデータのやり取りを考えていたのですが、今回はLAN経由より高速なIEEE1394(FireWire)経由での接続を試してみました。
20050922-mac1.png
ちなみに、FireWire経由で接続するための方法は非常に簡単です。
まず2台のMACを用意し、IEEE1394のケーブルで接続します。この際、機種によって小型の6ピンの際と、大型の9ピンの場合がありますから間違えないように用意してください。
接続ができれば、外付けハードディスクとして認識させる事にします。外付けハードディスクとして認識させるには、キーボードの「T」キーを押しながら電源を入れ、画面にFireWireマークが出れば完了です。(外付けハードディスクとして認識されている間は、そのMACでいっさい作業はできません)
後は、他方のMACにおいてデスクトップ上にFireWireマーク付きのMacintosh HDが出てくるのを待つだけです。

肝心の転送速度ですが、ターミナル上で単純にデータ転送を行った結果、11062839 bytes/secと出ました。100Mbpsフルと同じくらいの速さなので、うちのしょぼい100M-HUBを介した接続とは雲泥の差です。
2台以上のMACをお持ちの方は、ぜひお試しあれ。

トラックバックスパムの防御

  • 投稿日:
  • by
  • Category:

最近トラックバックスパムが、以前にもまして迷惑しています。
そのため、トラックバックのスクリプト名を修正していました。

というのも、どこぞのサイトで、URL決めうちでスパムを送信しているらしいとのことで、スクリプト名を修正すれば大丈夫なんじゃないかなということで。

具体的な方法は以下をご覧ください。

オラクルメモ

  • 投稿日:
  • by
  • Category:

オラクルについてのメモ
最近、販売管理システムが遅いので、システム担当の協力を得ながらチューンナップなどしています。

その中で、いくつかをまとめました。

blogtimesのインストール

  • 投稿日:
  • by
  • Category:

お客様より blogtimes をインストールできないとのことでサポートに問い合わせがきていたらしく、技術が調べていたのですが、そんなに難しいのかなということで、自分でインストールを試みました。

ということで、さくらのレンタルサーバライトで利用するblogtimesです。

  1. ダウンロードとインストール

  2. http://nilesh.org/mt/blogtimes/ よりダウンロードします。
    私の場合は、ZIP版のアーカイブをダウンロードし、Windows端末にて展開して、FFFTPにてアップロードしました。 アップロード先は、/home/kunihirotanaka/www/mt/plugins でしたが、場合に応じてパスは変更が必要です。 ちなみに、さくらのレンタルサーバでは、標準で必要なモジュール等が入っており、特に変更の必要はありませんでした。

  3. テンプレートの編集

  4. Movabletype のテンプレートを編集します。
    私は、以下のように書きました。
    <MTBlogTimes width="150" height="20">
     <img src="<$MTBlogTimesFileURL$>" width="<$MTBlogTimesWidth$>"
      height="<$MTBlogTimesHeight$>"
      border="0" alt="B L O G T I M E S" title="B L O G T I M E S" />
    </MTBlogTimes>

  5. 再構築して完成

  6. あとは、再構築をする事により、画像が入ります。
    ※注意点
    • プラグインはCGIじゃないので、先頭行にスクリプトパスを書く必要はありません。
    • imgタグにおいて直接blogtimes.plへのパスを書いてはいけません。
      マクロ「$MTBlogTimesFileURL」を利用します。
    とりあえず、マニュアルどおりにやれば、さくらのレンタルサーバでは問題なくインストールができるようですので、参考にして下さい。

家でプログラミング

  • 投稿日:
  • by
  • Category:

ゴールデンウィークなのに、することなく家でプログラミング。
会社で使うプログラムの新調に大忙しです。

最近は、社内の開発力もだいぶ上がってきて、以前より信頼できるようになりましたが、
何も無いところからの開発はまだまだ未完。
頑張って引き継いでいかなければなりませんねぇ。

10Gb イーサーネット

  • 投稿日:
  • by
  • Category:

東京出張から帰ってきました。

で、今回はネットワークの話。

うちの会社では、先月からコア部に10Gbpsのイーサーネットを導入しているわけですが、
周辺部に関しても10Gへのアップグレードをすべく検討をしております。

現在利用しているFoundry NetIron400に加えて、先日導入したForce10、
検証中の Procket や HitachiのGR4000 それに NetIron40G等々、
多数の個性をもったルータたち。
今日も、とある代理店が見積もりを持って、アピールしていってくれましたが、
値段が値段だけに、簡単には決断できません。
機器選定も大変なものです。

ちなみに、現在うちの東京第三データセンター(池袋)からKDDI大手町ビルまでは、
キャリア冗長を採った上で、10Gbps×2本の構成になっています。
半年くらいは、このままでもつでしょうかね・・・。