BigAdmin System Administration Portal
Feature Article
Print-friendly VersionPrint-friendly Version

OpenSolaris 上の PCI Express 最大ペイロードサイズの認識

Alan Adamson、2008 年 12 月

PCI Express (PCIe) ファブリック上で観測された最高性能は、プロトコルの効率に非常に関係します。 ヘッダーおよびその他のオーバーヘッドシンボルに対するペイロードの比率によって、パフォーマンスが理論上の最大値にどのくらい近づくかが決まります。 各ペイロード中のデータ量を増やすと、リンク帯域幅の上限により近くなると予想されます。

デフォルトでは、PCIe デバイスは 128 バイトを超えるペイロードを作成することができません。 これはデバイスの最大ペイロードサイズ (MPS) です。 PCIe 仕様では、電源投入状態の各デバイスが 128 バイトを超えない範囲でペイロードを作成したり、受け取ったりすることを決めています。 各装置の MPS はソフトウェアで調整可能なパラメータで、変更しない場合は 128 バイトのままです。

PCIe 仕様ではデバイスが 4096 バイトまでのペイロードをサポートできますが、それは必要ではありません。 有効な最大ペイロードサイズは、128、256、512、1024、2048 および 4096 バイトです。 各デバイスの最大ペイロードサイズは、各デバイスのデバイス機能レジスタによりエクスポートされます。

Nevada Build 99 以降の各デバイスの MPS を自動調整するように OpenSolaris は変更されています (この修正は将来の Solaris の更新に予定されています)。 OS は MPS を増やす前に各デバイスの能力を「認識している」必要があります。 オペレーティングシステムの起動時に、各ファブリック上のすべてのデバイスはそのペイロード能力についてスキャンされます。 これはルートコンプレックスと同様にエンドポイントおよびスイッチポート装置を含んでいます。 デバイスがすべてスキャンされた場合、すべてのデバイスによってサポート可能な最大ペイロードサイズは各デバイスのデバイスコントロールレジスタへプログラムされます。

適切な PCI Express 構成

上記で言及されるように、ファブリック上のすべての装置によりサポート可能なペイロードサイズが使用されます。 これは、もし 128 バイトのようなより低いペイロードのみをサポートできる USB ブリッジが同じファブリック内にインストールされていると、4096 バイトのペイロードサイズをサポートできる高性能記憶装置が制限される可能性があるということです。 この例では、高性能記憶装置はより最高値ではない 128 バイトが MPS としてプログラムされることになります。 より低い性能の装置とより高い性能の装置とのファブリックの共有が起こらないようにシステムが構成されるべきです。

ホットプラグ

PCIe Express 装置が有効なファブリック上にホットプラグされる時、MPS がファブリック経由でプログラムされた時の装置能力は反映されません。 装置の MPS 能力がファブリック経由のプログラムと同等かそれ以上ならば、その装置はその他のファブリックと同様の MPS を使用します。 装置の MPS 能力はファブリック上のその他の装置に低い場合、大きすぎるペイロード受信の回避のために再度の構成を行う必要があります。

装置の MPS はファブリック上のその他の装置に低い場合、その装置の MPS はサポートできる最高値にセットされます。 この装置により開始された書き込みについては、書き込みペイロードは装置の MPS を超えることはありません。それはファブリック上のその他の装置より低い(従って、サポート可能になります)です。 読み取りについては、読まれた完成ペイロードは、ルートコンプレックスにより作成されます。また、そのサイズはルートコンプレックスの MPS により決定されます。 ホットプラグの場合では、読まれた完成ペイロードがホットプラグされた装置にとって大きすぎて受信できない可能性もあります。 これは、装置の MPS を超えるデータの読み取りを発生させないことで解決できます。

デフォルトでは、装置によって開始される最大の読み取りは 512 バイトです。 これは最大読出リクエストサイズ (MRRS) 構成引数のプログラムにより変更することができます。 装置の MRRS が装置の MPS にセットされる場合、ルートコンプレックスが装置の MPS を超える読み込み完成ペイロードの生成することを回避します。 各読み取りのサイズが制限された場合、その結果として起した副作用は、OpenSolaris のリブートまでの、新規ホットプラグされた装置の読み込みパフォーマンスの低下かもしれません。

結論

PCI Express ファブリックが適切に構成された場合、OpenSolaris は PCIe プロトコル効率を増加させて、パフォーマンスを改善する能力を持っています。 特定の構成においては、PCIe 読み書き帯域幅がペイロードサイズを増加させることにより 10〜15% を改善することが認められました。 各ファブリックを構成する場合、システムコンフィギュレータは装置のペイロード能力をパフォーマンスパラメータのうちの一つとして含むべきです。

追加情報

次にいくつかの追加リソースがあります:

著者に関して

Alan Adamson はサンシステムグループのソフトウェアエンジニアです。

BigAdmin
  
 
BigAdmin Upgrade Hub