seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

AspireS3に搭載されているハイブリッドドライブ"ExpressCache"のメモリ浪費と有用性について調べてみた。

※ パフォーマンス計測を追加し内容も少し訂正しました。(2013/4/13)

ASUS Aspire S3とExpressCache

ASUSUltrabookである、Aspure S3-391を購入してもらった。

スペックは以下のとおりである。

このウルトラブック、どうも変だなぁ、と思いつつ、しばらく使っていたのだが、なにが変かというと、

  • Windows7を起動しただけでメモリ消費量が2GBを超えている。
  • 20GBのSSDがついているというけれど、どこにもマウントされていない。


それで、あらためて調べてみたわけである。


Aspire S3が、普通のPCとちょっと違うのは、やはり20GBのSSDがついていることであろう。

これは、

  • ハイバネート先
  • Condusiv Technologies社(Diskeeper)のExpressCache(いわゆるハイブリッドドライブ)

として使われているようである。


Express Cacheとは、いわゆる「ハイブリッドドライブ」というもので、日経(TechOn)の記事によると、
大容量のHDDと小容量のSDDを組み合わせて、疑似的にSSD並の高速なディスクを実現する、というもののようである。*1
このAspireS3では20GBのSSDのうち、15GB程度をExpressCache用に使用している。


すでにWindows Vista以降にはUSBフラッシュメモリを読み込み専用キャッシュとして用いるReadyBoostやSuperFetchなどがあるわけで、コンセプトとしては目新しいわけではない。

大容量のHDDだとしてもデータの使用頻度には局所性があり、とくに大部分は書き込みよりも読み込みが繰り返されるであろう、という想定であれば、よく読み込むプログラムデータ類はUSBフラッシュメモリや小型のSSDに格納することはパフォーマンスアップになるであろう。

特にプログラムのような小さなREADONLYなファイルが散らばっている場合はシーク時間のないフラッシュメモリSSDに入れるには非常に適している。

原理的には、おそらく、ExpressCacheも同様なものであると考えられる。


以下は、このExpressCacheが、どのような挙動を示すものであるのか、ちょっと調べてみたものである。

Aspire S3-391は4GB搭載だがOS起動時点で2.3GB消費している。

Asus Aspire S3を起動してみて、まず、最初に違和感を感じるのはメモリ使用量である。


上記のリソースモニタのキャプチャ画像は、起動後1分程度した状態のものである。

起動しただけで2.3GBものメモリを消費しており、搭載メモリ4GBの60%ほどを消費してしまっている。


ところが、上記キャプチャに見えるプロセスの消費メモリを見ても、メモリ食いのアプリがいるわけではない。

常駐しているサービス類も通常のWindows7と比較しても大差ない。


内規により、以下のセキュリティソフトはインストール済み、起動済みである。

Symantecはメモリ食いではあるが、とはいえ、この2つのソフトを入れているからといって、他のWindows7機も2.3GBもの消費である、といったことはない。

このマシン固有の事象である。

RAMMapによる使用メモリの調査

プロセス一覧に出てこない、プロセスが使用しているわけではないメモリ量については、
マイクロソフトのSysinternalsツールの一つ、"RAMMap"によって確認することができる。


RAMMapによる調査結果は、以下のようになった。


ここで際立っているのは、Nonpaged poolが1.2GBもの消費である、ということである。


Nonpaged-Poolとは、その名のとおりページングされないメモリであり、常に物理メモリが利用できないと不味いデバイスドライバなどで使われる。

つまり、この1.2GBもの物理メモリはデバイスドライバが予約している、と考えてよいだろう。


RAMMapでも、このNonpaged-Poolを使用しているデバイスドライバを確認することはできないのだが、
デバイスドライバだとわかってしまえば、このマシン固有のデバイスにあたりをつけることはできる。


通常、デバイスドライバは1.2GBもメモリを必要としない。

