Chienomi

PNY CS2241の交換品のテストと、本当に高速なSSDとの比較

製品・サービス::hardware

PNY CS2241はread 5100MB/s, write 4200MB/sを公称するPCIe NVMe SSDである。

NTT-Xでセールされていたことから購入したが、まともに書き込むこともできず散々だった。

あまりにひどかったためカスタマーサポートに連絡したところ、交換するからショップに連絡してくれと言われ、NTT-Xに連絡して交換となった。 ちなみに、交換は1ヶ月以上かかった。

今回は実際に使用する前に、入念にテストする。 もし状況が変わらないのであれば、返金を打診するつもりである。

テスト手順

まず、ブロックデバイスに対する全域書き込みを5回行う。

#!/bin/ruby

$counter = Object.new
class <<$counter
  def succ
    @wrote += 1
  end
  
  attr , true
end
$counter.wrote = 0

BLOCK_SIZE = 1024 * 1024 * 4

Thread.new do 
  while sleep 5
    $stdout.print "#{$counter.wrote}\n"
  end
end

File.open(ARGV.shift, "w") do |disk|
  File.open("/dev/urandom") do |urandom|
    while val = urandom.read(BLOCK_SIZE)
      disk.write val
      $counter.succ
    end
  end
end

続いて、ブロックデバイスに対する全域読み出しを5回行う。

#!/bin/ruby

$counter = Object.new
class <<$counter
  def succ
    @read += 1
  end
  
  attr , true
end
$counter.read = 0

BLOCK_SIZE = 1024 * 1024 * 4

Thread.new do 
  while sleep 5
    print "#{$counter.read}\n"
  end
end

File.open(ARGV.shift, "r") do |disk|
  while val = disk.read(BLOCK_SIZE)
    $counter.succ
  end
end

このログを次のスクリプトでMB/s単位に変換し、gnuplotでグラフにする。

#!/bin/ruby

last = 0
count = 1

ARGF.each do |line|
  current = line.chomp.to_i * 4
  diff = current - last
  psec = diff / 5
  printf "%d %d\n", count, psec
  count += 1
  last = current
end

その後、ファイルシステムに対する実ファイル作成のシーケンシャルライトをテストする。 1回目はLUKS+Ext4で500GB、2回目はLUKS+Btrfsで800GB書き込む。

#!/bin/zsh

(( left = 800 * 1000 / 4 ))
while (( left > 0 ))
do
  (( ct = RANDOM / 10 ))
  (( ct < 1 )) && continue
  dd if=/dev/urandom of=$left.random bs=4M count=$ct
  (( left -= ct ))
done

ddの出力を次のスクリプトでgnuplotの入力に変換する。

#!/bin/ruby

size = 0.0
speed = nil

ARGF.each do |line|
  next unless line.include?("MB/s")
  line =~ %r{(\d+) bytes.*?([0-9.]+) MB/s}
  this_size = $1.to_i / 1_000_000_000.0
  speed = $2.to_f
  size += this_size
  printf("%.1f %.1f\n", size, speed)
end

テスト

ブロックデバイス書き込み

test 1
test 2
test 3
test 4
test 5

1回目は多少の上下があったものの、総じて約100MB/s程度で安定している。

ブロックデバイス読み出し

test 1
test 2
test 3
test 4
test 5

1回目は多少の上下があったものの、総じて約100MB/s程度で安定している。

540〜600MB/sの間で安定しており、これは以前と同じ。

ファイルシステム書き込み

Ext4 500GB
Btrfs 800GB

遅くとも100MB/sは越えている印象。

速度順にソートした場合、1回目

53.8 MB/s
62.1 MB/s
63.2 MB/s
70.8 MB/s
71.9 MB/s
75.3 MB/s
79.2 MB/s
79.3 MB/s
83.1 MB/s
85.4 MB/s
89.0 MB/s
91.9 MB/s
95.6 MB/s
96.1 MB/s
97.1 MB/s
97.8 MB/s
99.2 MB/s
99.2 MB/s
100 MB/s
101 MB/s
103 MB/s
103 MB/s
105 MB/s
106 MB/s
107 MB/s
109 MB/s
109 MB/s
111 MB/s
111 MB/s
112 MB/s
112 MB/s
112 MB/s
116 MB/s
116 MB/s
116 MB/s
117 MB/s
117 MB/s
121 MB/s
123 MB/s
125 MB/s
127 MB/s
130 MB/s
133 MB/s
134 MB/s
135 MB/s
136 MB/s
137 MB/s
137 MB/s
140 MB/s
144 MB/s
150 MB/s
152 MB/s
154 MB/s
171 MB/s
184 MB/s
190 MB/s
206 MB/s
223 MB/s
247 MB/s
256 MB/s
488 MB/s
508 MB/s
510 MB/s
519 MB/s
533 MB/s
534 MB/s
535 MB/s

2回目

