古いPCに繋いだSSD

最近PCを使っているとアプリの起動やファイルのアクセスの時、ほんの一瞬だけ止まる感じがしたのでちょっと調べてみようと思う。
もともとの性能が低いPCにSSDを繋いで延命を図っているので、これ以上能力が下がるようならば新規購入も考えないといけないだろう。


まずは現状のチェック。CristalDiskMarkでスコアを計る。
2005年発売のDell製PCにOCZ製AGT3-25SAT3-120Gを乗せ変えて1年弱使い続けた起動ディスクの能力は如何に。

                                                                                                                                            • -
CrystalDiskMark 3.0.1 (C) 2007-2010 hiyohiyo Crystal Dew World : http://crystalmark.info/
                                                                                                                                            • -
MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s] Sequential Read : 124.386 MB/s Sequential Write : 104.211 MB/s Random Read 512KB : 119.000 MB/s Random Write 512KB : 95.152 MB/s Random Read 4KB (QD=1) : 15.537 MB/s [ 3793.1 IOPS] Random Write 4KB (QD=1) : 37.296 MB/s [ 9105.5 IOPS] Random Read 4KB (QD=32) : 17.008 MB/s [ 4152.3 IOPS] Random Write 4KB (QD=32) : 59.586 MB/s [ 14547.3 IOPS] Test : 1000 MB [C: 87.3% (65.1/74.5 GB)] (x5) Date : 2012/07/24 9:30:31 OS : Windows XP Home Edition SP3 [5.1 Build 2600] (x86)

SATA1.0のIDE接続だと考えればSequential ReadとRandom Read 512KBはそんなに悪くは無い。Sequential WriteとRandom Writeも許容範囲。
だがRandom Read 4KBの数値がかなり低い。体感速度に最も影響がある項目なのだからもう少し早くなってはくれないだろうか?
(CPUが遅すぎて足を引っ張っているという可能性も高いが、購入したての頃はもう少し早かった気がする)


ついでにS.M.A.R.T.情報もチェック。

                                                                                                                                                      • -
CrystalDiskInfo 4.1.4 (C) 2008-2011 hiyohiyo Crystal Dew World : http://crystalmark.info/
                                                                                                                                                      • -
OS : Windows XP Home Edition SP3 [5.1 Build 2600] (x86) Date : 2012/07/24 10:45:08 Controller Map ---------------------------------------------------------- Intel(R) 82801FB/FBM Ultra ATA Storage Controllers - 266F [ATA] プライマリ IDE チャネル (0) HL-DT-ST DVD+-RW GSA-H21N Intel(R) 82801FB Ultra ATA Storage Controllers - 2651 [ATA] プライマリ IDE チャネル (0) OCZ-AGILITY3 Disk List --------------------------------------------------------------- (1) OCZ-AGILITY3 : 120.0 GB [0-1-0, pd1] - sf
                                                                                                                                                      • -
(1) OCZ-AGILITY3
                                                                                                                                                      • -
Model : OCZ-AGILITY3 Firmware : 2.15 Serial Number : OCZ-MQT481H0******** Disk Size : 120.0 GB (8.4/120.0/120.0) Buffer Size : 不明 Queue Depth : 32 # of Sectors : 234441648 Rotation Rate : ---- (SSD) Interface : Serial ATA Major Version : ATA8-ACS Minor Version : ACS-2 Revision 3 Transfer Mode : SATA/600 Power On Hours : 5754 時間 Power On Count : 22 回 Host Reads : 26111 GB Host Writes : 1879 GB Temparature : 30 C (86 F) Health Status : 正常 (100 %) Features : S.M.A.R.T., APM, 48bit LBA, NCQ, TRIM APM Level : 00FEh [ON] AAM Level : ---- S.M.A.R.T. -------------------------------------------------------------- ID Cur Wor Thr Raw Values (7) Attribute Name 01 _92 _92 _50 00000008D824B2 リードエラーレート 05 100 100 __3 00000000000000 不良ブロック数 09 _94 _94 __0 016CF60000167A 使用時間 0C 100 100 __0 00000000000016 電源投入回数 AB __0 __0 __0 00000000000000 書き込み失敗回数 AC __0 __0 __0 00000000000000 消去失敗回数 AE __0 __0 __0 00000000000006 予期せぬ電源断回数 B1 __0 __0 __0 00000000000002 Wear Range Delta B5 __0 __0 __0 00000000000000 書き込み失敗回数 B6 __0 __0 __0 00000000000000 消去失敗回数 BB 100 100 __0 00000000000000 訂正不可能エラー数 C2 _30 _30 __0 00001E001E001E 温度 C3 120 120 __0 00000008D824B2 ECC 訂正不可能エラー回数 C4 100 100 __3 00000000000000 代替処理発生回数 C9 120 120 __0 00000008D824B2 訂正不可能ソフトリードエラーレート CC 120 120 __0 00000008D824B2 ソフト ECC 訂正レート E6 100 100 __0 00000000000064 Life Curve Status E7 100 100 _10 00000000000000 残り寿命 E9 __0 __0 __0 00000000000BA9 ベンダ固有 EA __0 __0 __0 00000000000757 ベンダ固有 F1 __0 __0 __0 00000000000757 総書き込み量 F2 __0 __0 __0 000000000065FF 総読み込み量