もし、そのようなメモリが必要な用途があるとしたらキャッシュであろうか?

ExpressCacheサービスを停止してみる。

実際のところ、何らかのデバイスドライバによって物理メモリが1.2GBも消費していると気が付くまでは、
このマシンにExpressCacheというソフトウェアがインストールされていた、ということを知らなかった。


ただ、その得体の知れない20GBのSSDが何に使われているのか考え直した結果、このマシンにはExpressCacheがインストールされており、
且つ、はじめから有効になっている、ということに気が付いたわけである。


それで、ためしに、このサービスを停止してみることにした。


これでマシンを再起動して、改めてメモリ使用量について確認したものが以下である。


起動後1分ほど経過した時点で、使用メモリは1.2GBにまで低下している。

これは他のWindows7マシンと大差ない消費量といえる。


RAMMapで確認しても、Nonpaged-Poolは200MBぐらいまでに大幅に縮小している。


これで、間違いなくExpressCacheが1.0GBぐらい消費していたことが明らかになった。

ExpressCacheのパフォーマンス

ExpressCacheが大変多くのメモリを要求すると分かったが、はたして、それに見合うパフォーマンスを提供してくれているのであろうか?

まずはディスクアクセス速度を測定するため、CrystalDiskMarkで簡単にベンチマークをとってみることにした。

ベンチマークの前提

前提として、まず、このUltrabookはFDE(ディスク暗号化)している。*2

したがって、ディスクアクセス時には必ずFDEドライバを経由することになる。

そのため、ディスクに対する直接アクセスとはパフォーマンス特性が異なることは容易に想像できる。


また、ExpressCacheは最大で1.0GBのキャッシュをもっている可能性があるため、
1GB程度のベンチマークではすべてオンキャッシュでの測定となってしまう可能性が考えられる。


そこで、100MBと2GBの2回にわけてベンチマークをとってみた。

ExpressCacheが無効な場合
[100MB]
           Sequential Read :   226.587 MB/s
          Sequential Write :    47.684 MB/s
         Random Read 512KB :   195.052 MB/s
        Random Write 512KB :    42.549 MB/s
    Random Read 4KB (QD=1) :     0.920 MB/s [   224.6 IOPS]
   Random Write 4KB (QD=1) :     1.308 MB/s [   319.4 IOPS]
   Random Read 4KB (QD=32) :     2.995 MB/s [   731.3 IOPS]
  Random Write 4KB (QD=32) :     1.178 MB/s [   287.5 IOPS]

[2GB]
           Sequential Read :    88.056 MB/s
          Sequential Write :    46.337 MB/s
         Random Read 512KB :    31.760 MB/s
        Random Write 512KB :    40.531 MB/s
    Random Read 4KB (QD=1) :     0.567 MB/s [   138.3 IOPS]
   Random Write 4KB (QD=1) :     1.034 MB/s [   252.4 IOPS]
   Random Read 4KB (QD=32) :     1.549 MB/s [   378.1 IOPS]
  Random Write 4KB (QD=32) :     1.011 MB/s [   246.9 IOPS]

100MBでシーケンシャルリードが226MB/sとか出ているのは、おそらくFDEソフトのキャッシュなのか、あるいはExpressCacheのドライバが生きているせいなのかわからないが、
いずれにしろ、何らかのドライバがもっているキャッシュによるもののではないか、と推測される。

(FDEを経由しているものの)、2GB時の88MB/sがディスクの素に近い速度ではないか、と推測される。


ExpressCacheはサービス無効にしただけで、ドライバや管理ソフトなどは生きているので管理コマンドeccmdで状態を確認できる。

EC Cache Info
==================================================
==================================================
Mounted                   : Yes
Partition Size            : 14.90 GB
Reserved Size             : 4.00 MB
Volume Size               : 14.90 GB
Total Used Size           : 12.74 GB
Total Free Space          : 2.16 GB
Used Data Size            : 12.66 GB
Used Data Size on Disk    : 12.73 GB

