「PowerEdge:LinuxでPERCコントローラーの背後にあるNVMeドライブの小型I/Oパフォーマンスを最適化

Summary: Linuxでは、PowerEdge RAIDコントローラー(PERC)の背後で接続されているNVMeドライブが、小規模なI/Oワークロードのテスト中に予想よりも低いパフォーマンスを示す場合があります。 これは、OSがこれらのドライブをネイティブNVMeデバイス(/dev/nvmeXnX)ではなく、標準SCSIブロック デバイス(/dev/sdX)として識別するために発生します。この ID により、最適でない既定の I/O スケジューラが適用されます。 ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

根本原因

  • ネイティブNVMe: 直接接続されたNVMeドライブは、ハードウェアで管理される深いコマンド キューを使用します。Linuxは、OSレベルのボトルネックを回避するために、スケジューラーをデフォルトでnoneに設定します。
NVMe mq-期限
  • PERCの背後にあるNVMe: ドライブは、PERCコントローラーによって管理されている場合、SCSIデバイスとして認識されます。ほとんどのLinuxディストリビューションでは、SCSIデバイスのスケジューラーがデフォルトで設定されています。 mq-deadlineの詳細を確認してください。
  • 競合: mq-deadline スケジューラーは、シーク時間を最適化し、ヘッドの動きを最小限に抑えるために、従来の機械式ドライブ用に設計されました。高速NVMeドライブの場合、このスケジューラーは不要なレイテンシーとCPUオーバーヘッドを追加し、総IOPSを調整します。

検証と即時調整

小さなI/Oワークロードで最大IOPSを実現するには、スケジューラーを none に設定する必要があります。

  • 現在のスケジューラを確認します。
  1. スーパーユーザーとして次のコマンドを実行します(<sdX>を<sda>などのデバイス名に置き換えてください)。
cat /sys/block/{sdX}/queue/scheduler
出力例: (角括弧内はアクティブなスケジューラーを示します)。
NVMeスケジューラー
  1. 次のコマンドを使用してスケジューラーをnone (Runtime)に変更し、変更をすぐに適用します。
echo "none" > /sys/block/{sdX}/queue/scheduler

永続性の確保

上記の手動による変更は 永続的ではなく 、再起動すると元に戻ります。また /dev/sdX 識別子は、ドライブが追加または削除されると変更される場合があります。この変更を永続的にするには、デバイスのWWIDに基づいて UDEVルール を作成することをお勧めします。
 

注:大きなI/Oパフォーマンスにも影響する可能性があります。PERCコントローラーの背後にあるNVMeドライブの場合は、Linuxキュー スケジューラーをなしに設定することをお勧めします。

Affected Products

PowerEdge R470, PowerEdge R570, PowerEdge R670, PowerEdge R6715, PowerEdge R6725, PowerEdge R770, PowerEdge R770AP, PowerEdge R7715, PowerEdge R7725, PowerEdge R7725xd
Article Properties
Article Number: 000443257
Article Type: How To
Last Modified: 10 أبريل 2026
Version:  2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.