Eee PC/SSDの高速化への挑戦!No5.

0
    PFB プチフリ解決ソフト Eee PC SSDの速度を最大過負荷時に2倍速化

     本日「PFB V0.4」を「f2dユーティリティ」に編入Upしておいた。。。さて、何故0.4をUpしたかも含めてレポートする。
    ■PR・・・この記事は完成して、製品化されました。
    Windows 高速化 プチフリバスター
    --->
    Eee PC高速化・SDHCのHDD化 プチフリバスター製品紹介ページ
    ※f2dはプチフリバスターに統合されました。

     ラボの頭痛の種は明快なプチフリマシンがないことである。ラボのEee PC S101は観測上はプチフリが起きている事は判っている。これは今までプチフリ測定ツールPFMを観測している。いや、プチフリというよりMLC型のSSDは定期的に書き込みが遅くなる現象が出るというべきだろう。

    プチフリの追跡・観測2
    [クリックで拡大]

     前回レポートしたとおり。。。通常は1ms未満なのだが、グラフのとおり定期的に0.6秒台の遅い書き込みが発生する。この遅い書き込みはSSD内部のガーベージコレクション(作業用メモリの整理整頓作業)のためと思われる。まず、この現象がプチフリを起こす第一要因だと思われる。


    プチフリの追跡・観測3
    [クリックで拡大]

     そして第二要因として、このように、32msという遅い書き込みが連続して約80回連続するという現象つまり約2.5秒間相当の渋滞を発見した。。。

     プチフリとは単純観測上は前者のような事、、、複雑には後者の事態ではなかろうか。。。次ぎの仮説が成立する。

    プチフリの真相とはこれではないのか?
    [クリックで拡大]

     Windowsのバックヤード処理がある。例えばNTFSフォーマットのジャーナルなどだ。障害時のためにアクセスの記録を採っているらしい。。。こういう処理が、SSDにわっと殺到し、このタイミングでガーベージコレクションが重なり処理は一時的に停止する。

     その次には、ユーザアプリなりあるいは、Windowsのマウス、キーボードを動かす上で必要な読み込みが控えていた場合、システムのフリーズ現象が生まれる。たぶん、プチフリとはこういう現象なのだろう。

     SSDそのものが、ウェアレベリングにより速度が遅くなる。加えてWindows自身が様々な要求をマトメテ出す。結果、SSDが一時停止するのだろう。

    SSDによる書き込み連続テスト

     PFMのオプションにて計測した。書き込みだけを行うスイッチを入れた。書き込みだけならば、この速度である。。。しかし、読み込みが混ざると速度が半減することが過去の調査から判る。
    そして、何より重要なことがある。書き込みだけでも0.6ms級の遅延が発生していることである。
     おっと補足する。この試験はCドライブに対して行ったのでWindows固有のアクセスも発生している。そのために厳密ではないことを述べておく。

     次ぎの図は交通渋滞の有名なモデル図である。しばし、交通渋滞はこのように表現する。

    プチフリ現象と交通渋滞モデルの比較・コロップ現象
    [クリックで拡大]

     交通渋滞をしばし、このように表す事がある。本来、交通整理すればスムーズに流れえるのだが、それをしないためにお互いに引っかかりあって詰まるというのだ。

     さらに言うとこうなるかもしれない。黒子は2ついる。
    ■定期的に発生するガーベージコレクション
    ■定期的に勃発するWindows・NTFSの書き込み

     図にすると次ぎのようなものだろう。
    ウェアレベリングによるSSDの速度が遅くなった所にNTFSなどWindowsがバックヤード(裏方)で発生する諸々の書き込みが発生してふん詰まりを起こし数秒の間ディスクは身動きがとれなくなる。。。ディスクのアクセス待ちのプログラムは全部、機能停止に陥る。

    プチフリ現象のシンボリック図
    [クリックで拡大]

     では、なぜ、このような現象がおきるかというとSSDをシンボリックに例えると判ると思う。



     乱暴に表現すると、SSDの内部はデータの入り口に搬入・搬出用のベルトコンベアが一つあると思えば良い。同時に搬入と搬出は出来ない。従い、搬入つまりライトしている時は搬出つまりリードはできない。そのまた逆もしかり。というようである。

     さらに、図に手を加えてみよう。PFMにより観測していると記録上1msの書き込みが7回連続して発生し16msの書き込みが8回目に来るという現象が起きている。1msは切り上げしているためで実際の計測ではゼロ秒である。ゼロは在り得ない。単純に計測誤差でゼロ扱いということだ。

     では、疑問が湧く。。。遅いライト処理で何故、ゼロ秒という計測結果が出ているのか。。。有力な仮説は実際にはNANDメモリに書いていないということだろう。SSDいや内蔵コントローラJMF602は内部に書き込みデータを一時格納するバッファを持っており、ここに積んでいるだけであると思われる。

     そして、バッファが一杯になった時にげろっと書き込みが行われるのではないだろうか。
     これを図に反映すると次ぎのようなものだ。



     プチフリ測定ソフトPFMを使い、プチフリ対策ソフトPFBをかけると速度が二倍三倍に速くなるという現象はこの構造により説明できる。

     フラッシュメモリそのものは、ページ単位(だいたい4Kバイト)で読み書きをする。このページも同様に1ベルトコンベアで同時読み書きはできないと見るべきだろう。

     特に書き込みをしている時、ウェアレベリング処理をしている時はフラッシュのアドレス並びも変更しているから、リードは禁止だと思う。その逆もしかり。リードしている時にウェアレベリングでメモリ素子の内容が交換されたらたまったものではない。ここで再度、ウェアレベリングのイメージ図を上げておく。

    SSD プチフリを追跡する 構造から見たプチフリ現象 ウェアレベリングの一つの実装例
    [クリックで拡大]

     この図はあくまでも素人的に2進木によりウェアレベリングを説明したものだが、絶対に事実でないといけない箇所がある。それは図中第三索引としている箇所、この機能は絶対にないといけない。でないとウェアレベリングできないからだ。

     ウェアレベリングが発生している時、、、

    ■ NANDフラッシュに対してページによる書き込みが起きている。従い読み込みはできない。
    ※2ch×4バンクのうち、空いているch、バンクはコントローラが高機能であれば読み込みできるかもしれない。
    ■ 第三索引を更新している最中は、ディスクの内部構成が入れ替わっているから無条件にリードはできない。入れ替わり中のメモリ素子を識別すれば可能である。

     だぶん、PFMにより実際の挙動を見るに排他制御していると見て良さそうである。

          ***
            ***

     さらに調査していて痛切に感じたのであるが、Windowsの仕様上の問題がプチフリを起こしているのではないかということだ。ネット上で散見するに、Linuxではプチフリがあまり起きない、あるいは起きないように設計しているという表記を見る。

     Windows上にてSSDへのアクセスをシンボリックに書くと次ぎのようになる。

    Windowsのプチフリ現象、OSの問題
    [クリックで拡大]

     これまでの推論よりSSDにはこのような複数の同時アクセスは向いていないということが判る。プチフリ問題についてはWindowsのこのような複数の同時アクセスを好んで発行する仕様が最大の原因ではないかと思われる。

     これはWindowsの好みというよりも、技術上の問題である可能性がある。
     SSDに限らず周辺装置にマルチタスク、マルチスレッドを要求する事は少しムリがあるのではないだろうか。リクエストを一つづつ、順番に処理していく事が原理原則だと断定して良いと思う。

     さて、この一つづつというのはそれほど難しい事ではない。次ぎのフローチャートを処理に入れれば本来は良いはずである。というか、この処理は古典的常識と呼べるものだと思う。説明しよう。

    Windowsの遅延の問題

     SSDに対して、別に通信カードでも何でも同じであるが、アクセスする時に現在暇かどうかを確認する。何か他の処理をしているかどうかをチェックする。良くビジーかどうか確認するという言い方をする。

     空いていればそのままSSDにアクセスする。このアクセスは大抵はリードあるいはライトだ。

     もし暇でなければ、つまりビジーであればプログラムはCPUの占有権を手放し、再びCPUを割り振られると、このループを再開する。

     筆者はこのCPUの占有権を他のプログラムに譲る命令を過去数年探し続けているが未だに見つけていない。仕方ないので、良く似た遅延命令を入れて代用している。遅延命令というのは、指定した時間だけCPUの占有権を手放すという物である。Windowsでは、次ぎの命令がある。

      KeDelayExecutionThread( _t100ns_time );

     これは、_t100ns_timeで指定した時間だけ、CPUの占有権を他のプログラムに譲るものである。_t100ns_timeには100ns単位の時間を指定する。nsは、1/1000,000,000秒である。つまり、ここでは、1/10,000,000秒単位でCPUを手放す時間を指定できる。しかし、実際に手放す時間が問題なのである。大抵は、15msの間手放す事になる。

     msは1/1000秒である。従い、一度、この遅延を発行すると15/1000秒程、制御が返ってこない。

     いま、SSDの制御プログラムを書くとしよう。過去PFMで平均リード/ライトタイムは4Kバイトで2〜4msと判っているから余裕を見て1msを指定すれば良い事が判る。もし、精度10%で滑らかに監視したければ2msの1/10として0.2ms程だろうか。さて、_t100ns_timeに1msを指定したとしても実際には15ms後に制御が返ってくる。

     結果、1ms待つ積もりが15ms待つ事になり、SSDへのアクセスは極端に遅くなる。

     Windows上のプログラムはこのようなわけで迂闊にCPUの制御権を手放す事ができない。手放したら最後、15ms後までオアズケをくらうことになるからだ。

     かといって、CPUを握りっぱなしするとCPUパワーが独占されシステムが永久凍土化する。つまり固まるわけだ。

     この結果、、、Windows上のソフトはスレッド(小さなプログラムの事だと思って欲しい)多発するのではないだろうか。SSDにアクセスが発生した時点でスレッドを一つ立て、それに制御を任して放る。自分自身は手が空くから、次ぎの処理に専念する。わざわざ自分からCPUの占有権を手放さす必要はない。。。

     このような事がWindows内部で起きているのではないだろうか。
    結果、SSDに対して少し過酷な環境が出来上がっているのではないかと思う。

           ***
              ***

     さて、プチフリの発生原因、SSDの内部構造を推理するのに紙面を費やしすぎた。残念ながら今回はPFBの説明はできなかった。次回、PFBの考え方、使い方を説明する。


     「PFB」正規ユーザ用の支援ソフト「f2dユーティリティ」に(09.04.11)現在編入している。「f2d」の正規ユーザであれば無料にて入手できるようになっている。

    PFB プチフリ解決ソフト Eee PC SSDの速度を2倍早速くする
    「f2dユーティリティ」のトップページ --> http://www.dnki.co.jp/content/view/83/79/

    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