5月 182009
 

僕は Core2Duo になった一代目の MacBook を持っていて、型版的には Apple MacBook 2GHz MA700J/A と、言うのかな。2006 年 11 月に発売されてすぐに飛びついて買って今まで使ってきた。最近動作がモッサリして来たので新しい MacBook 欲しいなぁ。とか思い、色々手を回したのだけど MacBook に投入できる予算が捻出できなかったので、バーツを購入してパワーアップすることにした。

まずはウェブで情報を入手し、購入すべきものを調べます。今回購入したのはこんな感じ。

・DDR2 SO-DIMM PC-533 2GByte * 2
・2.5 インチ HDD Hitachi HTS545025B9A300 250GByte

今までは DDR2 SO-DIMM PC-533 1GByte * 2 だったのが倍になり、けど OS 的には 3GByte までしか認識しないのは有名な話。menumeters を起動すると、実際に 3GByte しか認識されていないことが良く解ります;-)。

HDD は FUJITSU MHV2080BHPL 80GByte から Hitachi HTS545025B9A300 の 250GByte のやつに交換。単純計算で三倍の容量になりました。これで VMware Fusion 2.0 を利用してもディスクイメージは MacBook 内に置くことができます。

iPhoto と iTunes のデータは外付け HDD に置いておいたのだけど、160GByte のやつから 250GByte のやつに変更。Time Machine でガンガンバックアップから取れるようになります;-)。

後は HDD を交換したので MacOSX Leopard を再インストール。僕は今まで大文字小文字を区別する Journaled HFS+ を利用していたのだけど、このファイルシステムっててんで役に立たないと言うのを実感しているのであります。

例えば Adobe のアプリは大文字小文字を区別するファイルシステムにはインストールできない。Microsoft のリモートデスクトップは全部小文字でインストールするのでとんでもないディレクトリを勝手に作ってしまう。あげくの果てに Time Machine は大文字小文字を区別するファイルシステムから区別しないファイルシステムにはバックアップできない。と来ている・・。はぁ・・。と、言う感じだったので今回は大文字小文字を区別しない Journaled HFS+ をチョイスしたのでありました。

インストールは簡単に終わり、起動後は交換したパーツは特に問題なく動いております。

ちなみに、今回の改造のためにかかったお値段はメモリが 2,480yen * 2 HDD が 4,940yen。両方併せても 10,000yen かかってないんですねぇ。安いですねぇ;-)。

さてと。話はここで終わってしまったら面白くないので、BootCamp の話をしておきましょう。MacOSX Leopard では BootCamp が標準で利用できるので今回初めて使ってみました。VMware Fusion 2.0 を持ってはいるのですが、バーチャルマシンは遅いのでネーテブで Windows を起動してみたい。と言うのと BootCamp パーティションの Windows も VMware Fusion から起動できる。というので試してみることにしたのでありました。

BootCamp アプリを起動して Windows の領域を 32GB ほどを FAT32 で確保し Windows のメディアを突っ込んでブートするのですが、手元にある WindowsXP の CD-ROM は PS2 ではないのでブートしませんでした。なので Windows Server2003 Enterprise Edition のメディアがあったのでそれを突っ込んだら無事にブートしたので、これインストールするべ。と言うことになったのでありました;-)。

しかし、インストールが無事に終わった後が大変です。 VMware Fusion 側から BootCamp パーティションの Windows Server2003 は比較的容易に利用することができます。しかし、ブートドライブを BootCamp にしてブートし、Windows Server2003 が起動した後、Ctrl+Alt+Del キーを受け付けてくれないのでありました。なので何も出来ない状態・・orz。 WindowsXP なら自動ログオンもできるだろうけど、Windows Server2003 は無理だぁ・・。

手元にあった HHK Lite2 を接続して Ctrl+Alt+Del キーを押したら、おぉっ!! 無事にログオンは出来たので、ありました。良かった。

