同期書き込みは非常に遅いです。 Ubuntu 10.10、32ビット、ext4

同期書き込みは非常に遅いです。 Ubuntu 10.10、32ビット、ext4

私はUbuntu 10.10(32ビット、ext4パーティションを含む)を実行しているMacbook ProでActiveMQを実行しています。

Linux iker-laptop 2.6.35-23-generic-pae #40-Ubuntu SMP Wed Nov 17 22:32:51 UTC 2010 i686 GNU/Linux

ActiveMQで永続性を有効にすると、パフォーマンスが大幅に低下します。私は他のコンピュータで同じことをテストしましたが、その違いは2倍程度でした。

HDをテストするためのactiveMQツールがあり、結果は次のとおりです。

iker@iker-laptop:~/apps/apache-activemq-5.4.1$ java -classpath lib/kahadb-5.4.1.jar org.apache.kahadb.util.DiskBenchmark 

Benchmarking: /home/iker/apps/apache-activemq-5.4.1/disk-benchmark.dat
Writes: 
  146171 writes of size 4096 written in 11.074 seconds.
  13199.477 writes/second.
  51.560455 megs/second.

Sync Writes: 
  197 writes of size 4096 written in 10.006 seconds.
  19.688187 writes/second.
  0.07690698 megs/second.

Reads: 
  5589861 reads of size 4096 read in 10.001 seconds.
  558930.2 writes/second.
  2183.321 megs/second.

同期書き込み性能は不便です。一部の設定が間違っている可能性がありますが、HDパフォーマンスの問題が見つかった唯一のアプリはこのアプリです。

hdparm は期待値を生成します。

iker@iker-laptop:~$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   6282 MB in  2.00 seconds = 3141.73 MB/sec
 Timing buffered disk reads:  240 MB in  3.00 seconds =  79.88 MB/sec

答え1

同期IOの主な制限要因は、ハードディスクのスループットではなく、書き込みが実行されてからディスクにコミットされるまでの時間です。この点で、ハードドライブと最も関連性の高いパフォーマンス指標は理想的なスループットではなく、ハードドライブのナビゲーション時間です。

ハードウェアが不利に動作するという事実に加えて、カーネルも同様です。ベンチマークできる場合(アプリケーションアプリケーションで得られるものとはまったく異なりますが)、いくつかの改善が見られると思います。 )リアルタイムIOスケジューリングクラスで実行されます。デフォルトでは、アプリケーションは最良のカテゴリに予約されているため、書き込み待ち時間が長くなる可能性があります。ディスクにアクセスすると他のアプリケーションのパフォーマンスに悪影響を及ぼす可能性があるため、リアルタイム予約クラスを使用する責任はユーザーにあります。

全体的に、私はあなたが見ている同期書き込みパフォーマンスに深刻な問題がないと思います。同期IOは、非同期IOに比べてパフォーマンスが非常に低下することがよくあります。

参考までに、activemqとsyncioのクイックGoogleは次のものを提供しています。次のような:

パフォーマンス上の理由で永続メッセージを使用している場合でも、できるだけ早くブローカーにメッセージをストリーミングできます。

答え2

cfq I / Oスケジューラは、これらのテストでパフォーマンスが低下する傾向があります。以前の ionice 提案に加えて、締め切り I/O スケジューラに切り替えることもできます (root で始まるかelevator=deadlineroot として実行for n in /sys/block/sd*/queue/scheduler ; do echo deadline > $n ; done)。

答え3

同期書き込みは、それ自体が返される前に書き込みがコミットされたことを確認する必要があります(成功的にまたはエラーで)。これは意図的に設計されており、回転する金属ディスクに関連する高いレイテンシのため、本質的に同期書き込み速度が遅くなります(ディスクRAMキャッシュは計算されません)。

非同期書き込みは通常RAMに書き込まれ、OSは後でそれをディスクにコミットします(後で通常は数秒以下(ZFSは5x /秒または5秒ごと)と思います)。ディスク探索時間はミリ秒単位で測定され、RAM探索時間はナノ秒単位で測定されます。 1000倍差が出ますね。

続行する前にデータを永久に保存することが絶対に重要で、停電の可能性の1秒遅れが許容できない場合は、同期書き込みを使用してください。

それ以外の場合は、常に非同期書き込みを使用してください。

答え4

同期書き込みは遅いので、すべてをバッファリングします。見てIOPSWikipediaでは、一般的な7,200rpm HDDのIOPSが75-100であることがわかります。今見てくださいMacBook Proの技術仕様、5,400rpmのハードドライブがあります。これは最大75%のパフォーマンスに対応するため、ノートパソコンで最大50〜75 IOPSしか見ていません。

MQはデータ元帳と会計元帳を作成し、ActiveMQベンチマークに表示される20 IOPSを取得できます。

2つのオプションがあります。テストしてみてください。一時ファイルシステムつまり、メモリ内のファイルシステムを使用するか、SSDを使用します。通常、同期書き込みを使用するサーバーには、15,000rpmのディスクを含むかなりのSAS / SCSI RAIDアレイがあります。アレイに追加のディスクを追加することはパフォーマンスを向上させるためのものであり、容量を増やすためのものではありません。

関連情報