2009年11月27日金曜日

USBメモリに最適なファイルシステム

WindowsXP環境でもexFATが使えるてーんで、フラッシュメモリや
USBメモリに最適なディスクフォーマットを比較検証してみた。

使用したものは512~16GBのSD/miniSD/microSDカード。
これにアダプタかましてUSBメモリ化したもので比較。

(ベンチマーク方法)
「ぼく管3」インストールディスク内のフォルダ「atc3\common\voice」を
ハードディスク上に用意し、それをUSBメモリにコピーするのに
かかった時間を計測。
ファイル数:3664(うち約1900個が32KB以下のwavファイル)、135MB

(下準備)
・exFATドライバ入手先:Windows XP 用の更新プログラム (KB955704)
http://www.microsoft.com/downloads/details.aspx?FamilyID=1cbe3906-ddd1-4ca2-b727-c2dff5e30f61&DisplayLang=ja

・USBメモリをNTFSでフォーマットする方法
http://osima.jp/blog/usbmemory_ntfs.html

(参考)
・FAT および NTFS のデフォルトのクラスタ サイズ
http://support.microsoft.com/kb/140365/ja
実際のクラスタサイズはCHKDSKコマンドで確認。


■PQI miniSD 512MB
約3年前に購入した、当時では一応速い部類のもの。
シーケンシャル読みは10MB/s台後半。

85秒 FAT32(クラスタサイズ 4KB)
85秒 FAT16(クラスタサイズ 8KB)
95秒 exFAT(クラスタサイズ 32KB)
99秒 NTFS (クラスタサイズ 512B)
(以下参考)
109秒 NTFS (クラスタサイズ 1KB)
130秒 NTFS (クラスタサイズ 2KB)
133秒 NTFS (クラスタサイズ 4KB)

ためしに測ってみたNTFSフォーマットはいまいちフラッシュドライブに
向いていなさそうな雰囲気。
いずれのクラスタサイズでも、というか、クラスタサイズが上がる
(=メディアの容量が増える)につれて速度低下が見られる。
一方でクラスタギャップからくるディスク使用率の上昇幅も大きくなるので
ファイル数やファイルサイズの制限が問題化していない限り必要なし。

また、exFATはこのサイズでは恩恵はまったくない。
大容量向けに最適化されているのでしょうねこれ。

同じ速さのFAT16とFAT32、クラスタサイズからオーバーヘッドの少ない
FAT32が512MBでは最適。


■KINGMAX microSD 1GB
安物。今回使用しているものの中で一番遅い部類。
シーケンシャル読みは9MB/s台。

100秒 FAT32(クラスタサイズ 4KB)
101秒 exFAT(クラスタサイズ 32KB)
120秒 FAT16(クラスタサイズ 16KB)
xxx秒 NTFS (クラスタサイズ 1KB)※遅すぎて中断

FAT16はクラスタサイズが上昇したのに伴ってか速度低下。
また、exFATがFAT32に並んだ一方でNTFSが激遅に。

1GBでもFAT32が速度・サイズ共に最適。


■Transcend microSD 2GB
携帯電話買ったらおまけでついてきたもの。そんなに速くない。
シーケンシャル読みは12MB/s台後半。

81秒 exFAT(クラスタサイズ 32KB)
92秒 FAT32(クラスタサイズ 4KB)
115秒 FAT16(クラスタサイズ 32KB)
xxx秒 NTFS(クラスタサイズ 2KB)※遅すぎて中断

ここでexFATが速度面でトップに。
一方でテスト環境ではFAT32に比べてディスク使用量の約3割が
オーバーヘッドで無駄に。

・約1割の速度をとるか
・約3割の容量効率をとるか

の違いでexFAT(速度重視)とFAT32(容量重視)で分かれる。
互換性を考えれば、この程度だと敢えてexFATにする必要はないと思う。


■Transcend SDHC 16GB
class6だけあって今回テストしたものの中では最速。
シーケンシャル読みは15.5MB/sほど。

33秒 exFAT(クラスタサイズ 32KB)
43秒 FAT32(クラスタサイズ 8KB)
56秒  NTFS(クラスタサイズ 4KB)
※この容量はFAT16のサポート外。

ここでもexFATが速度面でトップ。
ディスク使用量ではFAT32に比べ約2割が無駄に。
テスト環境では速度・容量効率が同じ程度トレードオフ。

eeePCなどのネットブックで、ポン付けでストレージ化している環境で
大容量のSDカードを使用している場合はexFATがよさそう。
NTFSでフォーマットするともったいない結果に。


【今回のまとめ】
・FAT16は512MBを超えると相対的に速度低下
・FAT32は1GBを超えると相対的に速度低下
・exFATが明確に速度面で優位に立つのは2GBから
・NTFSはディスク容量が大きくなるにつれて絶対的に性能低下する。
また、そもそも速度的に優れているわけでもない。


