Skip to content
This repository has been archived by the owner on Jun 12, 2021. It is now read-only.
/ nvme-mate Public archive

Observes S.M.A.R.T. attributes of your NVMe SSDs and provides to Windows Performance Monitor. / 监视NVMe连接的SSD盘的S.M.A.R.T.属性,并将其信息提供给Windows性能监视器。

License

Notifications You must be signed in to change notification settings

ydipeepo/nvme-mate

Repository files navigation

日本語 | 中文 | English

NvmeMate

1.0.3

何これ

NvmeMate は NVMe SSD の S.M.A.R.T. 属性を監視し、その情報を Windows Performance Monitor に提供します。 標準の機能では SSD を監視できなかったので PoC マイナーのため作成しました。 Performance Monitor を使用しているため複数の Windows マシンに導入すれば横断的に SSD を監視できます。

動作中の画面

主な機能

NvmeMate は次の S.M.A.R.T. 属性をカウンターとして Performance Monitor に提供します:

  • Temperature (K / deg. C) 1
  • Available Spare 3
  • Available Spare Threshold 4
  • Percentage Used Estimate 5
  • Data Units Read (in LBAs) 32
  • Data Units Write (in LBAs) 48
  • Host Read Commands 64
  • Host Write Commands 80
  • Controller Busy Time (in minutes) 96
  • Power Cycles 112
  • Power-On Hours 128
  • Unsafe Shutdowns 144
  • Media Errors 160
  • Number of Error Information Log Entries 176
  • Warning Composite Temperature Time 192
  • Critical Composite Temperature Time 196

※ これらの属性はカウンタの制約により上位 64 ビットを切り捨てています。

将来実装を予定しています

  • Critical Warning が有効になった場合に Telegram BOT を通じて通知
  • サーマルスロットリングの閾値を Telegram BOT を通じて取得・設定
  • グラフもプロットする

動作環境

動作させるためには NVMe SSD が接続された 64 ビット Windows 10 が必要です。 また .NET 5.0 のランタイムがインストールされている必要があります。 Linux には対応していません。

クイックスタート

手っ取り早く始めるための手順です。

ダウンロード

.NET 5.0 Runtime がインストールされている必要があります:

最新のビルドはこちらからダウンロードできます:

または、自身でビルドし同じファイルを作成することも可能です。 Visual Studio 2019 上もしくは以下のコマンドでビルドします:

git clone https://github.com/ydipeepo/nvme-mate.git .
cd ./src/Ydi.NvmeMate
dotnet build --configuration Release

起動するには

ダウンロードもしくはビルドし生成された nvme-mate.exe を実行します。 コンソール画面が一つ現れたらそのまま Performance Monitor を起動 (perfmon.msc を実行) します。

PerfMon 画面 (1)

使用可能なカウンターとして NVMe S.M.A.R.T. が追加されていれば正常に動作しています。

PerfMon 画面 (2)

nvme-mate.exe が実行されている限りカウンタは更新され続けます。

終了するには

監視が不要になったときは nvme-mate.exeCtrl + C などで直接終了します。 Performance Monitor に登録されたカウンタは終了時に自動的に削除されます。

コマンドライン引数

より細かく制御したい場合、以下のコマンドライン引数を指定できます。

--help

ここに記載されている内容が標準出力に出力されます。

--lang <CULT_CODE>

CULT_CODE で指定した言語リソースを使用するよう強制します。 CULT_CODE は以下のどれかを指定します。

  • en-US: English
  • zh-CN, zh-Hans-CN: 简体中文
  • ja-JP: 日本語

指定しない場合はデフォルトでシステム言語を、システム言語に対応する言語リソースが存在しなければ英語を使用します。

--interval <MSEC>

S.M.A.R.T. 属性を監視しカウンタを更新する間隔をミリ秒で指定します。 指定しない場合は 1 秒 (--interval 1000) となります。

--plot

S.M.A.R.T. 属性をコンソールにプロットするようにします。

--scan

物理ドライブのスキャンのみを行いそのまま終了します。

--scan-range <END>

物理ドライブのスキャン範囲を指定します。 [0, END) の範囲がスキャンの対象になります。

--skip <PHYS_DRV_ID>

PHYS_DRV_ID で指定した番号の物理ドライブを無視します。 カンマで区切り複数指定できます。

例: --ignore 0,1,2 とすると 0, 1, 2 番目の物理ドライブを無視します。

--hydra

終了時に Performance Monitor に登録したカウンターを削除しないようにします。

--clean

Performance Monitor に登録したカウンターをすべて削除しそのまま終了します。 何らかの異常終了などで Performance Monitor にカウンタが残ってしまった場合に使用します。 なお、この引数は他のどの引数よりも優先します。

その他

文章中に記載のあるいくつかの単語についてより詳しいページがありましたのでリンクを掲載しておきます。(すべて外部のサイトです)

S.M.A.R.T. について

こちらのページが詳しいです:

Windows Performance Monitor について

こちらのページが詳しいです:

ライセンス

Ydi (@ydipeepo) が作成し、BSD-3-Clause の下公開しています。詳しくは別途付属の LICENSE.md をご覧ください。

ライセンスに準拠しますが、その上で直接デジタル資産を扱う環境で動作することを目的に作ったものです。 以下一点だけ追加の注意とともにご理解くださいますようお願いいたします:

https://github.com/ydipeepo/nvme-mate/releases 以外から配布されているものについて Ydi は一切関知しておりません。 公式以外からダウンロードが必要な場合は細心の注意を払いご自身の責任のもと管理実行してください。 公式ビルド済みバイナリが不安な場合はご自身でソースコードを確認しビルドいただくことも可能です。

もし気に入っていただけましたら、xch186mwc4aqc608a9nru8308ww0eftnp6panzyjlpqrfnvnnu8v4cjq8ely47 へ ご寄付いただけますと喜びます。その際は差支えなければ Ydi (@ydipeepo) までご一報ください。

About

Observes S.M.A.R.T. attributes of your NVMe SSDs and provides to Windows Performance Monitor. / 监视NVMe连接的SSD盘的S.M.A.R.T.属性,并将其信息提供给Windows性能监视器。

Topics

Resources

License

Stars

Watchers

Forks

Languages