しかしっ!! 安心はまだできないのであります。 Windows で MacOSX Leopard の DVD を突っ込むとドライバのインストールをしてくれるのですが、 Windows Server2003 では自動的にドライバのインストールはできません。DVD の Drivers の中のを端からクリックしてインストールを進めていきます。

一番最初に簡単にインストールできるのは無線 LAN かもしれないです。Atheros のドライバをインストールすれば無線 LAN は利用可能になるので、DVD のドライバをインストールしても ! マークが付く場合にネットワークからインストールすれば良いでしょう。

無線 LAN が動いたので Windows update をしつつドライバを更新したらサウンドドライバだけ利用できないだけで後は一応動き出した。と、言う感じでしょうか。iSight は使うことは無いのでまぁ、ドーデも良いと言えば良いのですが;-)。

それにしても Apple 謹製の BootCamp 用のプログラムがインストールできないのは痛いかも・・。ブートドライブ切り替えユーティリテーなどがインストールされていないので、Windows をシャットダウンした後 Option キーを押しながらブートしないと MacOSX がブートできない状態となります。

とまぁ、Windows Server2003 についてはこんな感じでしょうか。

とは言いつつもう一個大きな問題が・・。BootCamp 側で Windows Server2003 のアクティベーションを行ったのですが、その後 VMware Fusion で起動したら、ハードウェアの変更が多すぎるので再度アクティベーションします。とメッセージが・・。今度、BootCamp 側でブートしたら再度出るんかなぁ・・?

とまぁ、メモリと HDD を交換したので OS を再インストールしたり Windows をインストールしてみたりと色々楽しんだ週末だったのでありました;-)。それにしても Windows Server2003 Enterprise Edition をデスクトップとして使うんかなぁ? 一応、ターミナルサーバとか IIS、 WindowsMedia サーバとかも起動しているけどさぁ;-)。

VMware Fusion には他に WindowsXP Windwos7 RC2 もインストールされているけど;-)。そー考えると僕もすっかりと Windows ユーザになったのか?;-P。

最後にですが、MacBook はコマンドラインから system_profiler と打つとバババと情報を表示してくれます。これみると Mac って好き放題最新の技術投入しているよなー。とか思います。

僕のは 2006 年 11 月に買ったハードウェアなのに BIOS は EFI を利用しているし、HDD は ICH7 に引っ張られて SATA-150 だけど、IDE ではなくちゃんと S-ATA な HDD を利用しているし、更に接続が AHCI を利用している。 Windows が動作する PC ではちょっと考えられないよなー。2006 年でこれくらいのスペックの PC 出したベンダあるかなぁ?とか思ってしまうわけです。ハードと OS を作っているメーカの強みなんでしょうねぇ。

5月 152009
 

HP の 1U サーバで ProLiant DL320 G5p と言うのが、今、手元に四台あるのだけど、こいつには現在、以下の OS がインストールされている。

・FreeBSD/amd64 6.4-RELEASE-p3
・FreeBSD/amd64 7.0-RELEASE-p9
・CentOS release 5.2 x86_64(後にバージョンアップして CentOS release 5.3 x86_64)
・Windows Server2003 EPE

でもって、このサーバの FreeBSD で見た場合のスペックはこんな感じ。

CPU: Intel(R) Xeon(R) CPU            3075  @ 2.66GHz (2660.01-MHz K8-class CPU)
Origin = "GenuineIntel"  Id = 0x6fb  Stepping = 11
Features=0xbfebfbff
Features2=0xe3fd
AMD Features=0x20000800
AMD Features2=0x1
Cores per package: 2
usable memory = 2132668416 (2033 MB)
avail memory  = 2058006528 (1962 MB)
ACPI APIC Table: 
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID:  0
cpu1 (AP): APIC ID:  1

 
今回は CPU のお話です。

