Ubuntu Weekly Recipe

第697回 AMD Ryzen 7 5800Xで学ぶ,Ubuntuにおけるシステムの動作確認

この記事を読むのに必要な時間:およそ 12 分

S.M.A.R.T.によるストレージの監視

ストレージの監視方法としては「S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology⁠⁠」を利用した方法が定番です。

Ubuntuデスクトップに最初から入っているGNOME DisksはS.M.A.R.T.の取得に対応しています。ただし,NVMe SSDだけは未対応です。またsmartmontoolsのGUIフロントエンドとして実装されているgsmartcontrolもNVMe SSDの情報は表示できません

このため,2021年時点ではUbuntuだとNVMe SSDのS.M.A.R.T.はCLIでしか取得できないと考えたほうが良さそうです。おそらく簡単にインストールできるもののうち,もっとも実装が進んでいるのがsmartmontoolsです。

$ sudo apt install smartmontools

データの取得はsmartctlコマンドを利用します。

$ sudo smartctl --all /dev/nvme0n1
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.13.0-22-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       WD_BLACK SN750 SE 1TB
Serial Number:                      2136GK454105
Firmware Version:                   711130WD
PCI Vendor/Subsystem ID:            0x15b7
IEEE OUI Identifier:                0x001b44
Total NVM Capacity:                 1,000,204,886,016 [1.00 TB]
Unallocated NVM Capacity:           0
Controller ID:                      0
NVMe Version:                       1.4
Number of Namespaces:               1
Namespace 1 Size/Capacity:          1,000,204,886,016 [1.00 TB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            001b44 4a4951e30d
Local Time is:                      Mon Dec 20 00:16:33 2021 JST
Firmware Updates (0x12):            1 Slot, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x005f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Log Page Attributes (0x1e):         Cmd_Eff_Lg Ext_Get_Lg Telmtry_Lg Pers_Ev_Lg
Maximum Data Transfer Size:         64 Pages
Warning  Comp. Temp. Threshold:     84 Celsius
Critical Comp. Temp. Threshold:     88 Celsius
Namespace 1 Features (0x02):        NA_Fields

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     5.60W    5.00W       -    0  0  0  0        0       0
 1 +     2.70W    3.00W       -    1  1  1  1        0       0
 2 +     1.90W    2.00W       -    2  2  2  2        0       0
 3 -   0.0370W       -        -    3  3  3  3     1900    1000
 4 -   0.0050W       -        -    4  4  4  4    16200   39000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         1
 1 -    4096       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        22 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    1%
Data Units Read:                    23,504,501 [12.0 TB]
Data Units Written:                 80,158,658 [41.0 TB]
Host Read Commands:                 245,508,577
Host Write Commands:                297,549,057
Controller Busy Time:               2,167
Power Cycles:                       16
Power On Hours:                     71
Unsafe Shutdowns:                   9
Media and Data Integrity Errors:    0
Error Information Log Entries:      27
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               26 Celsius
Temperature Sensor 2:               22 Celsius

Error Information (NVMe Log 0x01, 16 of 63 entries)
No Errors Logged

S.M.A.R.T.はいろいろとパラメーターが存在するため,きちんと理解するにはそれなりの知識が必要です。NVMe SSD固有の話のうち,わかりやすそうなのは「Percentage Used」でしょうか。これはメーカーが想定する寿命をどれくらい消費したかを示します。100%になると寿命です。ちなみに100を超える値も可能なようです。なお100を超えても動くことはありますが,メーカーの想定している寿命は過ぎているため,いつ故障してもおかしくないぐらいに思っておくと良いでしょう。

ベンチマークの実施

システムの情報を取得する方法を確認したら,あとはベンチマーク等で負荷をかけつつ動作を確認するだけです。ベンチマークの方法としては,過去の記事に掲載したような「LibreOfficeやカーネルのような大きめのプロジェクトをコンパイルしてみる」とかPhoronix Test Suiteようなベンチマークツールを動かす」など,いくつかの方法があります。

ちなみにストレージのベンチマークはCLI向けだとfioがよく使われます。もしGUIで実施したいなら最初から入っているGNOME Disksの他に,Windows向けのベンチマークでは有名なCrystalDiskMarkっぽいUIを備えたKDiskMarkも存在します。KDiskMarkはsnapパッケージとしてインストール可能です。

$ sudo snap install kdiskmark

図14 KDiskMarkによる1GiBデータのMB/s

図14

図15 KDiskMarkによる1GiBデータのレイテンシー

図15

図16 KDiskMarkによる64GiBデータのMB/s

図16

図17 KDiskMarkによる64GiBデータのレイテンシー

図17

今回のWestern DigitalのSN750 SEは,上位機種のSN850に対してPCIe 4.0対応はそのままに,DRAMキャッシュを省いてコントローラーを含めた価格を安くしたモデルです。要はキャッシュの代わりにホストのメモリーを利用して(Host Memory Buffer⁠⁠,PCIe 4.0の帯域で性能を稼ごうというポリシーのようです。結果的に上位モデルよりはそれなりに安いものの,性能自体もそれなりという代物になりました※5⁠。

※5
Host Memory Buffer(HMB)の最大サイズはnvmeモジュールのmax_host_mem_size_mbパラメーターで変更可能です。また,実際に指定できるサイズはSSD側で決まります。実際に設定された値はsudo dmesg | grep host memory bufferで確認できます。ベンチマークをとるなら,⁠Host Memory Bufferを超えるサイズを読み書きするときはどうなるのか」も見てみるといいかもしれません。

ちなみにSSDは空き容量が減るほど性能が落ちます。この手のベンチマークを取るときは,だいたい購入直後のストレージがほぼ空っぽのタイミングであるため,ベンチマークの結果はカタログスペックと遜色ない値になります。そこで,試しに空き容量を減らしてみるとどうなるかも確認してみましょう※6⁠。

※6
SSDへの書き込みはSSDの寿命に直結するため,普段のベンチマークにおいてこれを実施すべきかどうかは考えものです。

今回は1TiBのSSDなので,10GiBのファイルを80個作ってみることにします。これで800GiBなのでファイルシステムのメタデータなどを無視するとおよそ80%消費したことになります。

$ dd if=/dev/urandom of=temp/10G.dat bs=1M count=10240
$ for i in $(seq 80); do cp temp/10G.dat temp/10G-$i.dat; done
$ sudo sync

この状態で計測した結果が次のとおりです。小さいサイズの書き込み性能が1/4近くと劇的に落ちていることがわかりますね。

図18 残容量10%程度でのKDiskMarkによる1GiBデータのMB/s

図18

図19 残容量10%程度でのKDiskMarkによる1GiBデータのレイテンシー

図19

ちなみにファイルを削除しただけだと性能は元に戻りません。これはSSD側では実際には何も削除されていないためです。一般的にはfstrimコマンドを使って,未使用のブロックを削除するようNANDコントローラーに支持するコマンドが使われます。

$ sudo fstrim -av

ただし今回の計測方法だと,これでも性能は戻りませんでした。おそらくNVMe SSDで一番確実なのは,Secure Eraseする方法です。UbuntuからもSecure Eraseできなくもないものの,BIOS側でFrozen状態にしている結果,Secure Eraseできないケースもあります。今回のASRock B550 Steel Legendだと,UEFIメニューからToolタブの「NVME Sanitization Tool」を選択し,⁠Format」を実行することでデータが空の状態と同じ性能に戻りました。

このようにUbuntuにも,システム情報を表示するツールがたくさんあります。PCを新調しベンチマークを実施する際は,これらのツールを利用しながら,より多面的なデータの取得を試みてみると良いでしょう。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。