最近USBメモリを利用する機会はめっきり減っているのですが、試してみて良かったです。結構速度に違いが出る場合もあれば出ない場合もあります。良い勉強になりました。
ページの趣旨
USBメモリのフォーマット規格を変更し、読み書き速度の測定を行い、最適な値を調べる。exFatを使うと、USBメモリの速度はどれくらい上昇するのかを調べる。
変更する箇所
・ファイルシステム・・・・ 主に FAT32 と exFat でチェック
・アロケーションユニットサイズ・・・・1024byte~4096KBでチェック
重要な事&注意事項
FAT32/exFatの違いやアロケーションユニットサイズによる書き込み速度の違いは、主にファイルの上書きで発生する。
なのでCrystalDiskMark などのベンチソフトでは、ほとんど差が出ない。
また、XPでexFatを使うにはKB955704パッチが必要。
Vistaでは、exFat USBをReadyboostに使う事は出来ない。
結果
- フォーマットにexFatを利用した方が高速。
- アロケーションユニットサイズを16KB~128KBあたりに設定すれば、かなり最適な効果が得られるっぽい。
- またアロケーションユニットサイズの最適な値は、USBメモリによって異なってくる。
手持ちUSBの場合、
・いずれも exFat の方が高速。
・2005年頃の 2GB USBメモリ・・・アロケーションユニットサイズ16~32KB
・2011年頃の 16GB USBメモリ・・・アロケーションユニットサイズ64KB
上記でファイルの読み書きが最も最速になった。
この結果はあくまで目安にすること。
フラッシュメモリのチップによって最適な値は変わる感じなので、手持ちのUSBメモリを何度かフォーマットを繰り返して自分で計測してみよう。
たぶん、フラッシュメモリの「ブロック」とアロケーションユニットが同じサイズ(もしくは2倍程度)になった時に最大の効果が得られる感じ。
詳細は以下。(けっこう長文)
テストに使ったUSBメモリ
手持ちの古いUSBばかりです。
▲左から
2005年頃に購入・・・2GB/ BUFFALO 型番失念
2009年頃に購入・・・4GB/ Kingstone Datatrabel 型番失念
2011年頃に購入・・・16GB/PicoDrive GH-UFD16GDX (高速タイプ)
(おまけ: CrystalDiskMark のみ)
4GBと16GBのUSBメモリは、まだ現役で絶賛利用中。
テストは主に、2GB(現役引退品)を利用しています。
計測方法
- テスト方法1
- ランダムなファイルサイズの画像を300個用意する
(このサイトで利用している画像:2KB~600KB、合計8MB) - 同名の小さいファイルを用意する
(画像一括縮小ソフトを使って1KB~400KBに縮小。合計6.5MB) - フォーマットしたUSBメモリに、
- まずは小さいファイル300個を書き込み、時間計測。
- そこに大きいファイルを上書き、時間計測
- さらに小さいファイルを上書きし、時間計測
- 「300個 8MBのテストってショボくね?」と思うかもしれないが、アロケーションサイズを大きく取ると、この程度でも必要なDiskサイズは1.3GBに達する。この量が限界だった。
- ランダムなファイルサイズの画像を300個用意する
- テスト方法2
- 512KBよりチョット小さいファイルを100個用意する
- 同名の512KBよりチョット大きいファイルを100個用意する。
- フォーマットしたUSBメモリに、
- まずは小さいファイル100個を書き込み時間計測。
- そこに大きいファイルを上書き、時間計測
- さらに小さいファイルを上書きし、時間計測
- テスト方法3
- (一応) CrystalDiskMarkでもチェックしておく
- テスト方法4
- Windows Readyboostに利用してみる
- 注意
テスト1~2はストップウォッチを使い手動計測しているので、最大0.5秒くらいの誤差がある。
テスト1 (2KB~600KBのファイル300個の上書き)
2005年購入 2GBのUSBメモリフォーマット 形式 | アロケーション ユニットサイズ | 書き込み1回目 | 同名ファイル上書き (4KB~600KB) | 同名ファイル上書き2回目 (1KB~400KB) |
FAT32 | 1024b | 1m50.8s | 13m25.5s | 4m50.6s |
FAT32 | 4096b | 17.8s | 1.24.6s | 30.2s |
FAT32 | 16KB | 19.8s | 1.00.4s | 22.7s |
ExFAT | 4096b | 36.8s | 1.14.0s | 18.1s |
ExFAT | 16KB | 14.8s | 39.8s | 17.9s |
ExFAT | 32KB | 17.7s | 27.2s | 19.6s |
ExFAT | 64KB | 24.0s | 30.4s | 25.2s |
ExFAT | 1024KB | 1m40.6s | 1m46.10s | 1m33.00s |
ExFAT | 4096KB | 1m23.2sec | 上書き不可 | 上書き不可 |
大きいファイルを上書き・・・・exFat 32KBが最速。
2011年購入 16GB高速USBメモリ(PicoDrive)
フォーマット 形式 | アロケーション ユニットサイズ | 書き込み1回目 | 同名ファイル上書き (4KB~600KB) | 同名ファイル上書き2回目 (1KB~400KB) |
FAT32 | 1024b | フォーマットできない | ||
FAT32 | 4096b | 14.5s | 16.5s | 15.8s |
FAT32 | 16KB | 14.1s | 12.4s | 12.8s |
FAT32 | 64KB | 16.2s | 11.4s | 12.9s |
FAT32 | 64KB(専用ツール) | 16.0s | 11.6s | 12.8s |
ExFAT | 4096b | 12.0s | 13.1s | 11.7s |
ExFAT | 16KB | 11.2s | 11.1s | 10.5s |
ExFAT | 32KB | 10.8s | 9.4s | 10.1s |
ExFAT | 64KB | 11.5s | 9.4s | 10.2s |
ExFAT | 128KB | 11.3s | 9.4s | 10.2s |
ExFAT | 1024KB | 20.8s | 29.4s | 21.7s |
ExFAT | 4096KB | 1m20.8 | 1m53.6 | 1m29.2 |
上書き・・・・exFat 16~128KBが最速。
ちなみに高速USBメモリには専用のフォーマットツールが付属していて、FAT32形式の64KBでフォーマットされる。アロケーションユニットサイズは64KBにしておくのが正解なんだろう。FAT32でフォーマットされるのは、汎用性を重視している為と思われる。
この結果 (特にアロケーションユニットのサイズ) は、利用するUSBメモリによって異なるだろうし、書き込むファイルの大きさでも微妙に変わってくると思う。
テスト2 (512KB付近のファイル100個の上書き)
2005年購入 2GBのUSBメモリフォーマット 形式 | アロケーション ユニットサイズ | 書き込み1回目 (511KB) | 同名ファイル上書き (513KB) | 同名ファイル上書き2回目 (511KB) |
FAT32 | 1024b | 1m21.7s | 7m37.5s | 3m12.3s |
FAT32 | 4096b | 16.8s | 44.0s | 18.3s |
FAT32 | 16KB | 15.5s | 43.2s | 17.2s |
ExFAT | 4096b | 15.2s | 42.8s | 18.2s |
ExFAT | 16KB | 15.0s | 41.4s | 16.1s |
ExFAT | 32KB | 15.0s | 43.4s | 15.6s |
ExFAT | 64KB | 14.6s | 55.7s | 15.8s |
ExFAT | 1024KB | 38.3s | 1m08.8s | 38.1s |
ExFAT | 4096KB | 39.6s | 1m06.7s | 37.3s |
1回目の書き込み・・・・アロケーションユニット 16KB~64KBが最速。フォーマットはFAT32/exFATどっちを使っても変わらない。
上書き・・・・exFat 16~32KBが最速。
フォーマット 形式 | アロケーション ユニットサイズ | 書き込み1回目 | 同名ファイル上書き (4KB~600KB) | 同名ファイル上書き2回目 (1KB~400KB) |
FAT32 | 1024b | フォーマットできない | ||
FAT32 | 4096b | 13.5 | 20.8 | 13.3 |
FAT32 | 16KB | 12.4 | 18.7 | 13.3 |
FAT32 | 64KB | 9.1 | 13.9 | 11.4 |
FAT32 | 64KB(専用ツール) | 9.1 | 13.7 | 11.5 |
ExFAT | 4096b | 12.5 | 22.8 | 13.5 |
ExFAT | 16KB | 8.9 | 15.4 | 10.2 |
ExFAT | 32KB | 7.9 | 12.8 | 8.6 |
ExFAT | 64KB | 7.3 | 11.8 | 8.1 |
ExFAT | 128KB | 8.9 | 12.2 | 8.6 |
ExFAT | 1024KB | 10.9 | 18.9 | 11.3 |
ExFAT | 4096KB | 22.7 | 31.6 | 21.3 |
やっぱ手持ちの高速USBメモリはアロケーションサイズ64KBが最適な値らしい。
テスト3 (CrystalDiskMarkでベンチ)
上書きテストの時のような、大きな変化は無し。
512KBランダムライトで違いが出るかなあ・・・という程度。
その他の項目では全く差は出ない。
▲FAT32 4090byte | ▲FAT32 32KB | ▲FAT32 128KB |
▲FAT32 4096KB | ▲FAT16 32KB | |
▲exFAT-16KB | ▲exFAT-32KB | ▲exFAT-64KB |
exFAT 32KB~64KBで「512K ランダムライト」の性能が3倍くらいに上がりました。ただし、「テスト1~2」の上書きテストの時は上記のような速度差を体感できていない。
また上書きテストだと、exFAT-16KBでもソコソコ良い結果が出たのだけれど、CrystalDiskMarkではFAT32と同じような結果になった。
2009年頃の 16GB 高速USB 結果
▲製品付属 専用フォーマットソフト | ▲exFAT-64KB | ▲exFAT-64KB |
exFATとFAT32で特に違いは無し。
高速USBメモリ(グリーンハウス/PicoDrive)には、専用のフォーマットソフトが付属している。これでフォーマットすると、FAT32-64KBでフォーマットされるようだ。
Diskのフォーマットやアロケーションユニットサイズを確認するには、コマンドプロンプトからchkdskを行うのが簡単。
▲専用ソフトでフォーマットしたUSBメモリを、「chkdsk X:」で確認した所
ファイルシステム: FAT32
アロケーションユニットサイズ:65536byte (64KB)
テスト3 (CrystalDiskMark)のまとめ
上書き保存をしない用途ならば、どの規格でフォーマットしてもほとんど変わらない結果になると言う事なのか・・・。
テスト4 (Windows Readyboostに利用してみる)
手持ちのWindows7 環境は、すべてシステムをSSDドライブに換装してしまっている為、- 新たにHDDにWindows7をインストールしてテスト。
- VMware上のWindows7でテスト
- どちらもSATA3接続7200rpm、シーケンシャル150MB程度のHDD
- USBメモリは、(2GB品、高速16GB品)を利用
FAT32-32KB
FAT32-64KB
exFAT-64KB
exFAT-4096KB
でテスト
結果
・高速タイプのUSBメモリを使っても、
・フォーマットにexFATを使っても、
・アロケーションユニットサイズを最適化したり極端に大きくしても、
体感できるような違いや高速化は発生しなかった・・・・。
ただし・・・
▲2005年頃に購入した2GBUSBメモリ (Readyboostで使うには微妙に速度不足) は、FAT32システムでフォーマットすると40~50%の確率で速度不足と認識された。
exFATシステムでフォーマットした場合、100%の確率でReadyboost利用可能となった。やっぱexFATを使った方が効果が出やすいかも。
注意:Windows Vistaの場合、exFATシステムでフォーマットしたUSBメモリをReadyboostに使う事は出来ません。
あとは、HDDにインストールしたWindows7も、VMware上にインストールしたWindows7も、どちらも使い込んだ状態ではない。HDDのフラグメントは殆ど無い状態だし、ソフトも殆どインストールしていない。ある程度使い込みが進んだ状態にならなければ、Readyboostは効果を発揮しないかもしれない。
以下はおまけ
アロケーションユニットサイズを大きくすると・・・・
アロケーションユニットサイズを大きくすると書き込み速度が遅くなるだけでなく、色々と弊害が出ました。
以下、アロケーションユニットサイズ4096KBにした時のテスト結果。
クラスタの肥大化
▲2GBのUSBメモリに対し、316個/6.5MBのファイルを書き込みをしただけで、1.2GBものDiskサイズを占有してしまった。
4KB~600KB程度のファイルを保存しても、Disk上では4096KBの容量を使ってしまうため、こんな現象が発生する。
容量不足で上書き不可
▲この状態では、同名、ほぼ同サイズのファイルを上書きする事すら不可能になってしまった。6MBのデータを上書きするのに、「612MBの空き容量では不足」と言われてしまった。。。
アロケーションサイズを大きくしすぎると、ファイル1個あたりで占有するユニットが大きくなりすぎる。ほどほどの大きさにしておこう。
外部参考リンク1
このページ内では、ほとんどフラッシュメモリやフォーマットタイプの解説をしないので、その代わりの参考リンク
- フラッシュメモリ - Wikipedia
- NAND型フラッシュメモリ - Wikipedia
- ブロック (データ) - Wikipedia
- exFAT - Wikipedia
- ASCII.jp:USBメモリーで巨大ファイルを扱う「exFAT」|ここが変わったWindows Vista 100連発!
ザックリ書くと、exFATはフラッシュドライブ向けに開発されたファイルシステムで、ファイルサイズの自由度が上がったり、ファイルの上書きや削除のパフォーマンス向上したりしています。(普通の書き込みではFAT32と違いは出ない感じです)
外部参考リンク2
フォーマット形式を変更してUSBメモリの速度測定したり、比較を行ったりしているWebサイト色々- USBメモリーを高速書き込みフォーマットに変換(exFATに変換)お得Web
- USB3.0対応のフラッシュメモリーに突撃 | トム様さんのもちものレビュー
- USBメモリ活用講座【基礎編・USBメモリの準備】
- 大容量USBメモリexFATを使う場合の注意点 | helog
あとがき
先月末から、過去記事「ReadyBoostを試した。USBメモリの転送速度を調べた。そして無駄な日を送った」のコメント欄が盛り上がっています。
この盛り上がりは、私の勉強不足と思い込みで「すごくいい加減な情報」を書いていたのが発端なので、とても威張れた話では無いのですが、、、色々とお勉強になり助かっています。
そして、該当ページに頂いたコメントの中で、
「USBメモリをフォーマットする際、exFATを使い、かつアロケーションユニットを変更すると(ReadyBoostの)速度の改善が見込める」的な情報を頂いたのが、このページを書く発端になっています。