Tiered Cache Stats
==================================================
Memory in use             : 0 Bytes
Blocks in use             : 0
Read Percent              : 0.00%


Cache Stats
==================================================
Cache Volume Drive Number : 1
Total Read Count          : 220202
Total Read Size           : 31.61 GB
Total Cache Read Count    : 207558
Total Cache Read Size     : 25.77 GB
Total Write Count         : 95080
Total Write Size          : 19.37 GB
Total Cache Write Count   : 58173
Total Cache Write Size    : 9.84 GB

Cache Read Percent        : 81.53%
Cache Write Percent       : 50.81%

これによると、"Tiered Cache Stats"は0になっている。

これは、おそらく、物理メモリ上のキャッシュを示しており、現在はメモリを消費していないことがわかる。

なお、Total Used Sizeは、SSD上にキャッシュ済みのサイズである。

サービスを無効にしただけではキャッシュの内容はクリアされるわけではないとわかる。

ExpressCacheが有効な場合

今度はExpressCacheのサービスを有効にした状態で再起動して、再度、ベンチマークをとってみる。

ベンチマーク実施前のExpressCacheの管理コマンド"eccmd"による状態確認では、以下のとおり。

EC Cache Info
==================================================
==================================================
Mounted                   : Yes
Partition Size            : 14.90 GB
Reserved Size             : 4.00 MB
Volume Size               : 14.90 GB
Total Used Size           : 12.96 GB
Total Free Space          : 1.94 GB
Used Data Size            : 12.89 GB
Used Data Size on Disk    : 12.96 GB

Tiered Cache Stats
==================================================
Memory in use             : 992.00 MB
Blocks in use             : 0
Read Percent              : 0.00%


Cache Stats
==================================================
Cache Volume Drive Number : 1
Total Read Count          : 28638
Total Read Size           : 956.46 MB
Total Cache Read Count    : 28378
Total Cache Read Size     : 947.97 MB
Total Write Count         : 4586
Total Write Size          : 54.48 MB
Total Cache Write Count   : 2914
Total Cache Write Size    : 47.34 MB

Cache Read Percent        : 99.11%
Cache Write Percent       : 86.89%

"Tiered Cache Stats"によると、992MBのキャッシュが有効であり、実際に物理メモリは1GBほど消費されている。

しかし、中身は未使用状態のようである。

この状態でベンチマークをとってみる。

[100MB]
           Sequential Read :   209.780 MB/s
          Sequential Write :    46.617 MB/s
         Random Read 512KB :    24.707 MB/s
        Random Write 512KB :    40.629 MB/s
    Random Read 4KB (QD=1) :     0.425 MB/s [   103.7 IOPS]
   Random Write 4KB (QD=1) :     1.188 MB/s [   290.1 IOPS]
   Random Read 4KB (QD=32) :     1.097 MB/s [   267.9 IOPS]
  Random Write 4KB (QD=32) :     1.188 MB/s [   290.2 IOPS]

[2GB]
           Sequential Read :    61.150 MB/s
          Sequential Write :    47.409 MB/s
         Random Read 512KB :    29.474 MB/s
        Random Write 512KB :    43.677 MB/s
    Random Read 4KB (QD=1) :     0.499 MB/s [   121.9 IOPS]
   Random Write 4KB (QD=1) :     1.054 MB/s [   257.4 IOPS]
   Random Read 4KB (QD=32) :     1.359 MB/s [   331.9 IOPS]
  Random Write 4KB (QD=32) :     0.947 MB/s [   231.1 IOPS]

ExpressCacheを有効にしているにもかかわらず、ディスクのアクセス速度に変化は、ほとんどない。

全体的に若干、遅くなっているようにも見える。


ExpressCacheが内部的にどのような処理をしているかはわからないが、
物理メモリとSSDをキャッシュとして使う戦略であれば、キャッシュが効いてくるまでは効果がでないのは当然であろうか。