今まで僕個人的には、これらのサーバ群は FreeBSD で利用していたので特には気にしていなかったことがあります。それは CPU クロック。FreeBSD の場合 powerd を動作させるといとも簡単に SpeedStep(正確には EIST・Enhanced Intel SpeedStep Technologyですね) が動き出すので sysctl で後は見るだけ。って感じだった。

FreeBSD で見た CPU クロック、今はこんな感じ。

dev.cpu.0.freq: 330
dev.cpu.0.freq_levels: 2647/-1 2316/-1 1985/-1 1654/-1 1323/-1 992/-1 661/-1 330/-1

 
でもって CeotOS でも SpeedStep 動かないかなぁ?とか思い格闘したのだけど、ダメみたいねぇ。
CeotOS 5.2 ではダメで 5.3 なら OK よ。ってのをみつけて yum upgrade して試したのだけど・・。

# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_conservative.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_ondemand.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_powersave.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_stats.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/freq_table.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/acpi-cpufreq.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/powernow-k8.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/speedstep-centrino.ko

 
関連しそうな全てのモジュールをロードしてみたけど FATAL: Module hoge not found. だそうです・・。Linux のこの辺りのこと、僕はあんまり良く解らないのだけどもね。

でもって cpufreq-selector と言うのは無いので cpufreq-info と言うのを実行してみたら以下の通り。

# cpufreq-info
cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
no or unknown cpufreq driver is active on this CPU
analyzing CPU 1:
no or unknown cpufreq driver is active on this CPU

 
なんか「Xeon には対応してねーんじゃねぇの?」とか思えて来た段階で Linux についてはしゅーりょー。だって動かないんだもの。ちなみにカーネルは 2.6.18-128.1.10.el5 の x86_64 です。CeontOS release 5.3。

続いて Windows Server2003 EPE エディション行ってみましょう。どうすれば WindowsServer で SpeedStep が有効になるんだ?とか思ったのですが、考えてみると、僕は普段から FreeBSD と AMD のプロセッサしか使ってないので Intel の Xeon なんざ今まで気にしたことも無かった。

で、ググってみたら以下の URL を発見。

http://www.intel.com/cd/channel/reseller/asmo-na/eng/203838.htm

コントロールパネルの電源管理で「ポータブル/ラップトップ」を選択すると SpeedStep が有効になるのかと思いきや全然ダメ。BIOS の設定を見ても EIST の設定なんざありゃしない。困りはてて HP のサポートに電話して聞いたら、ドキュメント番号 232907191 の P.21 を参照してみてくれ。とのことでこのドキュメントを探そうとしたけど、全然みつかんないじゃーん。と、言うことでこれまたしゅーりょー。

ちなみに Windows Server2003 EPE 上で CPU-Z を起動したキャプチャをアップしておきます。

WinServ2003.png

Core Speed って所が 0.3MHz 程度なら変動するんですが、大きく、上記の FreeBSD のようには可変にはなりません。でもって大体 2GHz のちょっと下辺りでふらついている。って感じでしょうか。

あ、あれーー?? DL320G5p って Xeon 3075 で MAX が 2.66GHz の CPU なんだけどっ!! それが 2GHz も出ていないってどーいうことーーっ!!??

さてと。そろそろ結論フェーズに持っていくことにしましょう。

CeontOS も Windows Server2003 も本当に地球環境に優しくない OS ですねぇ。FreeBSD なら OS をインストールして再起動した直後(正確には powerd を起動した直後だけど;-)から CPU 速度は抑えられて運用が始まるのになぁ。そして、何も設定せずに CPU クロックが下げられる。けど、どうして FreeBSD だけかまともに動作するんだ? OS がちゃんとしていると言うことか? Linux は NotePC メインに考えていて サーバの SpeedStep にまでまだ手が回ってないとか?(まぁ “Linux” って言ってしまうと範囲が広すぎるので “SentOS” って書いたほうが良いかな。この場合。)

