memologue RSSフィード

書いている人

日記というよりは備忘録、ソフトウェア技術者の不定期メモ。あるいはバッドノウハウ集。プライベートで調査した細々した諸々のスナップショット。嘘が散りばめられています。ISO/IEC 14882(C++)とPOSIX, GCC, glibc, ELFの話ばかりで、WindowsやMacの話はありません。特に記載がなければLinux/x86とILP32が前提です。時間の経過と共に古い記事は埋もれてしまいます。検索エンジンから飛んできた場合は、ページ内検索をご利用いただくかgoogleキャッシュを閲覧してみてください。技術的な記事を書きためる場所として使っています。言及してもらえると喜びます。主要な記事の一覧を書いておきます:

にんきコンテンツ: [GCC] mainを一度も呼ばないばかりか蹂躙する / Binary2.0 Conference 2006 発表資料 / C++ で SICP / ついカッとなって実行バイナリにパッチ / hogetrace - 関数コールトレーサ

昔のPOSIX関係の記事: シグナルの送受に依存しない設計にしよう / シグナルハンドラで行ってよい処理を知ろう / マルチスレッドのプログラムでのforkはやめよう / スレッドの「非同期キャンセル」を行わない設計にしよう / スレッドの「遅延キャンセル」も出来る限り避けて通ろう / マルチスレッドプログラミングの「常識」を守ろう / C++でsynchronized methodを書くのは難しい / シグナルハンドラからのforkするのは安全か? / g++ の -fthreadsafe-statics ってオプション知ってます? / 非同期シグナルとanti-pattern / localtimeやstrtokは本当にスレッドセーフにできないのか / UNIXの規格について / マルチスレッドと共有変数 - volatile?なにそれ。 / type punning と strict aliasing / アセンブラで遊ぶ時に便利なgdb設定 / 最近の記事は一覧から

2004-08-14

[] LGA775 Pentium4 購入

自宅のWindowsマシンが逝去してから約半年、iBookを可愛がることで問題なく暮らしていましたが、一応一台買っておくかということで秋葉原へ。


AOpen XC Cube EX915 というi915Gチップセット搭載のCube型ベアボーン(\40k)に、Pentium4 2.8GHz (Intel 520, LGA775, Prescott, HT)を組み合わせ(\19k)、N/B の DDR400CL2.5メモリ*1と、SeagateのSATA 160GB HDD (11k) を一緒に買って組み上げ完了。ファンがちゃんと付いていなくてCPUを溶かしそうになりましたがどうにか動作(汗)。


Audio(S/PID有), Video(Intel GMA 900), Ether(GbE), USB2.0, IEEE1394 はオンボード。ビデオ出力がDVIではなくアナログなのが一寸残念ですが、まぁ許容範囲でしょう。


似非とはいえ Multi Processor のマシンを個人で所有するのは久しぶりです。ABIT BP6 でCeleron 300AをDual駆動していた頃が最後だから約5年振りか。


(参考) ITMedia: きょうは、「3Dゲームも任せておけ」のキューブ型ベアボーン「EX915」のパフォーマンスに迫ってみた

[][] (続き) EX915 に Fedora Core3 test1 インストール

Windows用の筈なのにやはりLinuxを入れてしまう罠。BIOSの設定をデフォルトのまま変更しない状態で、FC3 test1のインストールは特に問題なし。Sound, USB, Ether ともに動作良好。IEEE1394 はデバイスを持っていないのでよくわからないが認識している模様。S/PID出力の動作は不明。


Etherのチップは結構新し目なので、lspci -v 結果を軽くご紹介しておくと、

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 
 Gigabit Ethernet PCI Express (rev 01)

です。PCI Express経由で接続されたBCM5751ですね〜。FC3でのドライバは、tg3になるようです。


Videoですが、Generic VESAドライバ、1024x1280でXが起動するところまでは確認できました。もっとちゃんとしたドライバがあるのかないのか、そのあたりは不明です。


唯一問題があったのがHDDで、デフォルトの状態ではパフォーマンスが悲惨でした。

# /sbin/hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads:   12 MB in  3.41 seconds =   3.52 MB/sec

sdaではなくhdaになっているということは、ata_piix + libata ではなく、普通のpciideドライバで駆動されているということ。TurboLinuxで同じ症状に陥っているを教えていただいたので、そこを見ながら対処しました。


initrdファイルを下記のように確認すると、ata_piix.ko と libata.ko は含まれています。

# mkdir /tmp/x
# cp /boot/initrd-2.6.7-1.478smp.img /tmp/init.gz
# gunzip /tmp/init.gz
# mount -t ext2 -o loop /tmp/init /tmp/x
# find /tmp/x
(略)
/tmp/x/lib/jbd.ko
/tmp/x/lib/ext3.ko
/tmp/x/lib/sd_mod.ko
/tmp/x/lib/libata.ko
/tmp/x/lib/scsi_mod.ko
/tmp/x/lib/ata_piix.ko
# 

ならば、普通のideデバイスとして認識されるのを強制的に止めればよかろうということで、/etc/grub.conf を書き換え、

kernel /boot/vmlinuz-2.6.7-1.478smp ro root=LABEL=/ ide0=0 ide1=0x170,0x376,15
 ide2=0 ide3=0 ide4=0 ide5=0 ide6=0 ide7=0 ide8=0 ide9=0

としました*2。BIOSの設定でIDEコンパチモードを切ることはせず、また/etc/fstabを書き換えることもせず再起動してみましたが、見事に成功。fstabは、全て LABEL=XXX 形式で書かれていて、具体的なデバイス名が書かれていないからうまく行くんですな。初めてLABELによる抽象化の恩恵に与った気がします。/boot/grub/device.map を書き換えなくてもOKだった理由はわかりませんが、BIOSをコンパチモードのままにしておいたからでしょうか。


パフォーマンスの方は、

# /sbin/hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads:  164 MB in  3.02 seconds =  54.29 MB/sec

と、問題ないレベルに回復しました。奥山さん、いろいろ調べていただいてどうもありがとう _o_

[] (続き) Fedora Core3 test1 雑感

SELinuxのポリシーの種類が増えたのと、GCCが3.4.1になったのが嬉しいですね。詳しくは今度。

*1:九十九電機で相性保証\500を付けて購入。memtest86+でfailしただけでも返品してOKなんて言われちゃったのでついノーブランドをチョイス :-)

*2:実際は1行。また、"rhgb" と "quiet" はトラブルシュート中なので消しました