ベンチマーク実施後のExpressCacheの状態は以下のようになっていた。

EC Cache Info
==================================================
==================================================
Mounted                   : Yes
Partition Size            : 14.90 GB
Reserved Size             : 4.00 MB
Volume Size               : 14.90 GB
Total Used Size           : 12.49 GB
Total Free Space          : 2.41 GB
Used Data Size            : 12.41 GB
Used Data Size on Disk    : 12.48 GB

Tiered Cache Stats
==================================================
Memory in use             : 992.00 MB
Blocks in use             : 7863
Read Percent              : 0.76%


Cache Stats
==================================================
Cache Volume Drive Number : 1
Total Read Count          : 158917
Total Read Size           : 23.79 GB
Total Cache Read Count    : 146851
Total Cache Read Size     : 12.69 GB
Total Write Count         : 88290
Total Write Size          : 19.28 GB
Total Cache Write Count   : 30257
Total Cache Write Size    : 4.75 GB

Cache Read Percent        : 53.35%
Cache Write Percent       : 24.62%
ExpressCacheが有効のまま、もう一度再起動してベンチマークをとってみる。
[100MB]
           Sequential Read :   507.048 MB/s
          Sequential Write :    46.507 MB/s
         Random Read 512KB :  2330.169 MB/s
        Random Write 512KB :    43.582 MB/s
    Random Read 4KB (QD=1) :   172.572 MB/s [ 42131.9 IOPS]
   Random Write 4KB (QD=1) :     1.233 MB/s [   301.1 IOPS]
   Random Read 4KB (QD=32) :   609.741 MB/s [148862.4 IOPS]
  Random Write 4KB (QD=32) :     1.224 MB/s [   298.9 IOPS]

[2GB]
           Sequential Read :    77.189 MB/s
          Sequential Write :    47.960 MB/s
         Random Read 512KB :    33.863 MB/s
        Random Write 512KB :    41.943 MB/s
    Random Read 4KB (QD=1) :     0.597 MB/s [   145.7 IOPS]
   Random Write 4KB (QD=1) :     0.978 MB/s [   238.9 IOPS]
   Random Read 4KB (QD=32) :     1.624 MB/s [   396.5 IOPS]
  Random Write 4KB (QD=32) :     0.898 MB/s [   219.4 IOPS]

キャッシュの本領発揮の様子である。

100MBのシーケンシャルリードで500MB/s、512KBのランダムリードで2330MB/sという驚異的な数字を出している。

ランダムリードの爆速は、どう見てもSSDの速度ではなくて、1.0GB近くも消費してくれている物理RAMをRAMDiskとして使った速度であろう。


100M, 2GBともに書き込みについては大差ない。書き込みはExpressCacheによって速くなることはなさそうである。


※ もしかするとディスク暗号化しているため、ExpressCacheが十分に機能していない、という可能性も否定はできないのだが。


実験してみた感じでは、上記の例のように、ExpressCacheを有効にしても効果があらわれるのは数度の再起動後になることが多いようである。

また、ExpressCacheが有効であっても十分にキャッシュされていない状態、たとえば管理コマンドeccmdでキャッシュ領域をformatでクリアした直後などは、効果がでない。

効果がでない = キャッシュさてれいない状況では、"Tiered Cache Stats"で示される物理メモリの消費量も少なく、
キャッシュが増えるにつれて増加するような挙動が見受けられた。

したがって、ExpressCacheが有効ならば常に1GBメモリが消費される、というわけではないようである。

ExpressCacheが効いた状態のパフォーマンスの計測 (2013/4/13追記)

上記のハードディスクのアクセス速度の測定は、ExpressCacheの真髄であるキャッシュの効果については測定できていない。

ExpressCacheは、よく使われるプログラムファイルなどをSSDにキャッシュすることで読み込みを高速化するための技術であり、
そもそも大容量のデータの読み書きを想定したものではない。


