Hatena::ブログ(Diary)

Lansenの現実逃避日記 このページをアンテナに追加 RSSフィード

2009-04-18

[]SSDランダムライトパフォーマンスを向上させるソフト"FlashPoint" 02:27 SSDのランダムライトパフォーマンスを向上させるソフト"FlashPoint"を含むブックマーク SSDのランダムライトパフォーマンスを向上させるソフト"FlashPoint"のブックマークコメント

最近、SSDランダムライト性能を向上させる"FlashPoint"というソフトが話題になっています。今回のエントリは、このソフトウェアの使用方法と、その原理についてです。

FlashPointとは

FlashPointはドライバの形で提供されているソフトで、インストールすることでSSDランダムライト性能を向上させることができます。以前紹介したMFTと異なり、システムドライブに対して使用可能な上、現在のところフリーで公開されているため、注目を集めています。

このソフトの高速化の原理ですが、公式サイトの説明では、「システムメモリのうちの少量(beta-3 versionでは32MB)をアロケートし、それを最初の固定ドライブのための一種の書き込みバッファとして使う」と記述されていますが、それだけではあまりよく分かりません。

というわけで、公式サイトWebページの階層をさかのぼり、作者本人のサイトを覗いてみました。

作者のHyojun Kimさんは、Samsungの元社員で、現在はジョージア工科大学博士課程に在籍しているとのことです。Publicationsのページには”BPLRU: A Buffer Management Scheme for Improving Random Writes in Flash Storage”というタイトルの国際学会の予稿が公開されていたので、それを読んでみました。

予稿の内容は、SSDに内蔵されているDRAMバッファを用いてランダムライト性能を向上させる"BPLRU(Block Padding Least Recently Used)"というスキームの提案です。しかし、Conclusionsの項には、提案したコンセプトはホスト側のキャッシュにも拡張できると記されているので、おそらくFlashpointはBPLRU、あるいはその改良版が利用されていると思われます。

BPLRUは、Block-level LRU, Page Padding, LRU Compensationという3つの要素から構成されています。

まず、Block-level LRUは、書き込みキャッシュ内のデータを所属するブロックごとにクラスタリングし、フラッシュ時には同一のブロック内にあるデータをまとめて書き込むという仕組みです。以前の記事に記した通り、NANDフラッシュ製品は、最も単純な手法では1ページの書き込みごとに1ブロックの書き込みが発生してしまいます。そのため、1ブロック内の書き込みはまとめて行った方が、無駄なガベージコレクション・ブロックコピーの発生を抑制できるわけです。

Page Paddingとは、1ブロックの書き込みを行う際に、更新部分のみを虫食い状態で書き込むのではなく、未更新部分をあらかじめ読み込み、1ブロック全体を書き込むという仕組みです。*1

LRU Compensationとは、ブロックサイズ以上のシーケンシャル書き込みを優先してフラッシュする仕組みです。これは、シーケンシャル書き込みをキャッシュに溜め込んでしまうとキャッシュの容量を圧迫する上、シーケンシャル書き込みをした部分にすぐ上書きをすることは滅多にないため、さっさとフラッシュしてしまっても問題ないということのようです。

さて、これをJMF602搭載SSDに使うと、プチフリには間違いなく効果があるはずです。以前の記事に記したとおり、JMF602はシステムデータをBlock-level LRUと同様に使用していますが、SHD-NSUM30では最悪の場合4KBx76回=304KBの書き込みでシステムデータを使い果たしてしまいます。他方、キャッシュDRAMで持っておけば、額面通りの容量(Flashpointの場合32MB)が一杯になるまで書き込みを溜めておくことができます。4KBの書き込みなら8000回分を溜め込るので、未使用時と比べると最大100倍のキャパシティのキャッシュになるというわけです。

FlashPointの使用方法

インストールアンインストール

インストールアンインストールの方法は、公式サイトに記されています。現在はベータ版であるためか、アンインストールはregeditを用いて手動で行う必要があります。

使用上の注意

現在のところ、Flashpointは全く設定ができません。キャッシュ容量は32MBで固定、Flashpointが適用されるディスクは最初の固定ディスクのみとなっています。また、対象OSWindows XPのみです。

なお、「最初の固定ディスク」とはC:ドライブのことを示しているのではなく、BIOSで0番の番号が振られているディスクのことです。通常のノートの場合、固定ディスクは1つしかないので問題ありませんが、デスクトップで使用する場合は最初のSATAポートに対象とするSSDを接続する必要があります。

また、このソフトDRAM上にキャッシュを作成するものであるため、突然電源が落ちたりフリーズした場合にデータが消えてしまう可能性があります。そのため、重要なシステムや不安定なシステムには使用しない方がよいでしょう。