こっちで気になる項目はWear Range Deltaくらいだが、ウェアレベリングで遅くなるのは書込みの時だと思うので読み込みが遅くなる理由にはならないのではないか。
(リードエラーレートやECC 訂正不可能エラー回数なんかの生値は気にしてもしょうがないらしい)


では、速度回復のために出来る事を探してみようか。
まずは不要なファイルを削除してから使用頻度の低いファイルをSSDから追い出してみる。
CCleanerでテンポラリファイルを削除するついでにレジストリの方も整理して・・・MyDocumentのファイルも保存するだけのデータをHDDに移動。
HDDでは結構有効な手段ではあるのですが、trimしない限りSSD上の削除データは残るのであまり意味が無い気はする。やってみて改善されたかというと・・・

                                                                                                                                            • -
CrystalDiskMark 3.0.1 (C) 2007-2010 hiyohiyo Crystal Dew World : http://crystalmark.info/
                                                                                                                                            • -
MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s] Sequential Read : 123.130 MB/s Sequential Write : 105.120 MB/s Random Read 512KB : 118.858 MB/s Random Write 512KB : 94.917 MB/s Random Read 4KB (QD=1) : 15.635 MB/s [ 3817.1 IOPS] Random Write 4KB (QD=1) : 36.142 MB/s [ 8823.7 IOPS] Random Read 4KB (QD=32) : 16.942 MB/s [ 4136.2 IOPS] Random Write 4KB (QD=32) : 58.320 MB/s [ 14238.3 IOPS] Test : 1000 MB [C: 63.4% (47.2/74.5 GB)] (x5) Date : 2012/07/24 12:56:43 OS : Windows XP Home Edition SP3 [5.1 Build 2600] (x86)

15GBもデータを追い出したのに全く効果無し。まぁ、空き容量を確保できたと思えばいいか。


次にやってみるのは・・・デフラグSSDには無意味どころか悪影響を与える作業ではあるのですが、未使用領域を連続で作る事はOSのファイルシステム上では意味がある(はず)。*1
ついでにドライブ解析で断片化したファイルを探し、これをSSDから追い出せれば書き込み頻度を下げる事も出来るかもしれない。
ということで、Defragglerでファイル解析したところ

断片化率は13%とほぼ予想範囲内。しかし断片化したファイルの断片数が酷い事になっている。
この原因はcislogs.sdbやsmartd.logなどのlogファイルによってズタズタにされた隙間に大きなファイルが書き込まれているから。
想像以上にlogファイルの影響は大きそうなので、こいつらもHDDに追い出したいところ。
断片化の酷い(100以上の)logファイルをみてみると・・・

  • cislogs.sdb・・・Comodo Firewall。判りきっているblockの記録をしないように設定変更
  • smartd.log・・・smartmontoolsのlogファイル。もう監視しなくてもよさそうなのでサービス停止
  • software.log・・・レジストリハイブ(HKEY_LOCAL_MACHINE\SOFTWAR)の一部
  • v10_audittrace.db・・・Gladinet Cloud Desktop。現在未使用なので削除
  • BlackJumboDog.Log・・・BJD。設定で変更可能
  • sc1.log・・・SugarSync。sdk.conf内で指定されている? 要調査
  • TestPilotErrorLog.log・・・Firefoxのaddon。指定箇所がわからないのでとりあえずdisable
  • ntuser.dat.LOG・・・レジストリハイブ(HKEY_CURRENT_USERの一部)