キャッシュされたファイルのアクセス速度も計測しなければ、その有益性について評価することはできないだろう。

Windows7の起動時間の測定

ExpressCacheによってキャッシュされることで、どのぐらいの効果があるのか、Windows7の起動時間をストップウォッチで測定してみた。

ExpressCacheはドライバであり、OSの各種プロセスよりも先に機能をはじめて、OS自身のロードにも使われる。*3

そのため、ExpressCacheが有効であれば、Windows7の起動時間も短縮される、というのがExpressCacheのウリでもある。


以下が、その測定結果である。

測定 ExpressCache有効 ExpressCache無効
1回目 32秒 85秒
2回目 30秒 88秒
3回目 30秒 90秒
4回目 29秒 86秒
5回目 31秒 84秒

上記秒数は、FDEソフトのパスワードを入力しシングルサインオンを実行してから、Windows7のデスクトップ画面が開いてマウスのウェイトカーソルが消えるまでの時間である。


結果は歴然で、ExpressCacheが有効であればWindows7は30秒程度で起動し、無効である場合と比較して3倍速ぐらいの高速化がされているといえる。

起動に関しては、ExpressCacheは、まちがいなく、その効果がある。


正直、ここまで開くとは実際に計測するまで予想もしていなかった。


もちろん、Windowsを何度か起動することでExpressCacheに十分にキャッシュされている状態での測定である。

また、無効な状態では、ExpressCacheのキャッシュをクリアした状態での計測である。

任意のファイルに対する読み込みキャッシュの効果

OSの起動ファイルだけでなく、ランダムな1GBぐらいのユーザデータを作成し、その読み込みについての効果を測定してみることにした。


しかし、1GBのファイルを作成して何度か読み込んでみたが、ExpressCacheには、なかなかキャッシュされる気配がない。

どうやら、簡単にキャッシュに入れてくれるわけではなさそうである。

内部のアルゴリズムがどうなっているかはわからないが、使用頻度やファイルサイズでキャッシュにいれる優先度があるのだろう、とは推測される。


そこで、管理コマンドeccmdで強制的にキャッシュにプリロードしてみた。

eccmd -preload c:\users\seraphy\Downloads\test.dat

このプリロード処理には時間がかかる。

このマシンでは1GBのデータをキャッシュさせるのに、2〜3分ぐらいかかった。

キャッシュされたことは、eccmd -infoで、Total Used Sizeが増えていることでわかる。

ただし、その増え方もファイルサイズよりもかなり大きく増えているため、SSDには管理情報のようなものもついているのかもしれない。


この状態で、ファイルのCRC32を計算させる自作アプリを動かして読み込み時間を測定することとする。


読み込み時間以外にもCRC32の計算時間や、また、このソフトはお手製のやっつけアプリなのでパフォーマンスにも優れているわけではないが、
ディスク読み込みを多用する一般的なアプリなら、どのくらい高速化されるのかを比較する分には使えるだろう。


ただし、テストには少し工夫を行う必要があった。

アプリを実行してファイルを読み込むとWindows7のファイルキャッシュに乗ってしまうため、二回目以降がオンメモリになり爆速化してしまうためである。

これではExpressCacheのパフォーマンスを計測できないため、1回テストするごとにOSのキャッシュを強制的にクリアさせることにした。

とはいっても、Windowsには、そのようなファイルキャッシュをクリアするためのコマンドは存在しないので、空きメモリを使いきることでクリアさせるようにした。


具体的には、ファイル読み込みテスト後にはメモリ状態は以下のようになる。

このスタンバイの部分がファイルキャッシュである。

この状態で、空きメモリ + スタンバイのメモリを使いきるようなメモリ浪費アプリを実行する。

そうすると、キャッシュが追い出されて、

のようになる。


