TrueCryptの性能

アスケイドではセキュリティの観点からディスクの暗号化を規定していて、幾つかのソフトを評価したりもした。その結果、推奨ソフトを複数選んで、利用者が選択できるようにしている。その中の一つが TrueCrypt なのだけど、使用感は上々で、普通に使っている感じでは特別遅くなったような気もしない。実際、その性能はどんなもんなのかと思って測ってみた。

計測に使ったのは、FDBENCH Version1.01。Googleを「ベンチマーク HDD」で検索したら 「HDBENCH NET」が最初にあって、それのディスク計測専用に独立した(ようにみえる)ツールがこれ。作者さんありがとう。

使用したハードウェアは、以下のとおり。

Thinkpad T42p
CPU:  Pentium M 2.1GHz
Mem:  2.0GB
Disk: HTS721060G9AT00
MS WindowsXP Professional SP2

TrueCryptはパーティションではなくNTFS上のファイルコンテナ(10GB)を使用することとし、作成の前にはベースとなるディスクにデフラグをかけておきました。 それで実際に計測した結果がこれ。

FDBENCH 計測結果
  標準DRIVE TrueCrypt適用 TrueCrypt/標準
ReadWrite (MB/s) 21.426 20.6 96.1%
Read (MB/s) 34.293 28.381 82.8%
Write (MB/s) 25.806 29.207 113.2%
Random Read (MB/s) 11.832 12.841 108.5%
Random Write (MB/s) 13.774 11.971 86.9%
Copy total (MB/s) 8.808 13.758 156.2%
Copy 2K (MB/s) 0.148 1.118 755.4%
Copy 32K (MB/s) 1.496 5.795 387.4%
Copy 256K (MB/s) 10.072 21.085 209.3%
Copy variable (MB/s) 23.516 27.035 115.0%
Copy total (回数/分) 4107 19087 464.7%
Copy 2K (回数/分) 6672 50322 754.2%
Copy 32K (回数/分) 4188 16278 388.7%
Copy 256K (回数/分) 3522 7392 209.9%
Copy variable (回数/分) 2046 2358 115.2%

いやあ~、ホント!?

ちょっとあまりにもな数字が出たので、ちょっと他のソフトでも試してみることにした。 選んだのはCrystalDiskMark Version 1.0.2。ありがとう作者さん。

CrystalDiskMark 計測結果
  標準DRIVE (MB/s) TrueCrypt適用 (MB/s) TrueCrypt/標準
Sequential Read 34.624 28.807 83.2%
Sequential Write 27.321 29.434 107.7%
Random Read 512KB 20.24 15.591 77.0%
Random Write 512KB 13.303 13.42 100.9%
Random Read 4KB 0.915 0.989 108.1%
Random Write 4KB 1.495 1.359 90.9%

こっちの方がまだ予想に近い。 でも、明らかに通常よりも速い値が出ている項目も存在する。これらのベンチマークソフトの具体的な試験方法詳細がわからない(少なくとも私には見つけられなかった)ので、具体的なパターンを指摘することはできないものの、「利用状況によってはTrueCryptを使用したほうが速くなるケースがある」というのは確かなことのよう。

まったくもってすばらしいのだけど、ちょっと落とし穴があって、TrueCrypt無しの場合はCPU使用率が5%程度で一定なのだけど、有の場合は Sequential R/W で 75%, Random R/W(512KB) で 50%, Random R/W(4KB) で 7% 程度使用する。まさにI/Oによる処理データ量に応じてCPUが頑張っているということがわかる。まあ、これは予想の範囲。

CPU使用率については良いんだが、やはり「TrueCryptを使用したほうが速い事があるのはなぜか?」という疑問は残る。 普通に考えて、TrueCryptを適用した方が「余計な処理」をやっているはずだから遅くなるのが当然、と予想するのにもかかわらずそうでないケースが相当数ある。 まあ、とりあえず適当に書くと、

  • 一定以上のサイズのファイルを Sequential read する際は2割近く遅くなる。きっとこれが本来のオーバーヘッドではないか
  • Sequential write が速いのは、実はTrueCryptの仮想ディスクドライバは Syncしてないからでは?(ベンチマークソフトはSyncしてると思ってます)
  • TrueCryptは上手くキャッシュを使っている?(逆に今回のベンチマークソフトではデータアクセスに偏りがあってキャッシュの効果が大きく出ている可能性がある?)
  • 小さなサイズのデータ(ファイル?)を取り扱う場合に速いのは、TrueCryptの仮想ディスクが実はネイティブのFS上では1ファイルとなっているのがポイントで、ファイルのOPEN/CLOSEの負荷が低い?

などなど。

うーん、ベンチマークテストの詳細な処理内容がわからないし、やはりWindowsのディスク関連のアーキテクチャとTrueCryptの実装方式がちゃんとわかってないと駄目だわ。あと、プロファイルとか取ったりしたら面白そうだけど、そこまで時間無いし。気持ち悪いけどひよって、今回はここまでとします。

まあ、そんな訳で気持ち悪さは残るものの、(私の)通常の使用パターンだと、さほど大きくないファイルのRead/Writeが多いはずで、その範囲では性能劣化も無く(むしろ速い場合すらありえて)CPUもそれほど極端には使われずということになるので、体感的にも快適だったわけですな。やはりTrueCryptはお薦めです。