「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に設定します。
- PERCの背後にあるNVMe: ドライブは、PERCコントローラーによって管理されている場合、SCSIデバイスとして認識されます。ほとんどのLinuxディストリビューションでは、SCSIデバイスのスケジューラーがデフォルトで設定されています。
mq-deadlineの詳細を確認してください。 - 競合: 「
mq-deadlineスケジューラーは、シーク時間を最適化し、ヘッドの動きを最小限に抑えるために、従来の機械式ドライブ用に設計されました。高速NVMeドライブの場合、このスケジューラーは不要なレイテンシーとCPUオーバーヘッドを追加し、総IOPSを調整します。
検証と即時調整
小さなI/Oワークロードで最大IOPSを実現するには、スケジューラーを none に設定する必要があります。
- 現在のスケジューラを確認します。
- スーパーユーザーとして次のコマンドを実行します(<sdX>を<sda>などのデバイス名に置き換えてください)。
cat /sys/block/{sdX}/queue/scheduler
出力例: (角括弧内はアクティブなスケジューラーを示します)。
- 次のコマンドを使用してスケジューラーを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 R7725xdArticle 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.