※ ただし、後述するようにExpressCacheはメモリが足りなくなると自分のキャッシュをOSに返却するため、ExpressCacheに影響を与えないように、利用可能な物理メモリ以上を消費しないように注意する必要がある。


この状態で、ExpressCacheにキャッシュされている状態と、キャッシュクリア後の結果は以下のようになった。

回数 キャッシュ後 キャッシュクリア後
1回目 3821ms 19284ms
2回目 3918ms 18497ms
3回目 4465ms 19018ms
4回目 5056ms 19530ms
5回目 4855ms 18294ms
速度 231MB/s 54MB/s

ExpressCacheにキャッシュされている状態では、1GBのファイルの読み込みに4秒程度、キャッシュされていない状態と比較すると4倍速ぐらいの高速化になっている。

たしかに、ExpressCacheにキャッシュされていれば、かなりの高速化が見込まれるのは確かなようである。


なお、ExpressCacheのサービスを停止させた状態であっても、キャッシュクリアしないかぎり高速な動きを見せた。

すでにSSDにキャッシュされている分についてはサービスが停止していても機能しているようにも見える。

(これは推測であるが、もしかするとExpressCacheのサービスはキャッシュへの書き込み用であり、その使用メモリは、ライトキャッシュ用で、使用頻度が高いと認められたファイルをSSDに転送するまでのバッファとして使っているのかもしれない。)

ExpressCacheのキャッシュクリアの方法

ExpressCacheのSSD上のキャッシュをクリアするには

eccmd -format

とすればよい。

一瞬で終わる。

これで管理情報がクリアされ、キャッシュが空の状態になる。

(ただし、SSDに書き込まれたデータを0で塗りつぶすなどの処置はされていないことに注意。)

ExpressCacheは本当にメモリ食いなのか?

ExpressCacheはパフォーマンス的には効果がありそうだということは分かった。

しかし、問題なのは、ExpressCacheが有効であると、起動するだけで1.0GBも余分にメモリが消費されることである。


4GBモデルのWindows7なら起動後には3GB近くは空きがあるかな、と期待していた人間からすると、
起動時点で残り1.6GBしかないと、正直、メモリ食い過ぎじゃないか、と懸念するところである。

もし本来アプリが使うべきメモリが足りずにページアウトが発生するようでは、パフォーマンス的には本末転倒である。


しかし、ExpressCacheについて調べていたところ、とても興味深い記事をみつけた。

http://forums.lenovo.com/t5/IdeaPad-Y-U-V-Z-and-P-series/Any-Documentation-of-ExpressCache/td-p/1040355

4. ExpressCache's -info command identifies 1024.0 MB of memory in use. That's 1 GB!
However Task Manager shows a more modest 8 MB.
Which is correct? How does a user balance memory usage with cache performance?


Answer: There currently is no method for the user to "balance" memory usage.
This is performed automatically by ExpressCache's algorithms.
ExpressCache will calculate available memory and utilize up to 1.5GB when it is available.
If the system needs to use the memory, ExpressCache will return it to the memory pool for the system to be able to use.
This is performed in background with no performance impact.

32bit systems will be limited to 768MB of this tiered caching feature.
The "-info" data is a snapshot in time and is always considered to be the most accurate representation of the the amount of memory that
ExpressCache is utilizing for the tiered caching feature.

これによると、どうやら物理メモリが要求されると必要に応じてExpressCacheはNonpaged-poolに確保したメモリをシステムに返却してくれるようである。

これなら、1.6GBの空き + "1.0GB分は空いている" = 2.6GB近くは空いているとみなしても大丈夫かもしれない。


ということで、実験として、メモリを確保するだけの単純なアプリjavaで書いてみた。*4

実験

メモリ浪費アプリを実行する。

java -Xmx4000m -cp . MemFill 3000

上記により、3GB(3000*1024*1024)の確保を実施した場合、メモリ使用量はリソースモニタでは以下のようになった。