あー。後、今回はワットチェッカーとか科学的な根拠に基づいては書いていません。ただ単におのおのの OS 上で動作したプログラムが示した値を基準にしています。が・・。そー考えると Linux はカーネルモジュール自体がロードできなかったので値は取れていない状態だなぁ・・。

5月 132009
 

前回書いた続編と言うか・・。

一応、apache を Proxy として利用できるようになり、コメントで hagyさん から、mod_mem_disk と mod_mem_cache の両方を書いたときの動作確認してよー。って言われたので、そのテストをしようと思った矢先・・。

テスト環境では、キャッシュしようと思っていたデータがベーシック認証の中にあったのでありました。つまり、キャッシュしてはいけないデータなので apache Proxy はデータをキャッシュしてくれないんですね・・。

フリーソフトウェアのほとんどの Proxy サーバはベーシック認証やダイジェスト認証の中にあるコンテンツについて、セキュリティの観点によりキャッシュサーバでは絶対にキャッシュしない。と言うポリシーのもとで作成されているみたいです。apache の場合、ドキュメントにちゃんと書いてあります。

http://httpd.apache.org/docs/2.2/ja/mod/mod_cache.html#cacheignorecachecontrol

NetApp 社の NetCache もしかりですが、設定が用意されているみたいで on no-cache とか on uncond-cache がそれにあたります(当然、設定 GUI からもできるとは思いますが;-)。

さてと。どーすんべなぁ。とか思って、一応 apache のソースを眺めたらわりと簡単にソース修正できそうだったので変更してしまいました。以下はそのパッチです。

--- modules/cache/mod_cache.c.ORG       2009-05-02 10:40:03.000000000 +0900
+++ modules/cache/mod_cache.c   2009-05-02 10:39:25.000000000 +0900
@@ -95,9 +95,12 @@
/* First things first - does the request allow us to return
* cached information at all? If not, just decline the request.
*/
+
+    /* Authorization pass.
if (auth) {
return DECLINED;
}
+    */
/* * Try to serve this request from the cache.

 
認証を通った後の判断を調べてリターンしている所をそっくりコメントアウトするパッチです。これにより、ベーシック認証通過後のコンテンツもキャッシュすることができるようになります。

ふぅ。これでキャッシュ用 Proxy サーバはなんとかでき上がりました。では続いて懸案であった、mod_mem_disk と mod_mem_cache の両方を書いたときの動作確認をしたいと思います。

が・・。どう言うわけか mod_mem_cache の設定を書いていると httpd が Segmentation fault(11) してしまいます(今回は prefork で make したので一個のプロセスが Segmentation fault を起こすのみで、全ての httpd は死んではいないため port:80 では LISTEN が可能状態です)。一番最初、キャッシュしていない状態でアクセスがあった場合はマスターサーバから、仮に「A」と言うコンテンツを取ってきてキャッシュして、そしてクライアントに返します。

次に別のクライアントがコンテンツ「A」を取りに来たとき、httpd がこの時に Segmentation fault(11) で落ちてしまう。と言う状態に陥ったのでありました。なので、コンテンツは DISK 上(もしくはメモリ上)に溜まるけど、利用されることは無い。と言う感じですね。

#ちなみに mod_mem_cache で溜まったキャッシュの情報ってどうやって確認するのだろう・・。メモリ利用量のみで判断するのかなぁ?

mod_mem_cache を削除して mod_mem_disk の設定のみを書いたときは正しくキャッシュできて、 Segmentation fault(11) もせず、キャッシュされたデータも再利用できることを確認しました。なので運用的にはキャッシュデータは DISK のみに保存する。と言う方向で行きたいと思います。

ごめんねー。hagyさん。

それにしても、色々詳しく調べるまで、ベーシック認証配下のコンテンツはキャッシュしない。と言うのを知らなかったなぁ。まぁ、考えてみれば当たり前だよなー。認証の奥にある情報が実は Proxy キャッシュサーバの中に残っていた。なんてのは怖いことだもんなぁ。