(2017/10/22追記)
ドライブレコーダーで不具合があったのでナレッジ。

ドライブレコーダーにてmicroSD(東芝16GB UHS-I・Class10)を使用する際、
クラスタサイズを大きめにして運用したところ記録異常(ファイル破損)が見られた。
速度を計測したところ明確な落ち込みが見られた。
せいぜい3MB/sのデータレートなので多少落ち込んでも影響ないはずだが
実際はめちゃくちゃなファイルが出来上がることになった。

クラスタサイズ64KB ※異常発生


クラスタサイズ32KB(SDフォーマッタ既定)


普通64KBなんて手動でしか指定しないので気にすることはないが
定石通り機器側でフォーマットするなり、SDフォーマッタの使用を推奨。
Windowsでフォーマットするなら32KB指定。
デジカメなどで使用するにもおそらくこのくらいがいいはず。
64KBは非推奨。

ちなみに16KB・8KB・4KBでも目立った速度低下はなかった。
ドラレコのように大きなデータはシーケンシャルで書いていくはずなので
わざわざあまり小さくする必要はまったくない。

2009年1月28日水曜日

L2キャッシュ量の違いと性能差

なんかモデルナンバーがたくさんあるIntelのCPUを比較してみて
それぞれいかほどの効果なのかを解きほぐしてみる。

■ゲーム編

【参考】
1万円台の45nm世代デュアルコアCPU,
「Core 2 Duo E7300」&「Pentium Dual-Core E5200」レビュー掲載
http://www.4gamer.net/games/030/G003078/20080907002/

グラフ8より引用
ロストプラネット:Cave
E7200 54.2fps(2.53GHz, L2=3MB)
E5200 32.1fps(2.50GHz, L2=2MB)

ほぼ同クロックながら、E5200のL2キャッシュ量は2/3となっている。
スコアも単純に割り算したら約4割の性能差。
この場合、ゲーム実行時の性能差は2MBと3MBでほぼそのまんま。

じゃあ次。

同グラフより。
E8600 74.3fps(3.33GHz, L2=6MB)
E7300 70.2fps(@3.4GHz, L2=3MB)

今度はほぼ同クロックでL2キャッシュ2倍。
しかし処理性能に差がほとんどない。
何かがボトルネックになっていて頭打ちになっているわけでもなく、
E7300のオーバークロックスコア(3.9GHz)がさらに高い値を
叩き出している。

これすなはち、ロストプラネットにおいては処理データをプールしておく
場として3MBあれば充分事足りるというわけで6MBもいらない、という
話になる。


■動画エンコード編

そろそろGPUエンコの時代かなと思いきやどっこいそうでもなくって
いかんせんaviutlがすんごく使い勝手がよかったりする今日この頃。
CPUにゃもうちょっとがんばってもらおうというわけでこっちも比較。

【参考】
Intel新CPU、Q8200とE5200をオーバークロック
http://pc.nikkeibp.co.jp/article/news/20080901/1007619/

グラフ5より引用
TMPGEnc 4.0 XPressによる動画エンコード
E7200 603秒(2.53GHz, L2=3MB)
E5200 619秒(2.50GHz, L2=2MB)
E2200 715秒(2.20GHz, L2=1MB)
E1200 986秒(1.60GHz, L2=512KB)

E7200とE5200の間に差はほとんどない。
でもってのこりのものも一挙に比較してみる。

E2200は2.2GHzなので、単純に2.5GHzに帳尻合わせをするべく
タイムに2.2/2.5倍掛けしてみると約629秒。
E1200は1.6GHzなので、単純に2.5GHzに帳尻合わせをするべく
タイムに1.6/2.5倍掛けしてみると約631秒。

料理したこの数字を並べてみる。

単純計算して出した値
E7200 603秒(2.53GHz, L2=3MB)
E5200 619秒(2.50GHz, L2=2MB)
E2200 629秒(@2.50GHz, L2=1MB)
E1200 631秒(@2.50GHz, L2=512KB)

それぞれ有意な差がほとんどない。(価格差に比べて、の話)
つまり、MPEG2エンコードでは2次キャッシュの差はほとんどない。
L2の貧弱なセレロンはエンコードに向かないという定説はこの場合には
あてはまらないみたい。
DivXだと違うかもしれないけど、データがないのでどうにも。


■結論
用途別に列挙。

L2=512KB
エンコード専用マシン
⇒E1200~E1500(discontinued)をオーバークロック

L2=1MB
⇒Celeron E3300/E3400

L2=2MB
オンラインゲームならそつなくこなせそう。
⇒Pentium E6500~E6700

L2=3MB
ロストプラネット級でもいけそう。
⇒Core 2 Duo E7500/E7600

L2=3MBオーバー
無用の長物。

なんにせよ、エンコード用途だけでなくゲームもする予定なら
L2容量が3MB程度のものをチョイスしておくほうがよさそう。