Eee PC/SSDの高速化への挑戦!No14.ファイル分断化(フラグメント)の解説

0
    PFB EeePC S101H SSD 高速化 換装 プチフリ対策
     根源的なプチフリ対策をレポートする。
     SSDのプチフリ問題とは、おそらく90%がフラグメント(ファイルの分断化)が原因ではなかろうか。速度が10倍、いや15倍遅くなれば何が起きてもおかしくはない。
    整理状態  断片化状態
    リード 2.22ms --> 36.86ms
    ライト 2.22ms --> 36.85ms

     では、なぜ、分断化が起きるかを解説する。

    [クリックで拡大]
     フラグメントとはシーラカンスな問題だ。例えばLinuxではフラグメントは(通常は)発生しないと言われる。また、古代精霊時代アップルでは8ビットパソコンApple IIの上で、フラグメントが発生しないファイル管理を研究していたとも聞く。

     ちなみにプチフリはLinuxでは発生しないあるいは起き難いと言われている。よくオープンソースだからSSDに最適化して改善しているとか風聞を聞くが、事実は違うだろう。。。単に、フラグメントが起きないからプチフリも起きない。ということだと思う。

     フラグメント、つまりファイルの断片化とは旧MacOSおよびWindows固有の問題という言い方もできるだろう。Linux系のファイル管理とWindows系のファイル管理を簡単にビジュアルで表現してみよう。



     ようはこういう事らしい。Windowsはファイルをディスクに固めて配置する仕様になっている。対してLinuxはできるだけ分散して配置するとのことだ。Linuxはディスク全域に隙間を空けて作る。この結果、ファイルの追加上書きが差がでてくる。



     いま、ファイルA,Bという2つのファイルがいたとしよう。ファイルAに追加書き込みをしようとしたらどうなるか。。。Windowsはもう後ろにファイルBが控えているからジャンプして、その後ろに書く事になる。あるいは、空いている前の方に書く事になる。

     対してLinuxは最初から余裕を持って配置しているので、空いている隙間に書き込めば良い。

     ファイル管理一つとっても、Linuxの方が深く考察している事がわかる。まあ、業務用サーバー用OSと言われる所以である。

     そして、さらに都合の悪いことがある。MPFでランダム測定を行うと、測定すればするほどどんどん、断片化が進みスコアが悪化するという現象が起きる。この現象は、シーケンシャルではあまり起きない。ランダム測定で顕著であり、最後には15倍以上遅くなるという痛い結果に終わる。ランダムアクセスだとなぜ、こうも断片化が進むのだろうか。。。Windowsは知らないがソフトウェア工学上、ファイルへのランダムアクセスは常識的には次ぎのような事をする。



     いま、ファイルの一部分に上書きをしたい。いわゆるランダムアクセスとはこのような事をする。
    ,泙此空いている所に、上書きしたいデータを書く。
    ▲侫.ぅ詼楝里粒催箇所のリンクを切り、新しいデータにリンクを貼り変える。
    新しいデータの終端のリンクも貼り変える。

     人よ、ヒネくれていると言うなかれ。プログラマとはこういう考え方をするクリーチャーなのだ。
     一見、ヒネくれているように見えるが、理由がある。もしも、素直に該当箇所に上書きをかけて、書き込みエラーが発生したらどうなるか考えれば判る。

     書き込みは失敗しました。オリジナルデータは不完全な上書きで消失しましたという事になる。

     図の方式の場合、エラーが発生した時点で元通りに復元できるのである。プログラマと言ってもピンキリであるが、優れたプログラマはこのような考え方をする。

     かくして盛大にフラグメンテーションが発生するわけだ。

     SSDはシリコンであるからHDD固有のシークが必要ない。従いデフラグは不要であるというのが一般論であった。。。理論上はそうであるが、実際にはこれまで述べてきたように、分断化による速度劣化はある。。。むしろ、従来のHDD以上に速度劣化が起きると考えて良いだろう。

     おそらく推測であるが、ウェアレベリングつまり10万回とも30万回とも言われるフラッシュメモリの寿命延命処置を講じた結果、HDD以上にフラグメントに弱い装置になってしまったのだと思う。

     普段使われているNAND型フラッシュメモリの書き込みメカニズムを説明する。



     フラッシュメモリがページ単位でアクセスすることは過去のレポートより述べてきた。さらに、プチフリを調べている方ののWebによるとフラッシュへの書き込みはMLC型のSSDの場合は1ブロック512Kバイトにて行っているという。

    ■[SSD]JMF602搭載SSDのプチフリのメカニズムについて(1)

     こういう事になるのだろうか。。。



     このブロックはフラッシュメモリのつまりICの仕様なのか、コントローラ(例えばJMF602)のウェアレベリングの仕様か判らないのだが、、、メモリへの書き込みは512Kバイト単位で行っている。

     メモリへの書き込みのメカニズムを説明する。



     フラッシュメモリへの書き込みはこのブロックを一度、二進法の1で上書消去する。その上で、データを書く。この書き込みは、各ビットに対して一度だけ、ビットOFFに出来るとのこと。

     ...つまり、現在あるブロックは前回一度、書き込みをしているので、1バイトでも書き込みをしたいときは、自動的に一度全てを消す必要がある。

     従い、MPFの場合、4Kバイト単位で書き込みテストをしているから、

    ■1バンク512Kバイト全て更新データがあるときは100%の効率になる。
    ■1バンク512Kバイトのうち、4Kバイトだけが更新データの場合、実に0.78%の効率になる。

     以上より、ランダムアクセスの場合、最悪速度は1/100以下になる可能性があるということだろう。もし、SSDの全ディスク領域に満遍なくランダムライトが発生した場合、100倍以上遅くなる可能性がある。

     フラグメントが発生すると速度が劣化する原因であると説明できる。ファイルの理論イメージは連続しても実際に書き込まれるSSDにおいては書き込み先が飛び飛びになるからだ。

     また、MPFのランダムアクセスがデフラグのかかった状態で比較的高速なのは、検証データが200Mバイトと小さいためだと思う。SSDが内蔵するバッファがデータをソートして1ブロックにできるだけ有効データを詰め込めるように改善に成功しているためだろう。


    [クリックで拡大]

     この図のメカニズムにより、ブロックにどれだけ更新データを書き込めるかが速度を決定していると言えるだろう。。。

         ***
           ***

     さて、これに対してWindows側で行える援助を考えてみる。というか、PBFが実際に行っている事でもある。PBF Ver0.6からソート機能を実装している。次ぎのようなイメージだ。


    [クリックで拡大]

     PBFのVer0.6からこのバッファのソート機能を実装している。SSDへはソートの終わったブロックに積むだけで良い状態でライトデータを受け渡す。これにより、ブロックの稼働率を上げている。
     バッファリングとソートは、パソコン側のメモリとCPUを使用しているからSSDに対して十分なバックアップを行える。。。

     なにしろ、SSDでプチフリを起こしたらWindows側もお茶を引く。つまり、CPUに閑古鳥が鳴く。。。パソコン側の資源を投入する事によりパソコンそのものの稼働率が上がるわけだ。

     PFBは現在0.6を配布しているが、来週には0.7たぶん、機能ではこれがファイナルになると思っているが、公開する予定だ。現在、筆者がせっせとロードテストをしている状態だ。0.7はより高性能化しているが、基本機能は0.6でも同じと思って良い。


    [クリックで拡大]

     来週公開予定の0.7の制御画面を載せる。
    バッファの指定と、ソートの指定をするとSSDのブロックへの書き込みをバックアップする。


    [クリックで拡大]

     0.7でのテスト結果を上げる。。。今回はノーマルでの結果がさらに悪くなった。前回以上にフラグメントが大きくなったためだろう。前回はリードライトが4〜5msと記憶するが、今回は7msになっている。ランダムアクセスに至っては93msにまで低下している。

     0.7がかかった場合はシーケンシャルはあまり変わらず、ランダムアクセスでも速度劣化は横ばい、ほぼフラグメントによる速度劣化を制限できていると思う。ちなみに、0.7の設定は一つ前の画面のとおりで行った。



     グラフの元になった測定結果を載せておく。測定に使用したPFMは5万回の測定を行った。PFB0.7で16384個のライトバッファを切っているので、PFMの測定が終了した時点では16384個の書き込み命令はまだSSDに反映していないことを注意。シーケンシャルライトで性能が向上しているのはライトバッファに積み残しがある分、良く見えるということだろう。また、ランダムライトでリードが良くなっているのは理由が良く判らない。

     この測定データで重要な事はフラグメンテーションが発生しても速度劣化の抑制に成功しているということだろう。。。

          ***

     今回は詳細を説明しなかったが0.7で実装したバッファのパンク防止装置がプチフリ防止の決定打になると見ている。
     0.7の公開はしばし待たれたい。

     PFBの現行最新版0.6は、2つの経路より入手できる。

    ■ 「f2dユーティリティ」からの入手
     これは「f2d」ユーザのための便利ツール集である。PFBはこの中に入っている。この中に入っているのは試用期間の制限はない。PFBはもともと「f2d」ユーザの利便性向上を目的に開発したものだからだ。
     --> 「f2dユーティリティ」のトップページ


    ■ 「pfb」の試用版ダウンロードサイトからの入手
     一ヶ月の試用期間、テスト期間を設けて利用できる。

     --> 「pfb」」のトップページ

        ***

     本サイトの過去のレポートで概要は理解いただけると思う。。。なにぶん、ドキュメント、マニュアルなど不備はまだまだ多い容赦願いたい。また、弊社姉妹品もよろしくご愛顧お願い致します。


    Eee PC SDHC HDD 化
    「f2d」のトップページ --> http://f2d.dnki.co.jp/


    「PeopleLock」の紹介サイト -->
    http://peoplelock.dnki.co.jp/

    コメント
    コメントする








       
    この記事のトラックバックURL
    トラックバック

    SSDの高速化ツール Eee PC SDHC HDD 化 フリーウェア プチフリ 退治 解決 根絶に、現象測定ツール USB/SDHCカードブートにより簡単バックアップ フリーウェア USBメモリ、CFなどの不良検出ソフト FeliCa で ログオン フリーウェア USBウィルス対策ソフト フリーウェア 無限乱数式暗号フリーウェア USB ブート 簡単メモリチェック

    TEST1

    USB ブート 簡単メモリチェック

    selected entries

    categories

    archives

    recent comment

    • PBTM v0.1・起動USBによるEee PC・ネットブックのお手軽バックアップシステムを作る
      USBブート拡散部
    • WindowsXPの自動デフラグ機能について
       
    • ASUS Eee PC 701 SD-X日本語版の分解・オーバービューその2
      小林
    • 工人舎PM PM1WX16SA レビュー カスタマイズ 高速化
      meme
    • ★暗号化 Eee Storage/YoStoreの120%活用法
    • ★暗号化 Eee Storage/YoStoreの120%活用法
      ひろちゃん
    • f2dによるEee PC 901・4G-XのCドライブにSDHCを連結して容量を増大させる拡張 Part3.
      nick
    • f2dによるEee PC 901・4G-XのCドライブにSDHCを連結して容量を増大させる拡張 Part3.
      NAO
    • PBTM v0.1・起動USBによるEee PC・ネットブックのお手軽バックアップシステムを作る
      KyonKyon
    • PBTM v0.1・起動USBによるEee PC・ネットブックのお手軽バックアップシステムを作る
      kouichi

    recent trackback

    links

    profile

    search this site.

    others

    mobile

    qrcode

    powered

    無料ブログ作成サービス JUGEM