logファイルをSSDに置かないほうが良さそうだと思う根拠は、ファイルを追記モードで開くから。ライトキャッシュに引っかからない程度の速さで同じセクタに書き込まれることになるので、ウェアレベリングが起こるタイミングが必ず発生します。
(どのくらいの頻度かはアルゴリズム次第)
他のファイルへアクセス中にlogファイルに書込みがあれば(見かけ上ですが)近くのセクタが使用される可能性が高いので、ファイルの断片化を促進させる要因にもなりますし。
(断片数が1000を超えるようなファイルが山ほどあるような状態でもなければ、断片化事態はSSDに悪影響を与えないでしょうが)


という事で、デフラグを掛けた結果。

                                                                                                                                            • -
CrystalDiskMark 3.0.1 (C) 2007-2010 hiyohiyo Crystal Dew World : http://crystalmark.info/
                                                                                                                                            • -
MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s] Sequential Read : 124.652 MB/s Sequential Write : 104.858 MB/s Random Read 512KB : 121.183 MB/s Random Write 512KB : 97.486 MB/s Random Read 4KB (QD=1) : 17.642 MB/s [ 4307.1 IOPS] Random Write 4KB (QD=1) : 36.579 MB/s [ 8930.4 IOPS] Random Read 4KB (QD=32) : 17.558 MB/s [ 4286.7 IOPS] Random Write 4KB (QD=32) : 58.304 MB/s [ 14234.3 IOPS] Test : 1000 MB [C: 63.5% (47.3/74.5 GB)] (x5) Date : 2012/07/25 9:08:50 OS : Windows XP Home Edition SP3 [5.1 Build 2600] (x86)

スコアは微妙・・・ ほんの少しだけRandom Read 4Kの数値が上がっているけど誤差範囲かも。
ではデフラグは無駄だったかというとそうでもなく、数字には表れていませんがこの頃感じていた「一瞬引っかかるような動作」は改善されています。


今回デフラグで書き込まれた量はおよそ160GB。電源の入っていた時間から考えると、デフラグを1回かけるとおよそ20日分寿命が縮まる、といえそうです。
20日分、とこれだけ書くと非常に悪い印象ですが、今の使い方だと書き換え回数から出したSSDの期待寿命は63〜125年分*2なので、書換え回数についてはほぼ気にする必要は無いでしょう。
では、デフラグをガンガンやって良いのかというとこれは×。
デフラグをするソフトはHDDなら普段使われていないはずの内周側(後ろ側)のセクタを優先して使用しているように見えます。デフラグ時データを一時的に書き換えるセクタはSSDが管理する未使用領域(ウェアレベリングで上書きしていい場所)からファイルシステムが管理する未使用領域(要らないデータでも移動が必要)になってしまいます。


じゃぁ、結局どうすればいいのよ?
あとやれるのはSSDのデータ全消去くらいかね。でも、これやるときはデータを全部移動してから書き戻す必要があるので面倒くさい。
Windows7にしてtrimを・・・って、IDEモードじゃ使えない。


もう、速度が我慢できなくなったら新しいSSDにデータを丸写しして、古いのはバックアップとして保存するしかないな!
(新しいPCにするのが最も正しい対処、というのは言わない約束だぞっ)

*1:想像ですが、連続読書きが長くなる→ATAコマンドの発行数が減る→チップセット上を流れる情報量が減る→バス帯域orサウスブリッジの処理能力に余裕が出来る、となるのでは? うちのPCは古いのでチップセットの処理能力が低そうです

*2:MLCの書換え回数3,000回×SSD容量120GB÷(現在までの書き込み量1,879GB÷電源ON時間5754時間)≒125.8年 毎回同じセクタが書き換えられてウェアレベリングが行われていると仮定しても半分の62.9年