SSD速度回復の続き

2010-10-06 / PC, 技術メモ / 0 Comments

1個前の記事で書いたSSDの速度回復スクリプトについて少しだけ説明したいとおもいます。
SteadyWorX SSDの速度回復。 で簡単な説明をしてくれてますが、私の方でも補足しておきます。

このスクリプトを使う際に設定するのは、スクリプト先頭部分の以下の部分となります。
ここで、作業対象のドライブ設定、書込むビット列などを定義しています。

#-------------- 初期設定 --------------
# 作業対象のドライブレターを指定
# 作業対象のSSDドライブを指定してください。
DRV = "C:"

# 領域埋めに使うデータの指定
# SLCは \x00  MLCは \xFF らしいですが詳細は不明です。
# 変更しない方が良いかもしれません。
# 0 Fillする場合は \x00
# 1 Fillする場合は \xFF
CODE = "\x00"

# 書き込み単位(KBytes)
# 通常は変更する必要はありません。
B_SIZE = 256

ここから先のコードがスクリプト本体となります。
ちょっとだけ説明を補足しておきます。

#-------------- 本体 --------------
require 'tempfile'

# ランダムな文字列を生成する関数
# デフォルトでは16文字の文字列を生成します。
def getRandomString (length = 16)
  a = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
  key = Array.new(length){a[rand(a.size)]}.join
  return key
end

# 作業ディレクトリ名の生成
# 既存ディレクトリと重複する可能性の低いランダム文字列を使用
# 作業ディレクトリは既存のディレクトリと重複しない専用のディレクトリが欲しいため
# ランダム文字列を使用してディレクトリ名を定義します。
temp_dir = DRV + "/" + getRandomString

# データブロックを生成
# 初期設定部分で定義したビット列を使用して B_SIZE Kbytesの
# データブロックを用意します。
block = CODE * (B_SIZE * 1024)

# ここからメイン処理なので例外を補足できるようにします。
begin
  # 作業ディレクトリを作成
  # ディレクトリが既に存在する場合は Errno::EEXIST が発生します。
  Dir::mkdir(temp_dir)

  # 作業用ファイルの作成
  # tempfileライブラリを使って一時ファイルを作成します。
  temp = Tempfile::new("tmp",temp_dir)

  # 空き容量が尽きるまでファイルを追記していく
  # 上の処理で作成した一時ファイルにデータブロックを追記します。
  # 無限ループで追記するので空き容量が無くなるまで処理が行われます。
  # 空き容量が無くなると例外が発生するので、無限ループから抜けます。
  while 1
    temp.write(block)
  end

rescue Errno::EEXIST
# 作業ディレクトリと同じ名前のディレクトリが存在した場合は、ここに飛んできます。
  # テンポラリ領域が存在した場合は作業中断
  # エラーメッセージを表示してスクリプトを終了します。
  puts("#{temp_dir}  exists!")
  exit()

rescue
# その他の例外が発生した場合はここに飛んできます。
# ディスクフル以外で例外が発生することは無いはず。

  # 作業に使ったファイルとディレクトリを削除します。
  temp.close(true)
  Dir::rmdir(temp_dir)
end

こんな感じで、空き容量に対して0 Fill(または1 Fill)を行っています。
怪しいことは行ってないので危険性はほとんど無いのではないかと思います。

Read More

SSDの速度を回復させる

2010-10-06 / PC, 技術メモ / 8 Comments

メインPCで使ってるSSDが最近遅くなってきました。
Win7+trim対応SSDなら速度低下は無いと思っていたのですが甘い考えだったようです。

SSDに0 Fillかければ速度回復するらしいのですが、起動ドライブとして使っているSSDなので
SecureEraseとかを使って0Fillするのは非常に面倒です。

というわけで、空き領域を00hで埋める 0Fillツールを作ってみました。(FFhの 1Fillも出来ます)
Rubyで書いてありますのでRubyがインストールされていれば動作するはずです。
ssd_recover.zip

スクリプトファイルの先頭部分でドライブ名など指定できますので、環境に合わせて変更してください。
動作試験は行なっていますが、使用は自己責任でお願いします。

