「ソリッドステートドライブ/NVMe」の版間の差分
Kusakata.bot (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
細 (NVME 省電力パッチ節の更新) |
||
48行目: | 48行目: | ||
NVME の電源管理が動作しているかテストするには、{{AUR|nvme-cli}} をインストールして {{ic|# nvme get-feature -f 0x0c -H /dev/nvme[0-9]}} を実行してみてください。 |
NVME の電源管理が動作しているかテストするには、{{AUR|nvme-cli}} をインストールして {{ic|# nvme get-feature -f 0x0c -H /dev/nvme[0-9]}} を実行してみてください。 |
||
+ | |||
+ | {{hc|# nvme get-feature -f 0x0c -H /dev/nvme0|2= |
||
+ | get-feature:0xc (Autonomous Power State Transition), Current value:0x000001 |
||
+ | Autonomous Power State Transition Enable (APSTE): Enabled |
||
+ | Auto PST Entries ................. |
||
+ | |||
+ | ... |
||
+ | }} |
||
ASPT が有効になっている場合 {{ic|Autonomous Power State Transition Enable (APSTE): Enabled}} と出力されます。表のエントリは各ステートに移行するときの待機時間を示しています。 |
ASPT が有効になっている場合 {{ic|Autonomous Power State Transition Enable (APSTE): Enabled}} と出力されます。表のエントリは各ステートに移行するときの待機時間を示しています。 |
||
− | ASPT が有効になっているのにステートが表に表示されない場合、高遅延のせいでデフォルトで有効になっていない可能性があります。{{ic|# nvme id-ctrl /dev/nvme[0-9]}} を使うことで NVME コントローラの未使用のステートを確認できます。ステートの遅延の合計 (enlat + xlat) が 25000 (25ms) よりも大きい場合、有効にするにはブートパラメータを使って {{ic|nvme_core}} モジュールの {{ic|default_ps_max_latency_us}} オプションで値を |
+ | ASPT が有効になっているのにステートが表に表示されない場合、高遅延のせいでデフォルトで有効になっていない可能性があります。{{ic|# nvme id-ctrl /dev/nvme[0-9]}} を使うことで NVME コントローラの未使用のステートを確認できます。ステートの遅延の合計 (enlat + xlat) が 25000 (25ms) よりも大きい場合、有効にするにはブートパラメータを使って {{ic|nvme_core}} [[カーネルモジュール]]の {{ic|default_ps_max_latency_us}} オプションで最低でもこれよりも高い値を渡す必要があります。ASPT が有効になり {{ic|# nvme get-feature}} の表にエントリが表示されるようになります。 |
Linux カーネル 4.13 では、省電力状態になってドライブが使えなくなりエラーが発生してシステムが不安定になることがあります。{{ic|1=nvme_core.default_ps_max_latency_us=5500}} ブートパラメータを追加することで一番低い省電力ステートが無効になります。 |
Linux カーネル 4.13 では、省電力状態になってドライブが使えなくなりエラーが発生してシステムが不安定になることがあります。{{ic|1=nvme_core.default_ps_max_latency_us=5500}} ブートパラメータを追加することで一番低い省電力ステートが無効になります。 |
||
+ | |||
+ | ==== Linux 4.10 における Samsung ドライブのエラー ==== |
||
+ | |||
+ | Linux 4.10 では、ドライブのエラーが発生してシステムが不安定になることがあります。 |
||
+ | 省電力状態の結果としてドライブが使えなくなるようです。 |
||
+ | [[カーネルパラメータ]] {{ic|1=nvme_core.default_ps_max_latency_us=5500}} |
||
+ | [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678184][https://askubuntu.com/questions/905710/ext4-fs-error-after-ubuntu-17-04-upgrade/906105#906105] は最低の省電力状態を無効にし、書き込みエラーを防止します。 |
||
== 参照 == |
== 参照 == |
2018年8月8日 (水) 23:12時点における版
関連記事
NVM Express (NVMe) は PCI Express バスから SSD に接続するための規格です。論理デバイスインターフェイスとして NVM Express は新規に設計されています。PCI Express SSD の低遅延と並行性を活かすために、最新の CPU やプラットフォーム、アプリケーションの並列性を複製するように開発されました。
目次
インストール
Linux の NVMe ドライバーはカーネルバージョン 3.3 から含まれています。NVMe デバイスは /dev/nvme*
下に認識されます。
NVMe のユーザースペースツールは nvme-cliAUR または nvme-cli-gitAUR に含まれています。
サポートされているファイルシステム、パフォーマンスの最適化・ディスクの読み書きの最小化などはソリッドステートドライブを見てください。
パフォーマンス
セクタサイズ
Advanced Format#HDD が 4k セクタを使用しているかどうか判断する方法を見てください。
Discard
ext4 や LVM を使用する普通のセットアップではデフォルトで Discard は無効になりますが、ファイルシステムによっては明示的に無効化する必要があります。
SSD メーカーの Intel はファイルシステムレベルで discard を有効にすることを非推奨としており、代わりに fstrim で定期的に TRIM を適用する方法を提案しています [1]。
エアフロー
NVMe SSD は負担時に高熱になることが知られており、特定の閾値に達すると性能が制限されます [2]。
テスト
デバイスの性能テストは hdparm で実行できます:
# hdparm -Tt --direct /dev/nvme0n1
省電力 APST
NVME 省電力パッチ
Andy Lutomirski は Linux における NVMe デバイスの省電力機能を修正するパッチセットをリリースしています。メインラインカーネル v4.11 でパッチはマージされました。古いカーネルを使用している場合、以下のパッケージでパッチを利用できます:
Linux-nvme — Andy の NVME 省電力 APST パッチが含まれたメインラインの Linux カーネル。
- https://github.com/damige/linux-nvme || linux-nvmeAUR[リンク切れ: パッケージが存在しません]
NVME の電源管理が動作しているかテストするには、nvme-cliAUR をインストールして # nvme get-feature -f 0x0c -H /dev/nvme[0-9]
を実行してみてください。
# nvme get-feature -f 0x0c -H /dev/nvme0
get-feature:0xc (Autonomous Power State Transition), Current value:0x000001 Autonomous Power State Transition Enable (APSTE): Enabled Auto PST Entries ................. ...
ASPT が有効になっている場合 Autonomous Power State Transition Enable (APSTE): Enabled
と出力されます。表のエントリは各ステートに移行するときの待機時間を示しています。
ASPT が有効になっているのにステートが表に表示されない場合、高遅延のせいでデフォルトで有効になっていない可能性があります。# nvme id-ctrl /dev/nvme[0-9]
を使うことで NVME コントローラの未使用のステートを確認できます。ステートの遅延の合計 (enlat + xlat) が 25000 (25ms) よりも大きい場合、有効にするにはブートパラメータを使って nvme_core
カーネルモジュールの default_ps_max_latency_us
オプションで最低でもこれよりも高い値を渡す必要があります。ASPT が有効になり # nvme get-feature
の表にエントリが表示されるようになります。
Linux カーネル 4.13 では、省電力状態になってドライブが使えなくなりエラーが発生してシステムが不安定になることがあります。nvme_core.default_ps_max_latency_us=5500
ブートパラメータを追加することで一番低い省電力ステートが無効になります。
Linux 4.10 における Samsung ドライブのエラー
Linux 4.10 では、ドライブのエラーが発生してシステムが不安定になることがあります。
省電力状態の結果としてドライブが使えなくなるようです。
カーネルパラメータ nvme_core.default_ps_max_latency_us=5500
[3][4] は最低の省電力状態を無効にし、書き込みエラーを防止します。