68.3 MB/s
70.0 MB/s
78.2 MB/s
87.1 MB/s
90.1 MB/s
90.3 MB/s
94.6 MB/s
95.1 MB/s
95.3 MB/s
97.6 MB/s
97.8 MB/s
97.9 MB/s
99.0 MB/s
99.9 MB/s
101 MB/s
101 MB/s
101 MB/s
102 MB/s
102 MB/s
102 MB/s
102 MB/s
102 MB/s
103 MB/s
103 MB/s
103 MB/s
103 MB/s
103 MB/s
103 MB/s
104 MB/s
104 MB/s
104 MB/s
104 MB/s
105 MB/s
106 MB/s
106 MB/s
106 MB/s
106 MB/s
107 MB/s
107 MB/s
107 MB/s
107 MB/s
107 MB/s
107 MB/s
107 MB/s
108 MB/s
108 MB/s
108 MB/s
109 MB/s
109 MB/s
109 MB/s
109 MB/s
110 MB/s
110 MB/s
110 MB/s
111 MB/s
111 MB/s
112 MB/s
112 MB/s
112 MB/s
113 MB/s
114 MB/s
117 MB/s
117 MB/s
117 MB/s
118 MB/s
119 MB/s
119 MB/s
119 MB/s
119 MB/s
119 MB/s
122 MB/s
125 MB/s
125 MB/s
126 MB/s
126 MB/s
126 MB/s
126 MB/s
128 MB/s
130 MB/s
131 MB/s
133 MB/s
138 MB/s
138 MB/s
140 MB/s
140 MB/s
141 MB/s
141 MB/s
143 MB/s
153 MB/s
156 MB/s
158 MB/s
160 MB/s
164 MB/s
167 MB/s
171 MB/s
171 MB/s
175 MB/s
175 MB/s
177 MB/s
190 MB/s
192 MB/s
199 MB/s
207 MB/s
241 MB/s
257 MB/s
280 MB/s
329 MB/s
422 MB/s
425 MB/s
426 MB/s
436 MB/s
466 MB/s
501 MB/s
503 MB/s
533 MB/s
549 MB/s
551 MB/s
564 MB/s
568 MB/s

まとめ

書き込み100MB/sはSATAのQLCである860QVO程度だが、性能的には安定しているため使えそうだ。

通常、「ダメなSSD」を複数買うことはないため、救いのなさそうな製品の個体差をチェックできた意義は大きいが、結局PNYのSSDは避けたほうがいいという結論にかわりはない。 ただ、私自身は「どうやっても使い物にならないSSD」が、「性能は低いが一応使えるSSD」に変わったのは大きいが。

また、5GB/s級のSSDの現実という意味でも、多くの人が心に留めておくべきものだと思う。 既にいくつかのテストで述べているが、このSSDだけが極度に遅いわけではなく、実書き込み速度が200MB/sを安定して越える製品はPCIe SSDの中でも非常に優秀なものに限られてくる。

おまけ: 超優秀な製品の例

おまけとして、極めて優秀な製品のテスト結果を掲載し、CS2241の相対的な評価を示すことにしよう。

基本的にSSDの場合、あまり速くなくても良いので、安定していれば使うことができる。 シーケンシャルアクセスでばらつきが大きい製品は、ランダムアクセスでは止まってしまう場合が多い。 また、実ファイルシステムへの書き込みはメタデータの更新が発生することからシーケンシャルライトでもときどきはランダムアクセスが発生し、リードもライトも詰まってしまうことがある。

実ファイルシステムでのランダムライトで40MB/s以上、シーケンシャルなら200MB/s以上を維持し、停止せずに書き続けられるのが理想。遅くても30〜40MB/s程度出ていて安定しているなら一応使える。 この観点から言うとCS2241は「かろうじて使える」レベル。

Samsung 870EvoやSanDisk SSD Ultraは極めて優秀な製品だが、このテストを確立する前にデータで埋めてしまっているのでテストできない。

XPG SX8200

XPG SX8200は私が3枚も持っている、絶大な信頼を寄せる製品だ。 スペックが地味で安い、という製品だが、実際の性能は超優秀。

Writeは前半400MB/s強、後半350MB/s程度
Readは完璧な450MB/s

このテストはUSBエンクロージャ経由でしているし、書き込みのほうは/dev/urandomを使うものだ。 普通に書き込み処理をすると500MB/s程度で限界だし、USB3.2 Gen1の転送速度は625MB/sだから恐らく実際はもっと性能が出る。

そこで読み出しについては試しにPCIe M.2スロットに接続して追加テストしてみた。

M.2でのReadは2300MB/sの爆速

わぁお。

ほぼ2300MB/sを維持する高速転送で安定している。 素晴らしい安定感だ。

やはりSX8200は間違いなく、安価でありながら間違いのない選択肢だと言えるだろう。 よくあるPCIe4のSSDよりも速度が出ているので、外付けストレージとしてではなく普通にシステムストレージとして使うのにも良いだろう。

Monster Storage MS950

Monster Storage MS950 (PCIe4)は、YMTC232層のチップを採用するハイエンド製品の流れ品。 SLCキャッシュレスの安価な製品だが、チップ品質のゴリ押しでも素晴らしい性能を発揮する。

テストしたのはPCIe4の4TBで、当初2TBがものすごく高性能だったために4TBを導入したが、4TBが少し不安定で、2TBと比べると明らかに性能が見劣りしたため、問い合わせを行ったら初期不良として交換してもらえることになった。 これはその交換品をテストしたものだ。SX8200と違い、PCIe M.2スロットに装着した状態でテストしている。

Writeは前半400MB/s強に張り付き、恐らく測定上限
Readは最低でも1500MB/sで完全に異次元

書き込みは400MB/sに完全に張り付いており、SSDの実力というよりurandomを使った測定の限界の可能性が高い。 そして、400MB/sの書き込みでは性能低下を起こさない。実に見事。

読み出しは困惑するほどの異次元。 SX8200ほど整ってはいないように見えて、1500MB/s〜2600MB/sと他では見たことがない値になっている。 4TBの転送をわずか21分で終えている。

SX8200よりもばらつきがあるが、MS950は1605秒で4096GB、SX8200が850秒で2048GBを読み出しており、平均するとMS950のほうが1.05倍速い。 また、約1.2TBを2500MB/s程度で読み出せており、普通に使っている分には明らかにMS950のほうが速いだろう。