動作原理は非常に簡単です。
一時ファイルを作って00hのデータをDisk容量が尽きるまで追記していくだけです。

作った本人も本当にこれで良いのか疑問でしたが、実際に実行してみたらSSDの速度が
見事に回復しました。

ツール実行前
———————————————————————–
CrystalDiskMark 3.0 x64 (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 :   242.305 MB/s
Sequential Write :    42.380 MB/s
Random Read 512KB :   103.888 MB/s
Random Write 512KB :    17.735 MB/s
Random Read 4KB (QD=1) :     4.456 MB/s [  1087.9 IOPS]
Random Write 4KB (QD=1) :     1.779 MB/s [   434.3 IOPS]
Random Read 4KB (QD=32) :     0.929 MB/s [   226.8 IOPS]
Random Write 4KB (QD=32) :     1.998 MB/s [   487.7 IOPS]

Test : 1000 MB [ C: 49.2% (29.3/59.6 GB)] (x1)
Date : 2010/10/02 16:39:52
OS : Windows 7  [6.1 Build 7600] (x64)

ツール実行後
———————————————————————–
CrystalDiskMark 3.0 x64 (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 :   244.794 MB/s
Sequential Write :   187.597 MB/s
Random Read 512KB :   157.433 MB/s
Random Write 512KB :   108.759 MB/s
Random Read 4KB (QD=1) :    12.425 MB/s [  3033.4 IOPS]
Random Write 4KB (QD=1) :    15.643 MB/s [  3819.0 IOPS]
Random Read 4KB (QD=32) :    12.859 MB/s [  3139.3 IOPS]
Random Write 4KB (QD=32) :    13.027 MB/s [  3180.3 IOPS]

Test : 1000 MB [ C: 49.2% (29.3/59.6 GB)] (x1)
Date : 2010/10/02 16:55:20
OS : Windows 7  [6.1 Build 7600] (x64)

こんな簡単なスクリプトで速度回復できちゃうもんなんですかね??

Read More

NXR-120/C その2

2010-09-06 / PC, 日記 / 0 Comments

ファームウェア5.8.0でIPv6ブリッジが出来ない不具合が改善したので導入してみました。
設定についてはサンプルコンフィグ通りで問題なく動作しました。

我家ではひかりTVを使用するためにIPv6ブリッジを使用しています。
以前に使っていたIX2015ではHD放送でブロックノイズが発生していましたが、NXR-120/Cではほとんど発生しなくなりました。
残念ながら1回発生したのを確認しましたが、以前の5分に1回程度発生するのに比べれば劇的な進化だと思います。

まだQoSの問題がありますがなかなか性能は良さそうです。

Read More

CactiでFutureNet NXR-120/C

2010-08-12 / PC, 技術メモ / 0 Comments

センチュリー・システムズのFutureNet NXR-120/Cから情報取得するCacti用テンプレートを作ってみました。
たぶん、NXR-130/Cでも使えるのではないかと思います。


こんな感じでセッション数、CPU負荷、メモリ使用量が取得できます。

たいした内容じゃないですが、テンプレートを添付しておきます。
FutureNet-NXR.zip

Read More

省電力機能

2009-12-13 / PC / 0 Comments

Windows7に完全移行してから早くも1月以上経過し、操作などの違和感とかは
無くなったのですが、電源管理のスリープ機能だけは馴染めないです。

Windows7のスリープはスリープとして設定した時間が無操作状態であれば
問答無用でスリープに突入してしまいます。
XPの時は無操作状態で設定時間が経過しても、CPUやHDDが使用されている
状態(アプリがバックグラウンドで動作中)であればスリープへの移行は
しなかったはずです。

このため時間のかかる作業を放置して離籍などすると、スリープになってしまって
作業が終わってないって状態になってしまいます。

これは非常に不便なので旧仕様のサスペンド機能を復活させてほしいです。

NASへバックアップファイルの送信してたらスリープに入っちゃうとか
勘弁してほしいです。

Read More