web-dev-qa-db-ja.com

最大のスループットを得るためのLinuxディスクキャッシュ動作のチューニング

ここで最大スループットの問題が発生しています。ノブを調整する方法についてアドバイスが必要です。バックアップ配布用に10Gビットのファイルサーバーを実行しています。これは、LSI MegaRAIDコントローラーでの2ディスクS-ATA2セットアップです。サーバーは24gigのメモリも取得しました。

最後にアップロードしたバックアップを最大スループットでミラーリングする必要があります。

「ホット」バックアップ用のRAID0は、約260 MB /秒の書き込みと275 MB /秒の読み取りを提供します。サイズが20GBのテスト済みtmpfsを使用すると、約1GB /秒になります。この種のスループットが必要です。

Linuxの仮想メモリサブシステムを調整して、最後にアップロードされたファイルを、ディスクに書き出さずに可能な限りメモリにキャッシュする(またはさらに良い方法は、ディスクに書き込んでメモリに保存する)方法を教えてください。

次のsysctlをセットアップしましたが、期待したスループットが得られません。

# VM pressure fixes
vm.swappiness = 20
vm.dirty_ratio = 70
vm.dirty_background_ratio = 30
vm.dirty_writeback_centisecs = 60000

これすべき理論的には、I/Oをキャッシュするために16GBを与え、ディスクへの書き込みまで数分待ちます。それでも、サーバーにベンチマークを行っても、書き込みに影響がないことがわかりますが、スループットは増加しません。

ヘルプまたはアドバイスが必要です。

12
Peter Meyer

設定した変数を見ると、主に書き込みパフォーマンスに関心があり、停電によるデータ損失の可能性を気にしていないようです。

遅延書き込みのオプションと、非同期書き込み操作でのライトバックキャッシュの使用のみが可能になります。同期書き込み操作では、ディスクへのコミットが必要であり、遅延書き込みは行われません。ファイルシステムが頻繁なページフラッシュと同期書き込みを引き起こしている可能性があります(通常、特にdata = journalモードのext3でのジャーナリングが原因です)。さらに、 「バックグラウンド」ページのフラッシュでも、キャッシュされていない読み取りと同期書き込み に干渉するため、速度が低下します。

一般に、何が起こっているかを確認するには、いくつかのメトリックを使用する必要があります。pdflushによるI/O作業の完了を待機しているコピープロセスが「D」状態になっているのを確認できますか?ディスクで大量の同期書き込みアクティビティが発生していますか?

他のすべてが失敗した場合は、バックアップをコピーする明示的なtmpfsファイルシステムを設定し、事後にディスクとデータを同期することを選択することもできます 自動的にinotifyを使用

読み取りキャッシュの場合、処理は大幅に単純になります。fcoretools fadvise utility があり、--willneedパラメーターを使用して、ファイルの内容をバッファーキャッシュに読み込むようにカーネルに指示します。

編集:

vm.dirty_ratio = 70

これにより、理論的にはキャッシュI/Oに16GBが与えられ、ディスクへの書き込みが完了するまで数分待機します。

これはテストシナリオに大きな影響を与えることはありませんが、理解に誤解があります。 dirty_ratioパラメータは、システムの総メモリの割合ではなく、システムのfreeメモリの割合です。

より詳細な情報を含む Write-Heavyロードのチューニング に関する記事があります。

6
the-wabbit

または、より多くのディスクを入手してください...使用しているドライブアレイ構成は、必要な全体をサポートしていません。これは、実際のニーズを満たすためにソリューションを再設計する必要がある場合です。これは単なるバックアップであると理解していますが、無愛想な修正を避けることは理にかなっています。

3
ewwhite

メモリキャッシュを使用すると、データが失われる可能性があります。これは、メモリ内にあり、ディスクに保存されていないデータに問題がある場合に失われるためです。

とはいえ、ファイルシステムレベルで実行するチューニングがあります。

たとえば、ext4を使用している場合は、マウントオプションを試すことができます。

バリア= 0

それ:「jbdコードでの書き込みバリアの使用を無効にします。書き込みバリアは、ディスク上のジャーナルコミットの適切な順序付けを強制し、揮発性ディスク書き込みキャッシュを安全に使用できるようにします。パフォーマンスが低下します。ディスクがバッテリバックアップされている場合または、バリアを無効にするとパフォーマンスが安全に向上する可能性があります。マウントオプション「barrier」と「nobarrier」を使用して、他のext4マウントオプションとの一貫性を保つためにバリアを有効または無効にすることもできます。

詳細: http://www.mjmwired.net/kernel/Documentation/filesystems/ext4.txt

1
Peter Senna