よく分からないこと

現在のところ、SSDからブロックサイズを取得する規格はありません。また、パーティションアラインメントの問題で、SSDのページ・ブロックの境界とファイルシステムクラスタの境界がずれていることもあります。なお、パーティションアラインメントに関しては、こだわりのMONOさんの記事が大変参考になります。

そのため、このソフトではどこがSSDのブロック境界かは分からないはずです。この問題にどう対処しているのかが気になります。もしかすると、細かいことは気にしない的に決めうちでやっているかもしれず、その場合はパーティションアラインメントを適切に設定した方がパフォーマンスが出ると思います。

なお、こちらの環境ではまだこのソフトを試していないのですが、後日その効果についてベンチマークを行ってみたいと思います。

*1:と書いてあるのですが、どうもよく分からないというか、当たり前の話のような気がします。ガベージコレクションをアイドル時に行わないようにするってことでしょうか?もしかしたら読み間違いかも知れませんが…

cuttingedgecuttingedge 2009/04/19 11:31 OCZ Forumで投稿をみかけてから、私もコレが気になってました。JMF601/602製品には効果が期待できますね。

cuttingedgecuttingedge 2009/04/19 12:09 連続投稿すいません。別件ですがこんなのやってます。
http://zigsow.jp/review/4/

LansenLansen 2009/04/20 23:22 conecoでも似たような企画やってますね。今のところ対象製品にSSDはないですが…
しかし20人というのはなかなか大盤振る舞いですね。チャレンジしてみようかなあ?

cuttingedgecuttingedge 2009/04/29 17:41 Beta4ではいくつかパラメーターが設定可能になってますね。SSDのブロックサイズや容量によって最適値が変わるんでしょうね。

LansenLansen 2009/05/01 00:46 今ちょっとBeta4で遊んでますが、テストサイズを大きくするとSeq.Writeの落ち込みが激しいです…
パラメータ変更したらよくなるかな?

cuttingedgecuttingedge 2009/05/01 07:47 そうですか、あまり落ち込むのは嬉しくないですね。設定変更で改善されればいいですが・・・
Beta3patch1だとFPD16GRSEの4Kランダムおよびシーケンシャルライトとも最大遅延時間が80ms→〜180msと延長します。オーバーヘッドで+100msということだといいですが、MLCではどうなんでしょうね。

何か面白いことが判明したら、また教えてください。

KyonKyonKyonKyon 2009/05/12 17:54  Lansenさんこんにちわ。
 私のほうでも、FlashPointと同系統のソフトを作りました。。。
 PetiteFreezeBuster Ver0.6、略してPFBです。

 現在、Ver0.6でようやくランダムアクセスの性能改善ができたかなというところです。FlashPointに気が付かなかったから作ったという所もあります(汗)。

 現在、一ヶ月の期間限定ですが、β版として無料配布しています。
http://eeepc.dnki.co.jp/

     ***

 現行0.6は内部バッファはライト命令4096個まで対応ですから16Mバイトのキャッシュをします。

 デフラグをかけた状態ではあまり変化はないんですが、断片化が発生した状態では2倍くらい速くなるようです。速くなるというより、断片化による速度劣化を抑止するというほうが正しいかな。。。

 シーケンシャル書き込みの場合は劇的に速くなりますね。

 ちなみに来週Ver0.7を公開予定です。私としてはようやく0.7になって満足の行く結果がでたと思っています。

こんばんはこんばんは 2009/05/17 14:42 インストールして解凍したのですがこのシステムファイルは
どこにおくのでしょうか?(SYSファイル)
このフォルダからはインストール出来ないようです;;
よろしくお願い致します。

LansenLansen 2009/05/19 23:33 すみません。急な出張で音信不通状態になってました…
>KyonKyonさん
ちょっと今バタバタしてるので、落ち着いてから試してみたいと思います。
>こんばんはさん
sysではなく、infを右クリック→インストールを選んでください。

MiewMiew 2009/05/20 19:38 FlashPointのVistaへのインストールができました!

install.infの中の[DefaultInstall.NT][DefaultInstall.NT.Services]の中で「.NT」の文字を取り除いてからインストールすれば出来るようになります

まだ、出来たばかりなので不具合などは、でてませんが、たぶん問題ないかと思います。 Vistaの人は試してみてください。

一応、自分のblogでも説明してます。
http://www.miew-world.net/Diary/2009/05/p_256

LansenLansen 2009/05/21 00:00 情報ありがとうございます。
こちらはXPですが、β4でパラメータいじって遊んでたらシステムを壊されかけました…
セーフモードでも挙動がおかしくなるってのはかなり凶悪です…