数年ぶりにLinuxをインストールしているメインPCにしているPCのマザーボードを交換、同時にCPU、メモリ、ディスクも新しい物にしました。近々このマザーボードは別のマザーボードに交換すると思います。SSDも交換するかも知れません。Linuxユーザーの為に情報を共有したいと思います。
Linuxは大抵の環境で動作しますが、まだまだいろいろある、という話です。
詳細な調査を行ったのではありません。取り敢えず自分が使う環境を整備する為に試した時のメモ程度だと理解してください。コメント歓迎します。
追記:
3/24/2015にBIOS 1.80がリリースされていました。このBIOSにアップグレードところ、BIOSモードでも割り込み処理に問題があるのでは?と思えたDiskアクセスが大量にある場合のパフォーマンス低下が直っていました。このため快適に利用できるようになりました。BIOS 1.50は試していないのでもしかすると1.50で修正されていたのかも知れません。
システム構成
以下のようなシステム構成にしました。
- CPU:Intel Core i7 4770S(低電圧版)
- M/B:ASRock Z97 Extreme4
- MEM:CFD 8GB * 2
- HDD:東芝 3TB HDD * 5 (mdadm RAID5)
- SSD:Intel 530 240GB * 1, Intel 520 120GB * 1
この他にPCIeのIntel NIC*2、PCIe Marvell SATAコントローラ、DVDドライブ、USB3のHDD*3も付いていますが、あまり関係ないので詳細は省略。
ハードウェアで期待通りに動作しなかった物
期待通りに動作しなかった物は以下の通りです。
- UEFIブート
- ASMediaの追加SATAポートとUSBポート
- サウンド機能
- Intel I218V NIC
- Intel HDグラフィックス
- Intel 530 SSD
UEFIブート
結論から書くとこのマザーボード+LinuxでUEFIブートは使ってはいけません。
ディスク性能、ネットワーク性能などが極端に低下し、サウンドは全く使い物になりません。再生はするのですが、ノイズ、音飛び、リピートで音にこだわりがなくても聞くに耐えません。会話などは何を話しているのか解らないレベルです。HDDディスク性能は単体でGnomeディスクユーティリティのベンチマークで50MB/s程度は低下します。ソフトウェアRAID5は100MB/s台の性能しかでません。RAID5はBIOSブートに比べると半分未満の速度です。(BIOSブートの場合、平均360MB/s程度。これでも遅いですが)
最近のLinuxはUEFIの場合、自動的にUEFIブートをするように設定されます。このマザーボードの場合は手動でBIOSブート(パーテションをGPTでなく、DOSを利用)にして利用しないと性能が劇的に劣化します。
最新のBIOS(ファームウェア。ASRockのサイトではBIOSファイルと記載されているのでBIOSと記載)では試していません。もし現在のBIOSで改善しているのであればコメントを頂けると助かります。
ASMedia STATとUSBポート
Z97 Extreme4にはZ97チップセット以外のSATAポートとしてASMediaのSATAポートが付いています。
- 2 x SATA3 6.0 Gb/s コネクタ (ASMedia ASM1061), NCQ、AHCI、ホットプラグ機能、および、ASRock HDD セイバーテクノロジーに対応
少なくともASMedia ASM1061はLinux 3.2カーネルからこのチップはサポートされていると記載されています。しかし、Fedora 20 x86_64版では認識はするのですがI/Oエラーで全く動作しません。Linux用ドライバの品質はかなり悪い(?)ように思えますが、ネットを検索してもLinuxでは全く動作しない、という記載は見つかりません。もしかするとこのマザーボード/ファームウェア特有の問題かも知れません。
SATAポートが足りないのでPCIeカードでSATAポートを追加しました。MarvellのSATAコントローラはLinuxで動作するので、Marvellチップを搭載した物を近くのショップで購入して利用しています。
05:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9120 SATA 6Gb/s Controller (rev 11)
サウンド機能
- 7.1 チャネル HD Audio およびコンテンツ保護機能 (Realtek ALC1150 オーディオコーデック)
HDDなどが動作していない時は割とまともに再生するのですが、HDDなどにアクセスするとノイズ、音飛び、リピートなどが発生します。これはBIOSのバージョンによって状況が変わります。バンドルされていた1.0.0では酷い状況でした。1.3.0にしてかなり改善しましたが完全には直ていません。
前述の通り、UEFIブートでは全く使い物にならない状態でした。
Intel I218V NIC
Fedoraのカーネルならサポートしているかな?と思っていましたが、まだダメでした。NICを認識はしますが使えません。Intelがドライバを公開しているので、そのドライバなら使えると思いますが、PCIeのIntel NICが2枚余っていたのでそれを使っています。
オンボードNICを有効にしているとVMwareの仮想ネットワークエディターが誤認識して動作に問題があるのでオフにしています。最新のカーネルなら問題ないかも?
Intel HDグラフィックス
Intelが公式にLinux用ドライバを公開しています。01.orgという、何となく怪しい感がするドメインですがintel.comでもIntelのサイトであると書かれています。正真正銘のIntelのサイトなので、ここからドライバをインストールすればWindows並みにIntel HDグラフィックスが使える!と思っていたのですが、Fedora 20の場合はmesaライブラリの関係でそうはいきませんでした。検索したらFedora純正の環境ではまだ対応していない、と書かれていました。
このためIntel HDグラフィックスドライバを入れても、VMware WorkstationのVMを起動する「3Dサポートがない」「ハードウェアグラフィックスアクセラレーションがない」ので遅いと警告がでます。
実際、古いPCのかなり古いNvidiaカード+Nvidia純正ドライバの環境の方が普通に使っていても描画が高速であることが分かります。これはIntelの問題ではなくFedoraの問題でありFedora 21では対応されるような情報が記載されていました。
多少遅いとはいえ実用的には問題ない速度なので、独自に色々調整せず、そのまま使っています。
Intel 530 240GB SSD
このSSDは最速を目指すSSDではありませんが、低消費電力で値段も手頃、Intel製なので購入しました。マザーボードとの相性(?)の可能性も捨てきれませんが、あまりアクセスが無い場合の平均アクセスタイムが異常に長いです。atopで普通に数ms、ひどい時は100msを超えます。HDDより遅いです。
sdaがIntel 530 SSD
DSK | sdb | busy 12% | read 43 | write 115 | KiB/r 20 | KiB/w 9 | MBr/s 0.09 | MBw/s 0.11 | avio 7.50 ms | DSK | sdf | busy 11% | read 36 | write 104 | KiB/r 18 | KiB/w 8 | MBr/s 0.06 | MBw/s 0.08 | avio 7.82 ms | DSK | sdc | busy 9% | read 29 | write 83 | KiB/r 15 | KiB/w 7 | MBr/s 0.04 | MBw/s 0.06 | avio 7.95 ms | DSK | sdd | busy 7% | read 27 | write 77 | KiB/r 19 | KiB/w 7 | MBr/s 0.05 | MBw/s 0.06 | avio 6.38 ms | DSK | sde | busy 5% | read 14 | write 64 | KiB/r 32 | KiB/w 8 | MBr/s 0.04 | MBw/s 0.05 | avio 6.65 ms | DSK | sda | busy 4% | read 0 | write 17 | KiB/r 0 | KiB/w 15 | MBr/s 0.00 | MBw/s 0.03 | avio 20.9 ms |
大量にアクセスすると通常のSSD同様に0.xx/msから0.0x/msの平均アクセスタイムになります。ベンチマークもスペック通りの性能ですが、IOの立ち上がりが遅い感じの動作です。低消費電力仕様と関係があるのかも知れません。体感する性能としてはIntel 520 SSDに較べて遅いのかも?と感じる程度です。アクセスしはじめの遅延が大きいことが原因かも知れません。
Intel 520のSSDでは普通の性能である表示されるので、マザーボードも疑わしいですが、SSDの問題ではないかと考えています。もし問題がある場合、ファームウェアが更新されると直るかも知れません。ほかのマザーボードの場合は問題ないのかも知れません。
ソフトウェアで期待通りに動作しなかった物
ソフトウェアで期待通りに動作しなかった物は以下の通りです。
- bcache
- Linux ZFS (fuse)
bcache
bcacheはI/O待ちを減らす為に非常に効果的です。SSDのディスク領域を消費する以外、ZFSの様に大量のリソースも消費しません。今回は3TB SSDを5本購入してソフトウェアRAIDを組む事にしていたので、一つのbchache用のSSDパーテション(80GB)に5のbcacheデバイスを作成してSSDキャッシュにしました。ファイルシステムにはBtrfsを利用し、lzo圧縮を有効にしました。
性能的には文句無し。ディスクI/O待ちも期待通りに低い値になりました。
しかし、安定性に問題がありました。VMwareのイメージが4TB、その他のバックアップやファイルが3TBくらいあるのですが、古いHDDから数TB転送した時点でディスクI/Oエラーが発生し、bcacheデバイスどうしても再認識(利用できる状態)にできなくなりました。
これは2回発生しました。2回ともbcacheの再作成から始めて数TB転送した時点でディスクI/Oエラーが発生し、ディスクを使える状態に回復することが出来なくなりました。データの安全性を高めるためにソフトウェアRAID5を利用しているのですが、一発でRAIDが使えなくなるのでは意味がありません。結局、bcacheは無しにしてソフトウェアRAID5を組む事にしました。
bcacheのサイトには「bcacheとbtrfsの相性が悪い」
bcache + btrfs does not seem to be stable yet
と記載されています。btrfsだとレースコンディションが起きやすいのか?と思い検索してみると、富士通の方からレースコンディション修正の提案などが出てきます。
しかし、私の環境の場合はbtrfs → MD Raid → bcache → HDDの環境です。この環境でも問題は発生しました。そもそもbcacheは普通のブロックデバイスと全く同等に動作すべきです。bcacheにも問題あるようです。実際、I/Oエラーが起きた後はRAIDのみではなく、普通のHDDデバイスとしてもbcacheデバイスが使えなくなりました。通常のHDDと同じ状態になるはずのデタッチ状態でも使えない状態は変わりませんでした。(RAIDディスクでなく、単体HDDとしてパーテションの作り直しをしようとしてもDevice busyで操作できなかった)
少なくともbtrfsとbcacheを利用した場合、問題が発生しやすい事は知られているので利用される方は十分に注意し、バックアップを頻繁に取るようにした方が良いと思います。
Linux ZFS(fuse)
Fedora 20はライセンスの関係でネイティブZFSをサポートしていません。FUSEのZFSは遅い、という話を良く耳にするのであまり期待していませんでしたが、パフォーマンス的にはそれほど問題ありませんでした。
しかし、ファイルシステムに負荷をかけた場合のコンテクストスイッチが半端な数ではありませんでした。40万/秒という普通のシステムではあまり見たことがないような数字になります。ファイルシステムの性能はそれなり、I/O待ちも期待通りの低い値だったのですが、これでは他のプロセスへの影響は避けられません。
ZFS(fuse)はメモリもかなり利用するのでインタラクティブに使うシステムにはあまり向いていません。FreeBSD9.2ベースのFreeNASも利用しているのですが、このシステムのコンテクストスイッチ数と比べると、Linux ZFS(fuse)のコンテクストスイッチ数は無視するには大きすぎます。メモリを32GBにしてもコンテクストスイッチはどうしようもありません。少なくともLinux ZFS(fuse)は普段使いのPCに利用するのは向かないと思います。このためZFS(fuse)の採用は見送りました。(ソフトウェアRAIDも多くのコンテクストスイッチが発生しますが、ZFS(fuse)ほどではありませんでした)
試しにFreeNASで起動してLinux ZFS(fuse)を利用してみようしてみました。ZFSとしては認識しない(?)ようです。詳しくは調べませんが、単純にFreeNAS USBブートで起動しても認識しませんでした。FSバージョンが異るので何らかの設定が必要なのかも知れません。
システムの性能
Gnome Disk Utilityのベンチマークを載せておきます。(画像クリックで拡大)Intel 520シリーズのSSD以外は書き込みベンチマークをしていません。RAID5のパフォーマンスが500MB/sを超えていてもよさそうなのですが超えていません。hdparmでは550MB/sを超えています。割り込み関係の問題が原因でしょうか?
[yohgaki@dev workspace]$ sudo hdparm -tT /dev/md0 /dev/md0: Timing cached reads: 27278 MB in 2.00 seconds = 13657.01 MB/sec Timing buffered disk reads: 1662 MB in 3.01 seconds = 553.01 MB/sec
まとめ
ソフトウェアRAIDでなくチップセットのRAID5機能を使った方が性能的には有利になる可能性があるのですが、使い勝手の部分でソフトウェアRAIDを選択しています。ソフトウェアRAIDであれば、最悪別のハードウェアで利用することも簡単だからです。(mdadmは様々なRAIDをサポートしていますが、検証して利用する手間をかけれなかった。いざという時に機能しないかもしれない冗長性では意味がない)
ASMediaのSATA/USBが正常に動作しない原因がカーネルのドライバーにあるのか、マザーボードのファームウェアにあるのか判りませんが、少なくともASRock Z97 Extreme4では動作に問題があります。印象でしかありませんが、ハードウェア割り込みの処理に問題があるように感じます。UEFIで性能が極端に劣化する原因は割り込み処理関連だと思います。
試しにWindows 8もインストールしてみました。流石にWindows環境ではよくテストされているようで、少し使ったくらいでは何も問題は見つけられませんでした。このマザーボードは手頃かつオーバークロックもしやすいのでWindowsユーザーにオススメできると思います。
Linux用の場合、追加のSATAポートが欲しい場合はMarvellのコントローラーを積んだマザーボードがオススメだと思います。メーカーだとGigabyteのマザーボードはMarvell製のコントローラーを載せているものが多いようです。PCをいじって遊んでいる時間がないので少し先になると思いますが、余裕ができたときにASMediaのコントローラーがLinuxでマトモに動作していなければ、Gigabyteのマザーボードを試したいと考えています。
全くオーバークロックするつもりが無いのでCPUにi7 4770Sを選択しています。このシステムをワットチェッカーで計測するとアイドル時の消費電力は80W程度でした。本気で低消費電力に挑戦するつもりではなかったのですが、もう少し低い値を期待していたので少し残念。しかし、色々接続しているので妥当な値ではあると思います。
16GBでは仮想マシンを使っているとスワップします。しばらく使って安定動作しているので追加の16GBメモリを買わないと、なのですがMacBookを買ってしまったので来月に。その前にマザーボードか?!あまりH/W周りに時間を使いたくないので悩ましいです。Linuxならコレ、というオススメマザーボードがあったら教えてください。
そもそもローカルマシンにbcacheやZFSを使おうと考えたのはI/O待ちを減らし、仮想マシンをより快適に使いたいことが動機でした。残念ながら今回は実現できませんでした。
Leave a Comment