2
Linux RAID-0のパフォーマンスは1 GB /秒を超えてスケールアップしない
セットアップから最大スループットを取得するのに問題があります。ハードウェアは次のとおりです。 デュアルクアッドコア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ストライピングに欠陥がありますか?他にどのようなテストを実行できますか?