Linux RAID-0のパフォーマンスは1 GB /秒を超えてスケ​​ールアップしない


8

セットアップから最大スループットを取得するのに問題があります。ハードウェアは次のとおりです。

  • デュアルクアッドコアAMD Opteron(tm)プロセッサー2376
  • 16 GB DDR2 ECC RAM
  • デュアルAdaptec 52245 RAIDコントローラ
  • 2つのRAID-6アレイ(256KBストライプ)+スペアとして設定された48個の1 TB SATAドライブ。

ソフトウェア:

  • AMD-64用にコンパイルされ、NUMA用に最適化されたプレーンバニラ2.6.32.25カーネル。Debian Lennyユーザーランド。
  • ベンチマークの実行:disktest、bonnie ++、ddなど。すべて同じ結果になります。ここで矛盾はありません。
  • 使用されるioスケジューラー:noop。ええ、ここではトリックはありません。

これまでは、基本的に、複数の物理デバイスをストライピング(RAID 0)すると、パフォーマンスがほぼ直線的に向上すると想定していました。ただし、ここではそうではありません。

  • 各RAIDアレイは、約780 MB /秒の持続的な書き込み、および1 GB /秒の持続的な読み取りを実現します。
  • 2つの異なるプロセスで両方のRAIDアレイに同時に書き込むと750 + 750 MB /秒、両方から読み取ると1 + 1 GB /秒になります。
  • ただし、mdadmまたはlvmを使用して両方のアレイを一緒にストライプ化すると、パフォーマンスは約850 MB /秒の書き込みと1.4 GB /秒の読み取りになります。予想より少なくとも30%少ない!
  • ストライプアレイに対して2つの並列ライターまたはリーダープロセスを実行しても数値は向上しません。実際、パフォーマンスはさらに低下します。

ここで何が起こっているのですか?両方のドライブでddを同時に実行すると、総書き込み速度が実際に1.5 GB /秒に達し、読み取り速度が2 GB /秒を超えるため、基本的にバスまたはメモリの競合を除外しました。

つまり、PCIeバスではありません。それはRAMではないでしょう。RAWデバイスまたはXFSを使用してベンチマークの結果がまったく同じであるため、ファイルシステムではありません。また、LVMストライピングとmdストライピングのどちらを使用しても、まったく同じパフォーマンスが得られます。

どうしましたか?プロセスが最大可能なスループットに達するのを妨げているものは何ですか?Linuxストライピングに欠陥がありますか?他にどのようなテストを実行できますか?


なぜここでRAID 6 + 0を使用するのか理解できません。通常のRAID 1 + 0だけを使用できるのに、なぜそうするのでしょうか。
Chopper3

それは問題を解決しません。md / lvmは、RAID-10アレイをストライプ化するときと同じ動作を共有します。私は、特定のセットアップではなく、パフォーマンスの全般的な欠如を考慮しています。これはテストシステムであり、実稼働マシンではありません。
wazoox

5
RAID 0のストライプはRAID 6のストライプと一致していますか?一般に、階層化されたRAIDは非常に不安定な領域であり、特定のRAIDが同じ速度の単一のハードドライブであるかのように動作すると想定しても問題ありません。
JamesRyan

1
AdaptecカードをJBODとして構成し、ソフトウェア(md)でのみRAID-10を実行してみましたか?コントローラーのRAID機能の一部がドライバーによって処理されていて、2つの異なるRAIDをインターリーブするとパフォーマンスの利点が失われても、私は驚かないでしょう。一方、mdは、各ドライブへのアクセスを個別に最適化し、理論上の時間に近づけます(もちろん、他にボトルネックがない場合)
Javier

1
それは簡単な調査のようには聞こえません。一見、stripingプログラムがマルチスレッドアルゴリズムを介して実行できない可能性を優先します。のソフトRAIDを使用mdadmしているため、ソースを確認することをお勧めします。
e2-e4 2010

回答:


3

ベンチマークを実行しながら、latencytopを実行しようとしましたか?どのLinux syscallが原因かを確認するのに役立つ場合があります(存在する場合)。


2

私の知る限り、これはx8 PICe Gen 1カードです。このカードがサポートできる絶対最大データレートは、オーバーヘッドがゼロであると仮定して2Gバイト/秒です。アダプテック自体は、カードが最大でも1.2Gバイト/秒を維持できると主張しているだけで、それを超えています。

業界をリードするデュアルコアRAID on Chip(RoC)、x8 PCI Express接続、512MBのDDRキャッシュを搭載し、毎秒250,000以上のIOと1.2GB / sを提供します。

私の推測では、2つのRAID 0セットが独立して追加の負荷を個別に動作させることで、主張されたパフォーマンスを大幅に超えることができるため、ストライピングによってRAID CPU、またはRAMサブシステムに負荷がかかりすぎている可能性があります。 GByte / secの負荷でのコントローラー


1
よくわかりません... OPの言葉どおり、彼には2つのRAIDコントローラがあり、それぞれがRAID6アレイを処理しているようです。次に、RAID 0はソフトウェアでの2つのRAID 6アレイです。Linuxの組み込みカーネルRAIDを使用します。この場合、各コントローラーは負荷の半分しか処理しないので、各コントローラーは780MB /秒の書き込みと1GB /秒の読み取りを実行するだけで済みます。コントローラは、これが可能であることをすでに証明しています(ソフトウェアRAIDが追加される前)。それでは、PCI-Expressバス/ RAIDコントローラー自体が制限要因になるべきではありませんか?
Jesper M

公平な点-デュアルコントローラーのコメント(およびそれを強調するlvm \ mdの部分)を見逃しました。それがbus \ IOの制限ではないという彼の主張は、そのときかなり証明されています。
Helvick
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.