1. Endurance Monitoring #2
6/4に天野氏が最後のイベント出演をしたとき、Intel SSDの寿命予測に関してE9、あるいはHost Writesとはまた別の方法を説明していた。これが詳しく出ている記事(インテル天野氏が最後のイベント出演、Z68とSSDを語る)を見ると、これまで明らかでなかったSMARTのE2、E3、E4の意味が出てくる。
天野氏の資料によれば、
#2: Intel Timed Media Wear metric
- Allows user or system designer to evaluate the endurance wear rate for a proposed application through following SMART attributesE2h/226 (Timed Workload Media Wear Indicator)
E3h/227 (Timed Workload Host Reads Percentage)
E4h/228 (Timed Workload Timer)
これは現在あるSSDの残り寿命がどれだけあるかを見るというより、ある負荷を与えたときにどれぐらい消耗するかを見るもののようで、
SMARTMON* tool can be used to report all SMART attributes using the following steps
- At command prompt, enter the following to list attributes:
smartctl -a /dev/hdx- Before using a workload, enter the following to reset the E2, E3 and E4 attributes:
smartctl -t vendor,0x40 -a /dev/hdx
This issues a SMART EXECUTE OFFLINE IMMEDIATE SUBCOMMAND 0x40- Run your workload for at least 60 minutes(できれば2時間)- Power-cycle the system(電源を入れなおし)- Re-enter this command to get the new values for E2, E3, and E4:
smartctl -a /dev/hdx
(注)丸括弧内は、元はIntel内部の資料だったものに天野氏が書き加えたものっぽい。
この「smartctl -a /dev/hdx」はドライブの情報を見るコマンドなので、まずこれでチェックした後で、「smartctl -t vendor,0x40 -a /dev/hdx」でE2、E3、E4をリセットし(たぶん0になる)、負荷を与えて再起動した後、再度「smartctl -a /dev/hdx」で変化を見ろ、という話(注)らしい。
(注)記事のキャプションでは少し違うことが書いてあるが、どうも分かってない感じがするので、資料の記述だけを信じる。
例として、E2が22、E3が99、E4が981のときは以下のようになる。
Lifetime using this specific workload 100% of the time 24/7 = 8.9 Years% Media Wearout during this run = 22(E2) /1024 = 0.021%
Work Ratio = 99(E3) % Read/Write
Workload Timer = 981(E4) mins
981分間の消耗率が0.021%ということから計算して(この負荷だけをかけ続けた場合の)寿命は8.9年になるとのこと。一応計算してみると、
{100 ÷ [22/1024 ÷ 981](分当たりの消耗率(%))}(全消耗にかかる分数) ÷ {60 × 24 × 365}(年間の分数) ≒ 8.687422167(全消耗にかかる年数)
……。数字が合わないが、22/1024 ≒ 0.021484375を0.021に切り下げてから計算すると、
{100 ÷ [0.021 ÷ 981](分当たりの消耗率(%))}(全消耗にかかる分数) ÷ {60 × 24 × 365}(年間の分数) ≒ 8.887801696(全消耗にかかる年数)
合った。
いずれにせよ、E3はこの計算には入ってこない。「書き込みの割合が増えると耐久性は一気に下がる」というのは、E3が下がる=書き込みの割合が上がる負荷のときは、逆にE2は上がるという逆相関関係の意味だろうか。
2. 実験
さて、手元のX25-M G2 80GBで試してみる。コマンドプロンプトを管理者として開き、smartmontoolsで「smartctl -t vendor,0x40 -a /dev/sda」を実行(「smartctl -a /dev/sda」で表示されるものも全て入っている)。
このSMARTの部分は、226(E2)、227(E3)、228(E4)とも65535になっている。ATTRIBUTE_NAMEは、天野氏の資料ではHDDと同じだったが、この最新版(5.41-1)ではIntel SSDに対応しているようで、資料とほぼ同じ名前が短縮されたものになっている。
これはsmartmontoolsのデータベースであるdrivedb.hにあるもので、この中を見るとIntelの情報は伝わっていることが分かる。
"-v 226,raw48,Workld_Media_Wear_Indic " // Timed Workload Media Wear Indicator (percent*1024)
"-v 227,raw48,Workld_Host_Reads_Perc " // Timed Workload Host Reads Percentage
"-v 228,raw48,Workload_Minutes " // 226,227,228 can be reset by 'smartctl -t vendor,0x40'
最後の部分では、「SMART EXECUTE OFF-LINE IMMEDIATE subcommand 0x40」に成功しているように見える。
が、この後再起動しようと何をしようと65535の数字は全く変わらなかった。このThinkPad X61s上のWindows 7 64bitのSATAのドライバをMicrosoftの標準ドライバ(6.1.7601.17514)とIntelのドライバ(10.1.0.1008)の間で変えたり、PATA(Compatibilityモード)に設定したりしても、効果なし。
念のため、CrystalDiskInfo(4.0.2a)で見た場合はこうなる。
E2、E3、E4はともにFFFFで、この16進数を10進数にすれば65535になるので、smartmontoolsと同じ(見ているデータが同じなのだから当然だが)。
あえて推測すれば、この4桁の16進数はどれも既に上限に達しているので、もう変わりようがない、ということではないかと……。これをリセットできない以上、先に進みようがない。
ということで、よく分からないまま終わる。
[追記1]
320シリーズのProduct Specificationの追補(Intel Solid-State Drive 320 Series Enterprise Server/Storage Application Product Specification Addendum)にはE2、E3、E4の説明があったので、320シリーズだけで有効なのかもしれない。
また、その説明によれば、値がFFFFなのは標準値(normalized value)ではそうなっているというだけらしい。
[追記2]
CrystalDiskInfo(4.1.0)からE2、E3、E4の名前に対応されているので補完。
日本語表記もばっちり。それぞれの詳細な意味は320シリーズの追補を読んでもらうということで。