起動前は空きメモリが1.6GBしかなかったにもかかわらず、javaプロセスが3GB以上メモリを確保できていることがわかる。
(ページアウトできる他のプロセスはページアウトされた状態になっている。)

この状態でのRAMMapを確認すると、以下のようになっていた。


ExpressCacheが無効にされた場合と同様に、Nonpaged-Poolが200MB程度まで縮退しているのがわかる。


つまり、先のフォーラムの記事にあったとおり、
ExpressCacheは物理メモリが必要になった場合には使用しているキャッシュをOSに解放する
という動きは間違いないようである。


また、このjavaプロセスを終了すると、以下のように、ふたたびキャッシュ領域が再確保されることが確認された。

そのほかの注意点

ExpressCacheについて調べていたら、以下のような注意点があることも分かった。

ディスク暗号化していてもExpressCacheのSSDは暗号化されない。

"ExpressCache ソフトウェアがディスクの暗号化と互換性がない"

SSDのキャッシュを暗号化することはできない様子で、暗号化されていないデータをSSDに入れたくない場合は、
ExpressCacheを使わない、とするしかないようである。

ダイナミックスディスクには対応していない。

"ExpressCache 「キャッシュの使用部分」が0.07GBに固定される"


ダイナミックディスクには機能しないので、ExpressCacheを入れても意味はない。
(この場合は無効にするかアンインストールするのが良い。)

結論

  • ExpressCacheは有益である。(必需というほどではない、かも。)
    • とくにOS起動時間が速くなるのは、かなりのメリットかもしれない。
    • SSD、物理メモリをキャッシュとするため、場合によっては、とても速くなる
    • キャッシュに当たらない場合、および書き込み時でも通常程度の速度は出る。(害にはならない。)
  • ExpressCacheがキャッシュ使用する物理メモリは、必要に応じて返却されるため、実質空きメモリは1.0GB増しで見てよい。
    • タスクマネージャやリソースモニタで不明な消費メモリ量として見えるのが難点。
  • Full Disk Encryptionを使用していてもExpressCacheは機能する。
    • ただし、ExpressCacheが使うキャッシュ用SSDは暗号化されていない。
  • メモリ消費が気になる場合はサービスを無効にすればよい。
    • 無効にした場合でも、ただのHDDのパフォーマンスとなるだけである。
    • eccmdという管理ツールによりキャッシュ状況の確認や、キャッシュクリアなどが可能である。

ExpressCacheは有害ではなく、むしろ有益のようなので"あっても良い"とは思われる。

しかしながら、絶対になくてはならないわけではなく、仮に"なくても問題ない"ような機能程度ともいえる。

パフォーマンスには効果があるのは間違いないが、ないからと言って死ぬほど遅くなるわけではない。
(そもそも、わずか15GBのキャッシュ領域にヒットしなかった場合でも同じことである。)


ただし、暗号化については場合によっては致命的な弱点となると思われる。


以上、メモ終了。

*1:Intelでは、"Smart Response Technology"、Appleなら"Fusion Drive"など、各社、似たコンセプトの製品を出しているようである。

*2:FDEはパフォーマンス的にはオーバーヘッドになるが、これは持ち出し可能なPCには絶対に必要であり、ExpressCacheよりもよほど重要で優先度が高い。

*3:ReadyBoostはセキュリティのため毎起動ごとに暗号化キーが変更され内容が破棄されるものとは対照的に、ExpressCacheでは、そもそも暗号化しておらず、且つ、電源が切れてもキャッシュは維持されるため、このようなことが可能であるようである。

*4:私の古い記憶によると、以前は、java -Xms512m ... のように指定すると起動時に512MBのメモリを確保しようとし、できなければエラーになっていたと思うのだが、今回、java7(x64)で試したところ、-Xms2048mと指定しても2GBを起動時に確保することなくなっていた。実際にnew byte[xxx]としないとメモリをコミットしないようである。