SuperfetchとPrefetchについて~(1)
一、
Superfetchという機能は、XPに搭載されていたPrefetchの機能を拡張するものとしてVistaから採用され、両々相俟ってプログラムの起動を高速化する働きを持つとされる。しかし、WindowsにあってSuperfetchほど毀誉褒貶相半ばする機能も珍しい。その働きと効用がなかなか分かりづらいことが、我々利用者を混乱させているのかもしれない。
SuperfetchとPrefetcherについて私には正確な知識がなかったので、改めて調べてみた。
Technet Magazineの"Inside the Windows Vista Kernel: Part 2"でMicrosoftのTechnical FellowであるMark Russinovichは、「Windows XPには、以前のOS起動やアプリケーションの開始に基づき、予測されるコードやファイル・システムのデータをメモリに予め読み込んでおいてディスクに対する大きな入出力を行なうことにより、OS起動やアプリケーションのスタートアップのパフォーマンスを向上させるPrefetchというサポートを導入した」と述べ、Vistaでは「時間経過に伴う情報や先取り的なメモリ・マネージメントによって、アクセス頻度の最も低いものから順次追い出すというアプローチを強化したメモリ・マネージメントの仕組み」であるSuperfetchを採用した、と言う。
続けて以下のように説明する。
Superfetchは、Service Host processの内部で実行されるWindowsサービスとして実装され、メモリ・マネージャにディスク上のファイルやページングファイルからスタンバイ・リストにデータやコードを予め読み込むように指示し、ページに優先度を割り振るためだけでなく(メモリ・マネージャは優先順位を8段階に分ける)、ページの使用履歴を検索するするためにも、メモリ・マネージャの助けを借りる仕組みになっている。このサービスは、基本的には以前メモリ内に存在していたが、新たなデータやコードに空きを作るために再移動されたデータやコードにまでページ追跡機能を拡張するものである。その情報は、Prefetchのディレクトリ内にアプリケーションの起動を最適化するために用いられる通常のPrefetchファイルと並んで、拡張されたデータベースと共にシナリオ・ファイルとして保存される。このようなメモリ使用の詳細な情報を元にして、Superfetchは、物理メモリが利用可能になった時に、データやコードを事前に読み込むことができるのである。
このメモリ使用の情報には、使用した曜日や時間帯も含まれていると言われており、Superfetchはユーザの細かなメモリ使用状況に配慮するものとなっているようである。
Superfetchは、この概要を見る限りは、何ら問題のない実に素晴らしい機能に思える。
また、アプリケーションが終了しあるいはメモリを解放した時、Superfetchはメモリ・マネージャに追い出されたばかりのデータやコードを取りに行くように指示を出すのだが、これは、メモリへの事前の読み込みがユーザや他の使用中のアプリケーションに影響を与えないように、優先度の非常に低い入出力操作によって毎秒数ページの割合で実行される、と説明されている。
しかし、このような振る舞いをするSuperfetchは、Vistaのあまりに鈍い動作に憤懣やるかたないユーザによって槍玉に挙げられることになったのであろう。実際、使用状況やPC環境によっては、ディスクへの異常なアクセスが発生する場合があるようである。
二、
Windows 7の登場に伴い、Superfetchも改良が加えられたようである。その一つがSSDへの対応である。
"Support and Q&A for Solid-State Drives"(Engineering Windows 7 - MSDN Blogs)によると、SSDを備えた大部分のシステムにおいては、Superfetchは無効になるとされる。
「システムディスクがSSDであり、さらにそのSSDがランダムリードにおいて適切なパフォーマンスを有し、ランダムライト又はフラッシュに甚だしいパフォーマンス上の問題がないならば、Superfetch、OS起動時のprefetch、アプリケーション起動のprefetch、ReadyBoost及びReadDriveは全て無効となる。
当初は、全てのSSDにおいてこれらの機能の全てを無効とする設定にしていたが、しかし、いくつかのシステムにおいてかなりのパフォーマンスの後退に見舞われることになった。それらの後退を引き起こす原因について、初期のSSDの中には最終的に長時間にわたってディスクの読み出しがブロックされるという事態に至るほどの重大なランダムライト及びフラッシュ上の問題を抱えるものがあることが分かった。Superfetchと他のprefetchを再び有効にしてみると、大筋においてパフォーマンスは著しく改善した」と、そこには記載されている。
これについては、"Performance Testing Guide for Windows"というペーパーに、「Windows 7では、SuperfetchはWindowsエクスペリエンス・ディスク・スコアが低いディスクに対しては自動的に有効となり、高いスコアのディスクに対しては無効となる」とも説明されている。
そもそも物理メモリとHDDとの入出力の速度の差が大きいことから、PrefetcherないしSuperfetchという機能が求められたのであり、物理メモリほどではないにしろ、HDDに比べランダムリード及びライトが格段に速いSSDでは、それほど効果は得られないということなのであろう。
ここで問題となるのは、それらの有効・無効をWindowsが自動で判断すると言うが、果たして適切にそれが行なわれているのであろうか、ということである。つまり、Superfetch等の機能を無効にしても問題のないSSDに対して有効にしている場合があるのではないか、ということである。
これについては、TechNetのForumに"SSD and Windows 7"と題されたスレッドがあった。
スレ主は、IntelのSSDにWindows 7 x64をインストールしたが、Superfetch等の機能が停止されておらず、なぜかWindows 7が私のSSDをSSDと認識していないと言う。Windows 7のバグではないか? Microsoftにそう問いただした。
Microsoft側はこう答えている。
「これらの機能は、SSDであるシステム・ディスクにおいては無効となります。そのディスクがシステム・ディスクでない場合には、そのブログ(Wikipediaの"Solid-state drive"を指す)の記述にあるようにパフォーマンスを改善するために再度有効にされます。Windows 7にうまくSSDをサポートさせるには、ファームウェアをアップグレードした方がよいでしょう」と。
「私のファームウェア? 私の全てのSSDについてはTrimとともにIntelの最新のファームウェアにしています。なぜWindows 7は私のシステム・ディスクをSSDと認識しないのか?」とスレ主。
その後、Microsoftは、再びファームウェアのアップデートとToolboxのインストールを勧め、スレ主は、既にファームウェアは最新のものだと前にも述べている、と苛立ち始める。
「あなたはIntelに情報を求めるべく連絡を取りましたか? このSSDは現時点ではWindows 7でサポートされていないかもしれません。」
「Intelとは連絡を取っていないし、Intel側がWindows 7とこのディスクについてあなた以上に知っているとは限らない。」
「前に申し上げたように、システムが問い合せた時にドライブがSSDであると適切に報告を返さないドライブが多く存在し、そのためWindowsがそれらのドライブに対してSSDの最適化を適切に適用することができないのです。あなたは、製造者に正確な情報を得るために連絡を取る必要があります。さらに、あなたがPCに3台のSSDをインストールしていることに気が付きました。どうかSSDを1台だけ接続して、それがSSDとして検知され、正確にSSDの最適化が適用されるかみてください。」
これがMicrosoft側からの最後の返信である。
「問題はWindows 7にある」とするスレ主は、「SSDに問題あり」とするMicrosoftと平行線をたどったまま、二度と応ずることのなかったMicrosoftに憤りつつ、1年3か月以上の長きにわたって続いたスレッドでその鬱憤を、気に入らぬ書き込みをした者に時折ぶつけていたようである。
煎じ詰めれば、Windows 7はSSDをSSDとして検知しない場合があり、その場合はSuperfetch等の機能は有効のままであるから、それらの機能を不要と考えるならば、手動で無効にするほかない、ということになろう。
我がPCはといえば、システム・ディスクとして2台のSSDをRAID 0にしてあり、Windowsエクスペリエンス・インデックスのプライマリハードディスクのスコアは7.9の最高値であるのだが、やはりSSDとして検知しなかったようで、Superfetch等は有効のままであった。
三、
さて、SSD2台をRAID 0にしてWindows 7 SP1 64bitをインストールしてある我がPCは、SuperfetchやPrefetcherを無効にすべきか、有効のままにしておくべきか。
関連するPC環境は、
SSD : Crucial m4 CT128M4SSD2(128GB)×2 RAID 0
Memory : CFD T3U1333Q-2G (2GB 3枚組) 計6GB
である。
まず、Superfetchの設定には、[コントロールパネル]⇒[管理ツール]⇒[サービス]から[Superfetch]の右クリックで[プロパティ]⇒[スタートアップの種類]の[自動](有効)又は[無効]を選ぶという方法がある。このサービスは「Superfetch」という名称であるが、prefetchするためのデータベースや「.pf」ファイルを作成する機能を管理しているようなので、これを無効にすると、SuperfetchのみならずPrefetcherの機能も停止することになるから注意を要する。
また、レジストリを操作することにより、SuperfetchとPrefetcherの有効・無効を個別に設定することができ、しかも、それぞれの適用場面を、大まかではあるが、変えることができる。これについては、Microsoft Answersに解説がある(「SuperFetch がキャッシュするアプリケーションやファイルを設定することはできますか?」)。
regedit.exeを起動し、[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters]までたどり、その中にある[EnablePrefetcher]と[EnableSuperfetch]の右クリックの[修正]で値を「0」~「3」のいずれかに変更して、適用場面を変えることができると、そこにある。それぞれの値の意味は次の通りである。
「0」:キャッシュを無効にする。
「1」:キャッシュがユーザの実行したアプリケーションにのみ適用される。
「2」:キャッシュが起動ファイル(システム・ファイル、サービス、スタートアップ・プログラム等)にのみ適用される。
「3」:全てをキャッシュする(デフォルト)。
Prefetcherに関しては、デフォルトの「3」のままで通常は問題ないようである。SSDの場合でも有効でよいのではなかろうか。
問題は、Superfetchをどうするかである。
「0」の無効にしてしばらく使ってみたが、アプリケーションの立ち上がりに時間がかるようになった。例えば、Photoshop CS5の起動に、「3」の全て有効の場合には3秒ほどしかかからなかったが、無効にした場合は7~8秒かかるのである。SSDであってもやはり、Superfetchの効果は充分に認められるので、再び「3」に戻すことにした。
ところが、大量のデータを長時間処理し続けると、突如一つ一つの操作に極端に時間がかかるようになり、PC全般の反応が鈍くなるのである。これは、スラッシングに陥っている状態なのであろうか、あるいはスラッシングには至っていないがページ・フォールトが頻発している状態なのであろうか。いずれにしろ、メモリ不足が生じているのは確かである。 「Superfetchは予め読み込まれたページをシステムのスタンバイ・リストに追加するが、そのスタンバイ・リストは長期にわたってメモリに有益なデータを保持するように再編成され、再設計されて」("Performance Testing Guide for Windows")おり、「Superfetchは、キーボード又はマウスからのインプットが少なくとも1分間に1回行なわれる限り、システムを監視する」(同書)とされているから、キーを叩きマウスをクリックし続けている限り、Superfetchはシステムを監視し続けることになる。このような働きをするSuperfetchは、PCが重くなる要因の一つと考えられているようであり、このような現象を避けるためとして無効を選ぶ人もいるようである。
まさに痛し痒しである。Superfetchを有効にするにしても、「起動ファイルのみ」かあるいは「アプリケーションのみ」にして、何とかその効用と弊害のバランスをとろうとする人もいるのである。
ここで注意すべきことは、SuperfetchやPrefetcherの設定の変更、あるいはアプリケーションのアンインストールなど、システム上重要な変更を行なった場合には、C:\Windows\Prefetchフォルダ内のReadyBootフォルダを除く全てのファイルを削除すべきである、ということである(前掲Microsoft Answers、"Performance Testing Guide for Windows"参照)。再起動後に改めてSuperfetch及びPrefetchファイルが再構築されることになる。
また、Superfetchの設定をどうするかを検討する際に、もう一つ考慮すべきことがある。メモリの容量である。
当初、それほどメモリは必要なかろうと判断して6GB(2GB×3)にしていたが、もう一組6GBを追加して計12GBにすることにした。メモリを増量すれば、メモリ・マネージメントに余裕をもたせることができ、Superfetchの働きに有益にこそなれ、不利益になることはなかろう、と考えたからである。
取り敢えず、メモリを12GBにし、Superfetch、Prefetcherともに「3」の全て有効にして様子をみることにする。
※【この続きは「SuperfetchとPrefetchについて~(2)」を御覧下さい。】
Superfetchという機能は、XPに搭載されていたPrefetchの機能を拡張するものとしてVistaから採用され、両々相俟ってプログラムの起動を高速化する働きを持つとされる。しかし、WindowsにあってSuperfetchほど毀誉褒貶相半ばする機能も珍しい。その働きと効用がなかなか分かりづらいことが、我々利用者を混乱させているのかもしれない。
SuperfetchとPrefetcherについて私には正確な知識がなかったので、改めて調べてみた。
Technet Magazineの"Inside the Windows Vista Kernel: Part 2"でMicrosoftのTechnical FellowであるMark Russinovichは、「Windows XPには、以前のOS起動やアプリケーションの開始に基づき、予測されるコードやファイル・システムのデータをメモリに予め読み込んでおいてディスクに対する大きな入出力を行なうことにより、OS起動やアプリケーションのスタートアップのパフォーマンスを向上させるPrefetchというサポートを導入した」と述べ、Vistaでは「時間経過に伴う情報や先取り的なメモリ・マネージメントによって、アクセス頻度の最も低いものから順次追い出すというアプローチを強化したメモリ・マネージメントの仕組み」であるSuperfetchを採用した、と言う。
続けて以下のように説明する。
Superfetchは、Service Host processの内部で実行されるWindowsサービスとして実装され、メモリ・マネージャにディスク上のファイルやページングファイルからスタンバイ・リストにデータやコードを予め読み込むように指示し、ページに優先度を割り振るためだけでなく(メモリ・マネージャは優先順位を8段階に分ける)、ページの使用履歴を検索するするためにも、メモリ・マネージャの助けを借りる仕組みになっている。このサービスは、基本的には以前メモリ内に存在していたが、新たなデータやコードに空きを作るために再移動されたデータやコードにまでページ追跡機能を拡張するものである。その情報は、Prefetchのディレクトリ内にアプリケーションの起動を最適化するために用いられる通常のPrefetchファイルと並んで、拡張されたデータベースと共にシナリオ・ファイルとして保存される。このようなメモリ使用の詳細な情報を元にして、Superfetchは、物理メモリが利用可能になった時に、データやコードを事前に読み込むことができるのである。
このメモリ使用の情報には、使用した曜日や時間帯も含まれていると言われており、Superfetchはユーザの細かなメモリ使用状況に配慮するものとなっているようである。
Superfetchは、この概要を見る限りは、何ら問題のない実に素晴らしい機能に思える。
また、アプリケーションが終了しあるいはメモリを解放した時、Superfetchはメモリ・マネージャに追い出されたばかりのデータやコードを取りに行くように指示を出すのだが、これは、メモリへの事前の読み込みがユーザや他の使用中のアプリケーションに影響を与えないように、優先度の非常に低い入出力操作によって毎秒数ページの割合で実行される、と説明されている。
しかし、このような振る舞いをするSuperfetchは、Vistaのあまりに鈍い動作に憤懣やるかたないユーザによって槍玉に挙げられることになったのであろう。実際、使用状況やPC環境によっては、ディスクへの異常なアクセスが発生する場合があるようである。
二、
Windows 7の登場に伴い、Superfetchも改良が加えられたようである。その一つがSSDへの対応である。
"Support and Q&A for Solid-State Drives"(Engineering Windows 7 - MSDN Blogs)によると、SSDを備えた大部分のシステムにおいては、Superfetchは無効になるとされる。
「システムディスクがSSDであり、さらにそのSSDがランダムリードにおいて適切なパフォーマンスを有し、ランダムライト又はフラッシュに甚だしいパフォーマンス上の問題がないならば、Superfetch、OS起動時のprefetch、アプリケーション起動のprefetch、ReadyBoost及びReadDriveは全て無効となる。
当初は、全てのSSDにおいてこれらの機能の全てを無効とする設定にしていたが、しかし、いくつかのシステムにおいてかなりのパフォーマンスの後退に見舞われることになった。それらの後退を引き起こす原因について、初期のSSDの中には最終的に長時間にわたってディスクの読み出しがブロックされるという事態に至るほどの重大なランダムライト及びフラッシュ上の問題を抱えるものがあることが分かった。Superfetchと他のprefetchを再び有効にしてみると、大筋においてパフォーマンスは著しく改善した」と、そこには記載されている。
これについては、"Performance Testing Guide for Windows"というペーパーに、「Windows 7では、SuperfetchはWindowsエクスペリエンス・ディスク・スコアが低いディスクに対しては自動的に有効となり、高いスコアのディスクに対しては無効となる」とも説明されている。
そもそも物理メモリとHDDとの入出力の速度の差が大きいことから、PrefetcherないしSuperfetchという機能が求められたのであり、物理メモリほどではないにしろ、HDDに比べランダムリード及びライトが格段に速いSSDでは、それほど効果は得られないということなのであろう。
ここで問題となるのは、それらの有効・無効をWindowsが自動で判断すると言うが、果たして適切にそれが行なわれているのであろうか、ということである。つまり、Superfetch等の機能を無効にしても問題のないSSDに対して有効にしている場合があるのではないか、ということである。
これについては、TechNetのForumに"SSD and Windows 7"と題されたスレッドがあった。
スレ主は、IntelのSSDにWindows 7 x64をインストールしたが、Superfetch等の機能が停止されておらず、なぜかWindows 7が私のSSDをSSDと認識していないと言う。Windows 7のバグではないか? Microsoftにそう問いただした。
Microsoft側はこう答えている。
「これらの機能は、SSDであるシステム・ディスクにおいては無効となります。そのディスクがシステム・ディスクでない場合には、そのブログ(Wikipediaの"Solid-state drive"を指す)の記述にあるようにパフォーマンスを改善するために再度有効にされます。Windows 7にうまくSSDをサポートさせるには、ファームウェアをアップグレードした方がよいでしょう」と。
「私のファームウェア? 私の全てのSSDについてはTrimとともにIntelの最新のファームウェアにしています。なぜWindows 7は私のシステム・ディスクをSSDと認識しないのか?」とスレ主。
その後、Microsoftは、再びファームウェアのアップデートとToolboxのインストールを勧め、スレ主は、既にファームウェアは最新のものだと前にも述べている、と苛立ち始める。
「あなたはIntelに情報を求めるべく連絡を取りましたか? このSSDは現時点ではWindows 7でサポートされていないかもしれません。」
「Intelとは連絡を取っていないし、Intel側がWindows 7とこのディスクについてあなた以上に知っているとは限らない。」
「前に申し上げたように、システムが問い合せた時にドライブがSSDであると適切に報告を返さないドライブが多く存在し、そのためWindowsがそれらのドライブに対してSSDの最適化を適切に適用することができないのです。あなたは、製造者に正確な情報を得るために連絡を取る必要があります。さらに、あなたがPCに3台のSSDをインストールしていることに気が付きました。どうかSSDを1台だけ接続して、それがSSDとして検知され、正確にSSDの最適化が適用されるかみてください。」
これがMicrosoft側からの最後の返信である。
「問題はWindows 7にある」とするスレ主は、「SSDに問題あり」とするMicrosoftと平行線をたどったまま、二度と応ずることのなかったMicrosoftに憤りつつ、1年3か月以上の長きにわたって続いたスレッドでその鬱憤を、気に入らぬ書き込みをした者に時折ぶつけていたようである。
煎じ詰めれば、Windows 7はSSDをSSDとして検知しない場合があり、その場合はSuperfetch等の機能は有効のままであるから、それらの機能を不要と考えるならば、手動で無効にするほかない、ということになろう。
我がPCはといえば、システム・ディスクとして2台のSSDをRAID 0にしてあり、Windowsエクスペリエンス・インデックスのプライマリハードディスクのスコアは7.9の最高値であるのだが、やはりSSDとして検知しなかったようで、Superfetch等は有効のままであった。
【追記】:CrucialのC300(64GB)、1台をシステム・ディスクにしたWin7(32bit)機では、SSDが認識され、Microsoftが言うようにSuperfetchのサービスは自動的に停止されている。RAIDの場合はSSDであってもSSDと認識されないようである。
三、
さて、SSD2台をRAID 0にしてWindows 7 SP1 64bitをインストールしてある我がPCは、SuperfetchやPrefetcherを無効にすべきか、有効のままにしておくべきか。
関連するPC環境は、
SSD : Crucial m4 CT128M4SSD2(128GB)×2 RAID 0
Memory : CFD T3U1333Q-2G (2GB 3枚組) 計6GB
である。
まず、Superfetchの設定には、[コントロールパネル]⇒[管理ツール]⇒[サービス]から[Superfetch]の右クリックで[プロパティ]⇒[スタートアップの種類]の[自動](有効)又は[無効]を選ぶという方法がある。このサービスは「Superfetch」という名称であるが、prefetchするためのデータベースや「.pf」ファイルを作成する機能を管理しているようなので、これを無効にすると、SuperfetchのみならずPrefetcherの機能も停止することになるから注意を要する。
また、レジストリを操作することにより、SuperfetchとPrefetcherの有効・無効を個別に設定することができ、しかも、それぞれの適用場面を、大まかではあるが、変えることができる。これについては、Microsoft Answersに解説がある(「SuperFetch がキャッシュするアプリケーションやファイルを設定することはできますか?」)。
regedit.exeを起動し、[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters]までたどり、その中にある[EnablePrefetcher]と[EnableSuperfetch]の右クリックの[修正]で値を「0」~「3」のいずれかに変更して、適用場面を変えることができると、そこにある。それぞれの値の意味は次の通りである。
「0」:キャッシュを無効にする。
「1」:キャッシュがユーザの実行したアプリケーションにのみ適用される。
「2」:キャッシュが起動ファイル(システム・ファイル、サービス、スタートアップ・プログラム等)にのみ適用される。
「3」:全てをキャッシュする(デフォルト)。
Prefetcherに関しては、デフォルトの「3」のままで通常は問題ないようである。SSDの場合でも有効でよいのではなかろうか。
問題は、Superfetchをどうするかである。
「0」の無効にしてしばらく使ってみたが、アプリケーションの立ち上がりに時間がかるようになった。例えば、Photoshop CS5の起動に、「3」の全て有効の場合には3秒ほどしかかからなかったが、無効にした場合は7~8秒かかるのである。SSDであってもやはり、Superfetchの効果は充分に認められるので、再び「3」に戻すことにした。
※ SSDには、書き込み可能回数という制限があり、10000回とも物によっては5000回とも言われていることから、その延命を図るために、できるだけ無用な書き込みを減らそうとして、インデックスの作成やSuperfetchを無効にした方がよいという意見がある。私もそれを鵜呑みにして、そのためだけにSuperfetchを無効にしたりしたのである。
しかし、SSDにはウェアレベリングという寿命を延ばす機能が備わっており、寿命を心配する必要はないようである。
「SSD耐久テスト」というウェブページ(突然、2014年6月1日に「SSD耐久テスト」の更新終了。その後、これを掲載していたBotchyWorldというサイトも閉鎖。「SSD耐久テスト」の内容はBTOパソコン.jpが記録保管しており(「SSD耐久テスト - BotchyWorld補完計画」)、http://bto-pc.jp/botchyworld/で見ることができる。)によると、例えばintel X25-Vの120GBの場合、1日10GBの書き込みを毎日続けたとして寿命が尽きるのに約51年かかる計算になるらしい。SSDの価格は年々下がっており、寿命が尽きる頃には安価に入れ替えができるであろうから、神経質にならず、せっかく大枚をはたいてSSDをあがなう以上、その高速アクセスを満喫しした方がよろしいようで。
上記のウェブページ「SSD耐久テスト」には、Intelや東芝等の新品のSSDに対して書き込みをし続けるというプログラムを組み、1日15時間延々と寿命が尽きるまでテストした記録が掲載されている。実に奇特な、驚歎すべき実験である。寿命を算出する計算式も見事である。一読の価値はある(2012年5月21日現在、Crucial C300 64GBのテストが進行中)。
また、SSDの寿命に関しては、我々素人には少し難解な点もあるが、「Lansenの現実逃避日記」も参考に。
しかし、SSDにはウェアレベリングという寿命を延ばす機能が備わっており、寿命を心配する必要はないようである。
「SSD耐久テスト」というウェブページ(突然、2014年6月1日に「SSD耐久テスト」の更新終了。その後、これを掲載していたBotchyWorldというサイトも閉鎖。「SSD耐久テスト」の内容はBTOパソコン.jpが記録保管しており(「SSD耐久テスト - BotchyWorld補完計画」)、http://bto-pc.jp/botchyworld/で見ることができる。)によると、例えばintel X25-Vの120GBの場合、1日10GBの書き込みを毎日続けたとして寿命が尽きるのに約51年かかる計算になるらしい。SSDの価格は年々下がっており、寿命が尽きる頃には安価に入れ替えができるであろうから、神経質にならず、せっかく大枚をはたいてSSDをあがなう以上、その高速アクセスを満喫しした方がよろしいようで。
上記のウェブページ「SSD耐久テスト」には、Intelや東芝等の新品のSSDに対して書き込みをし続けるというプログラムを組み、1日15時間延々と寿命が尽きるまでテストした記録が掲載されている。実に奇特な、驚歎すべき実験である。寿命を算出する計算式も見事である。一読の価値はある(
また、SSDの寿命に関しては、我々素人には少し難解な点もあるが、「Lansenの現実逃避日記」も参考に。
ところが、大量のデータを長時間処理し続けると、突如一つ一つの操作に極端に時間がかかるようになり、PC全般の反応が鈍くなるのである。これは、スラッシングに陥っている状態なのであろうか、あるいはスラッシングには至っていないがページ・フォールトが頻発している状態なのであろうか。いずれにしろ、メモリ不足が生じているのは確かである。 「Superfetchは予め読み込まれたページをシステムのスタンバイ・リストに追加するが、そのスタンバイ・リストは長期にわたってメモリに有益なデータを保持するように再編成され、再設計されて」("Performance Testing Guide for Windows")おり、「Superfetchは、キーボード又はマウスからのインプットが少なくとも1分間に1回行なわれる限り、システムを監視する」(同書)とされているから、キーを叩きマウスをクリックし続けている限り、Superfetchはシステムを監視し続けることになる。このような働きをするSuperfetchは、PCが重くなる要因の一つと考えられているようであり、このような現象を避けるためとして無効を選ぶ人もいるようである。
まさに痛し痒しである。Superfetchを有効にするにしても、「起動ファイルのみ」かあるいは「アプリケーションのみ」にして、何とかその効用と弊害のバランスをとろうとする人もいるのである。
ここで注意すべきことは、SuperfetchやPrefetcherの設定の変更、あるいはアプリケーションのアンインストールなど、システム上重要な変更を行なった場合には、C:\Windows\Prefetchフォルダ内の
【追記】:(ReadyboostとReadybootを混同した頓珍漢な記述をしていたので、それを削除し、改めて両者の異同を確認しておく。)
ReadyboostとReadybootは、「s」の一字の有無が異なるだけの非常に紛らわしい用語であり、MSDNのペーパーにおいてもReadyboostをReadybootと誤記している箇所があるくらいである("Windows PC Accelerators")。
その"Windows PC Accelerators"及び"Windows Internals sixth edition Part 2"(pp.346-348, pp527-528)によると、両者はRAMやフラッシュメモリ等の高速なディバイスを利用して、HDDの伝送速度の遅さを補おうとする点で共通する。ともにPCの高速化に寄与する働きをする。
両者の相違点は、Readybootが、文字通りWindowsの起動を最適化しようとするものであるのに対し、Readyboostは、それに限らずHDDの読み書きのすべてを高速化しようとするものである。
起動ごとに、どのファイルがRAM(Random Access Memory)にキャッシュされ、そのファイルはHDDのどこに位置するのかといった情報がReadybootフォルダに保存され、それに基づき次回の起動のためにキャッシング計画が立てられ、それに沿って次回の起動が進められる。それによって、起動時間の短縮が図られることになる。Readybootフォルダに保存される起動時の追跡ファイルは、Trace1.fx、Trace2.fx、Trace3.fx…と順次番号が振られ、常に最新の5つのファイルが保存されることになっている(Trace10.fxに至るとTrace1.fxに回帰する)。
これがReadybootの仕組みであるが、これらの.fxファイルを分析し、キャッシング計画を立てるのは、Readyboostサービスであり、そのキャッシュもReadyboostと同じディバイス・ドライバ(Ecache.sys)によって実装されると説明されている。
Readyboot自体は、Superfetch(Sysmain)サービスの一部として実装されており、Superfetchが無効となると、Readybootも停止される。
Readyboostは、Rdyboost.sysというドライバとして実装され、その機能は、その開発時の名称である"External Memory Device"が表しているように、主に外部メモリ・ディバイスとしてSSDといった高速ドライブの一部をキャッシュ領域として利用し、RAMとHDDとの間に介在して読み書きをより高速化しようとするものである。接続されたディバイスが一定以上の転送速度であると検知されると、利用者にReadyboostの許可が求められる。利用者がReadyboostを許可すると、そのドライブのルートディレクトリにReadyboost.sfcacheというファイルが作られ、それがキャッシュとして利用される。キャッシュされたデータは、安全を考慮して暗号化される。この点、Readybootモードにおいては、RAM上のキャッシュはサービス開始後50秒で削除されるため、暗号化されることはない。
ただし、SSDをシステムディスクにしている場合には、リムーバブルディスクとして認識された他のSSD等のプロパティの[ReadyBoost]タブには「このコンピューターのシステムディスクは十分に高速であるため、ReadyBoostが有効になっていません。ReadyBoostでさらにパフォーマンスが向上する可能性は小さいと考えられます。」と表示され、システムディスクのアクセス速度が一定以上であれば、自動的にReadyboostは無効となる。その場合、通常は、Superfetch等も無効となっているはずである。
しかし、我が機のようにSSDをシステムディスクとしていながら、レジストリを操作して敢えてSuperfetchを有効とした場合、Superfetch(Sysmain)サービスの一部であるReadybootは有効となるから、Readybootフォルダ内に起動追跡ファイルは生成される。ところが、ReadyboostもSysmainサービスが担当するのであるから、SysmainサービスがオフになっているとReadyboostは有効とならないのは当然であるが、Sysmainサービスが手動で有効にされたとしても、Readyboostサービスは、システムディスクとして使用するSSD等のパフォーマンスをテストし、その結果によって(エクスペリエンスインデックスを参考にしているらしい)、独自にReadyboostを有効とすべきかどうかを判断しているようである。
従って、TraceX.fxファイルは生成されるが、Readyboostが無効になっているため、それらファイルに基づいたキャッシング計画は立てられておらず、それによるReadybootが行われていないこともあると考えられる。実際、我がPCのレジストリを覗くと、そのキャッシング計画が格納されているHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\rdyboost\Parameters内のLastBootPlanUserTimeには1年以上も前の日付が記録されており、キャッシュに関する統計情報が格納されているはずのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ecache\Parameters\ReadyBootStatsは存在しない。
ReadyboostとReadybootは、「s」の一字の有無が異なるだけの非常に紛らわしい用語であり、MSDNのペーパーにおいてもReadyboostをReadybootと誤記している箇所があるくらいである("Windows PC Accelerators")。
その"Windows PC Accelerators"及び"Windows Internals sixth edition Part 2"(pp.346-348, pp527-528)によると、両者はRAMやフラッシュメモリ等の高速なディバイスを利用して、HDDの伝送速度の遅さを補おうとする点で共通する。ともにPCの高速化に寄与する働きをする。
両者の相違点は、Readybootが、文字通りWindowsの起動を最適化しようとするものであるのに対し、Readyboostは、それに限らずHDDの読み書きのすべてを高速化しようとするものである。
起動ごとに、どのファイルがRAM(Random Access Memory)にキャッシュされ、そのファイルはHDDのどこに位置するのかといった情報がReadybootフォルダに保存され、それに基づき次回の起動のためにキャッシング計画が立てられ、それに沿って次回の起動が進められる。それによって、起動時間の短縮が図られることになる。Readybootフォルダに保存される起動時の追跡ファイルは、Trace1.fx、Trace2.fx、Trace3.fx…と順次番号が振られ、常に最新の5つのファイルが保存されることになっている(Trace10.fxに至るとTrace1.fxに回帰する)。
これがReadybootの仕組みであるが、これらの.fxファイルを分析し、キャッシング計画を立てるのは、Readyboostサービスであり、そのキャッシュもReadyboostと同じディバイス・ドライバ(Ecache.sys)によって実装されると説明されている。
Readyboot自体は、Superfetch(Sysmain)サービスの一部として実装されており、Superfetchが無効となると、Readybootも停止される。
Readyboostは、Rdyboost.sysというドライバとして実装され、その機能は、その開発時の名称である"External Memory Device"が表しているように、主に外部メモリ・ディバイスとしてSSDといった高速ドライブの一部をキャッシュ領域として利用し、RAMとHDDとの間に介在して読み書きをより高速化しようとするものである。接続されたディバイスが一定以上の転送速度であると検知されると、利用者にReadyboostの許可が求められる。利用者がReadyboostを許可すると、そのドライブのルートディレクトリにReadyboost.sfcacheというファイルが作られ、それがキャッシュとして利用される。キャッシュされたデータは、安全を考慮して暗号化される。この点、Readybootモードにおいては、RAM上のキャッシュはサービス開始後50秒で削除されるため、暗号化されることはない。
ただし、SSDをシステムディスクにしている場合には、リムーバブルディスクとして認識された他のSSD等のプロパティの[ReadyBoost]タブには「このコンピューターのシステムディスクは十分に高速であるため、ReadyBoostが有効になっていません。ReadyBoostでさらにパフォーマンスが向上する可能性は小さいと考えられます。」と表示され、システムディスクのアクセス速度が一定以上であれば、自動的にReadyboostは無効となる。その場合、通常は、Superfetch等も無効となっているはずである。
しかし、我が機のようにSSDをシステムディスクとしていながら、レジストリを操作して敢えてSuperfetchを有効とした場合、Superfetch(Sysmain)サービスの一部であるReadybootは有効となるから、Readybootフォルダ内に起動追跡ファイルは生成される。ところが、ReadyboostもSysmainサービスが担当するのであるから、SysmainサービスがオフになっているとReadyboostは有効とならないのは当然であるが、Sysmainサービスが手動で有効にされたとしても、Readyboostサービスは、システムディスクとして使用するSSD等のパフォーマンスをテストし、その結果によって(エクスペリエンスインデックスを参考にしているらしい)、独自にReadyboostを有効とすべきかどうかを判断しているようである。
従って、TraceX.fxファイルは生成されるが、Readyboostが無効になっているため、それらファイルに基づいたキャッシング計画は立てられておらず、それによるReadybootが行われていないこともあると考えられる。実際、我がPCのレジストリを覗くと、そのキャッシング計画が格納されているHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\rdyboost\Parameters内のLastBootPlanUserTimeには1年以上も前の日付が記録されており、キャッシュに関する統計情報が格納されているはずのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ecache\Parameters\ReadyBootStatsは存在しない。
また、Superfetchの設定をどうするかを検討する際に、もう一つ考慮すべきことがある。メモリの容量である。
当初、それほどメモリは必要なかろうと判断して6GB(2GB×3)にしていたが、もう一組6GBを追加して計12GBにすることにした。メモリを増量すれば、メモリ・マネージメントに余裕をもたせることができ、Superfetchの働きに有益にこそなれ、不利益になることはなかろう、と考えたからである。
取り敢えず、メモリを12GBにし、Superfetch、Prefetcherともに「3」の全て有効にして様子をみることにする。
※【この続きは「SuperfetchとPrefetchについて~(2)」を御覧下さい。】
ハウステンボス美術館の稀少な逸品
これまで幾度かハウステンボスを訪れているが、ハウステンボス美術館へ足を運んだのは初めてであった。
珍しいレンブラントの銅版画を見ることができた。レンブラントの銅版画のコレクションは、ハウステンボス美術館が誇る所蔵品の一つだという。貴重な彼の銅版画の原版も2点所有しているとのことである。
しかし、この美術館の所蔵で私が面白いと思ったのは、美術品ではなく、楽器である。
一、
一つは、世界的にも珍しい連弾用のチェンバロである。

同美術館の館長代理兼主任学芸員である安田恭子さんによると、「稀少な2段鍵盤チェンバロ1段ヴァージナルの合体モデルで、2人で連弾できるように鍵盤が2ヶ所についています。18世紀フランドル様式でオランダ ハールレム市の個人工房で1992年に製作されました。恐らく、ベルギーのアントワープ市内のプランタン印刷博物館所蔵の「ヤン・コーネン」1734年製作のチェンバロを詳細に復元したものと推定されます。同タイプの楽器はヨーロッパでも類例のない、きわめて希少な1台であることは間違いありません。」(ハウステンボス、「スタッフブログ」)ということである。

生のチェンバロの音を聞いたことは殆どないので、通常のチェンバロの音との正確な違いは分からないが、少なくともこれまでにアンプとスピーカーを通して聴いたことのあるチェンバロの音色より厚みのあるものに感じた。
この時のミニ演奏会では安田さんが一人でそれぞれの鍵盤を弾いて聴かせてくれたが、望むらくは、二人での連弾を聴いてみたいものである。
また、このチェンバロは御覧のように美しい意匠が施されており、復元品とはいえ、一見の価値はあろう。
二、
もう一つ、この時に演奏されたのが、この自動演奏楽器「フィオリーナ」である(ハウステンボス、「スタッフブログ」)。

その珍しさは、写真を御覧になれば一目瞭然。それはピアノとバイオリンを同時に自動演奏する優れものなのである。
フィオリーナは、中央にセットしたロールペーパーに記録された指示に従って電動のふいごが風をピアノとバイオリンとに送り込み、それを動力にして演奏するものらしい。上部に見える逆さに取り付けられたバイオリン3丁は、それぞれ右から高音、中音、低音専用となっており、機械の指が弦を押さえた状態でバイオリンが傾き、回転する円形の弓に触れて音を出す仕掛けとなっている。カタカタと機械仕掛けの音と共に奏でられる優雅とはほど遠いバイオリンの抑揚のない調べとその文字通り機械的な動きは、ちょっと異様で滑稽ですらある。

安田さんの説明によると、これはかのタイタニックに備えられる予定であったとのことである。何らかの事情でタイタニックに載せられることなく、今この長崎の地にその姿を留めているのか、と思うと感慨深いものがある。
三、
そして、これらの楽器から少し離れたところに、写真のピアノがあった。これはと思い、安田さんにこのピアノのことを尋ねてみた。

百年程前に製作されたもので、これも珍しいものなんですよ、と言って、何の曲だったかは忘れてしまったが、さわりを弾いてくれた。その後、どうぞ弾いてみても結構です、と言われたので、まともに弾けはしないが、鍵盤を叩いてみた。
「これはいい音ですね。」
「そうなんです。これだけ古いピアノでこれほどの音を出せるのは、なかなかお目にかかれないと思います。」
素人の私ですら、すばらしい音色であることは分かった。柔らかではあるが、しっかりと音は鳴いていた。
「実は、所蔵品や展示品の保存維持のため一年中温度と湿度を一定に保っているので、ピアノなどの楽器にとっては美術館や博物館の環境は最高なんですよ。」と、安田さん。
むべなるかな。日本のように四季によって温度と湿度の変化が著しい地域においてピアノの音質を保つのは容易ではなく、それが、かつてヤマハがショパンコンクールで選ばれ難い理由の一つだと言われていたのを思い出した。とはいうものの、2010年のコンクールではヤマハはファイナリスト10名のうち4名に選ばれ、スタインウェイを選んだピアニストと同数であったとのことである。おそらく、それは2007年にヤマハがベーゼンドルファーを傘下に収めたことと無関係ではなかろう。永らくオーストリアというヨーロッパの地でリストやバックハウスに愛された名器を作り続けてきたベーゼンドルファーのノウハウが活かされない訳はないからである。
以前、ある市民ホールでスタインウェイのC-227を弾く機会があり、単純にその僥倖を喜んでいたが、これを聞いてそのスタインウェイを維持管理するホール担当者の苦労を案じてみたりもした。もっとも、弾いたといっても娘のピアノの発表会で簡単な小品を娘と連弾したに過ぎない。横で娘の失敗を心配するあまり自らミスを犯してしまい、悔いの残る演奏であったことを苦々しく思い出す。

このピアノについては、ハウステンボスのサイトで、「1809年創業のドイツの老舗メーカー、シードマイヤー社製のグランドピアノ。1900年パリ万博、1904年のセントルイス万博に出展、大賞を受賞したものをモデルとし、製作されたものと思われる。高価なマホガニー製の本体とオルモル(ブロンズに金メッキ)の金工装飾が施されているデザインは、帝政様式の特徴を示し、均衡のとれた美しい意匠となっている。シードマイヤー社は 1982年からピアノを製造していないため、珍しい貴重な芸術品である。」と、紹介されている。
ハウステンボス美術館を訪れ、このピアノを見つけた折には、近くに安田さんが居られないか見渡してみて下さい。居られたならば、許しを得て弾いてみてはいかがでしょうか。
珍しいレンブラントの銅版画を見ることができた。レンブラントの銅版画のコレクションは、ハウステンボス美術館が誇る所蔵品の一つだという。貴重な彼の銅版画の原版も2点所有しているとのことである。
しかし、この美術館の所蔵で私が面白いと思ったのは、美術品ではなく、楽器である。
一、
一つは、世界的にも珍しい連弾用のチェンバロである。

同美術館の館長代理兼主任学芸員である安田恭子さんによると、「稀少な2段鍵盤チェンバロ1段ヴァージナルの合体モデルで、2人で連弾できるように鍵盤が2ヶ所についています。18世紀フランドル様式でオランダ ハールレム市の個人工房で1992年に製作されました。恐らく、ベルギーのアントワープ市内のプランタン印刷博物館所蔵の「ヤン・コーネン」1734年製作のチェンバロを詳細に復元したものと推定されます。同タイプの楽器はヨーロッパでも類例のない、きわめて希少な1台であることは間違いありません。」(ハウステンボス、「スタッフブログ」)ということである。


生のチェンバロの音を聞いたことは殆どないので、通常のチェンバロの音との正確な違いは分からないが、少なくともこれまでにアンプとスピーカーを通して聴いたことのあるチェンバロの音色より厚みのあるものに感じた。
この時のミニ演奏会では安田さんが一人でそれぞれの鍵盤を弾いて聴かせてくれたが、望むらくは、二人での連弾を聴いてみたいものである。
また、このチェンバロは御覧のように美しい意匠が施されており、復元品とはいえ、一見の価値はあろう。
二、
もう一つ、この時に演奏されたのが、この自動演奏楽器「フィオリーナ」である(ハウステンボス、「スタッフブログ」)。

その珍しさは、写真を御覧になれば一目瞭然。それはピアノとバイオリンを同時に自動演奏する優れものなのである。
フィオリーナは、中央にセットしたロールペーパーに記録された指示に従って電動のふいごが風をピアノとバイオリンとに送り込み、それを動力にして演奏するものらしい。上部に見える逆さに取り付けられたバイオリン3丁は、それぞれ右から高音、中音、低音専用となっており、機械の指が弦を押さえた状態でバイオリンが傾き、回転する円形の弓に触れて音を出す仕掛けとなっている。カタカタと機械仕掛けの音と共に奏でられる優雅とはほど遠いバイオリンの抑揚のない調べとその文字通り機械的な動きは、ちょっと異様で滑稽ですらある。

安田さんの説明によると、これはかのタイタニックに備えられる予定であったとのことである。何らかの事情でタイタニックに載せられることなく、今この長崎の地にその姿を留めているのか、と思うと感慨深いものがある。
三、
そして、これらの楽器から少し離れたところに、写真のピアノがあった。これはと思い、安田さんにこのピアノのことを尋ねてみた。

百年程前に製作されたもので、これも珍しいものなんですよ、と言って、何の曲だったかは忘れてしまったが、さわりを弾いてくれた。その後、どうぞ弾いてみても結構です、と言われたので、まともに弾けはしないが、鍵盤を叩いてみた。
「これはいい音ですね。」
「そうなんです。これだけ古いピアノでこれほどの音を出せるのは、なかなかお目にかかれないと思います。」
素人の私ですら、すばらしい音色であることは分かった。柔らかではあるが、しっかりと音は鳴いていた。
「実は、所蔵品や展示品の保存維持のため一年中温度と湿度を一定に保っているので、ピアノなどの楽器にとっては美術館や博物館の環境は最高なんですよ。」と、安田さん。
むべなるかな。日本のように四季によって温度と湿度の変化が著しい地域においてピアノの音質を保つのは容易ではなく、それが、かつてヤマハがショパンコンクールで選ばれ難い理由の一つだと言われていたのを思い出した。とはいうものの、2010年のコンクールではヤマハはファイナリスト10名のうち4名に選ばれ、スタインウェイを選んだピアニストと同数であったとのことである。おそらく、それは2007年にヤマハがベーゼンドルファーを傘下に収めたことと無関係ではなかろう。永らくオーストリアというヨーロッパの地でリストやバックハウスに愛された名器を作り続けてきたベーゼンドルファーのノウハウが活かされない訳はないからである。
以前、ある市民ホールでスタインウェイのC-227を弾く機会があり、単純にその僥倖を喜んでいたが、これを聞いてそのスタインウェイを維持管理するホール担当者の苦労を案じてみたりもした。もっとも、弾いたといっても娘のピアノの発表会で簡単な小品を娘と連弾したに過ぎない。横で娘の失敗を心配するあまり自らミスを犯してしまい、悔いの残る演奏であったことを苦々しく思い出す。
【追記】:汚名をそそぐ機会が巡ってきた。今回は私と娘とカミさんの六手連弾である。曲目はジョンデンバーのカントリーロード。緊張することも忘れるほど集中して私は、ミスタッチなく終盤にさしかかった。最終小節直前に「今日はいけそうじょないか」という思いがよぎった瞬間、二人の音を聞き逃し、三人同時に弾くべき個所で思わず一人だけ先に飛び込んでしまった。「なんで、あそこでハズスかなァー!!」。演奏後、二人からあきれられた。


このピアノについては、ハウステンボスのサイトで、「1809年創業のドイツの老舗メーカー、シードマイヤー社製のグランドピアノ。1900年パリ万博、1904年のセントルイス万博に出展、大賞を受賞したものをモデルとし、製作されたものと思われる。高価なマホガニー製の本体とオルモル(ブロンズに金メッキ)の金工装飾が施されているデザインは、帝政様式の特徴を示し、均衡のとれた美しい意匠となっている。シードマイヤー社は 1982年からピアノを製造していないため、珍しい貴重な芸術品である。」と、紹介されている。
ハウステンボス美術館を訪れ、このピアノを見つけた折には、近くに安田さんが居られないか見渡してみて下さい。居られたならば、許しを得て弾いてみてはいかがでしょうか。