本日、ノボシビルスクのシステム管理者であるKonstantin Boyandinと共同執筆したゲスト投稿を公開します。
Konstantinは、Intel Optane SSDを搭載したサーバーを使用して、インメモリデータベース(memcached、対応するモードのRedis、Apache点火など)を操作しました。 テストで使用されたIntel Optane SSD DC P4800Xストレージデバイスは、IMDTとして接続され(Intel Memory Drive Technologyを使用)、OSおよびアプリケーションからRAMとしてアクセス可能です。
アプリケーションの別の領域は、仮想マシンの大規模なファームをホストするためのメモリドライブの使用です。 この場合の大量のRAMは、ソフトウェア製品のテストのコストを大幅に簡素化し、削減すると想定されています。
NVMeだけでは新しいものではありません。 メモリドライブモードのNVMeは新しいものです。 Konstantinが扱うプロジェクトの1つでは、大きなデータ配列の効果的な処理が重要です。 テスト結果は最も有望であり、Intel Memory Drive Technologyを使用したDRAMモードは、処理リソースを大幅に削減するのに役立ちます。
コンスタンティンの経験が読者にとって興味深いものになることを願っています。
タスクの説明
IMDTモードでIntel Optaneのパフォーマンスの問題を調査しました(Phoronixテストパッケージで提供されるRedisとmemcachedのパフォーマンステスト、および同じパッケージのRAM、ramspeedパフォーマンステストを実行しました)。 同じテストは、IMDTモードのIntel Optaneで機能し、比較のために、同じサーバーおよび同じOS上で切断されたIntel Optaneメディアで機能しました。
テストが実施されたサーバーは、CentOS 7.4(64ビット)および以下のハードウェアコンポーネントで実行されています。
- マザーボード:Supermicro X10SRi-F
- RAM:64Gb(8x8)、2133MHz
- プロセッサー:Intel®Xeon®E5-1650 v4(3.60GHz)
- ドライブ(SATA):Intel SSD DC S3700(480Gb)
- NVMeドライブ:Intel Optane SSD DC P4800X(375Gb)
テストの最初のフェーズは、再起動なしで実行されました。
指定されたDBMSについて簡単に説明します。
- Memcachedは 、キーと値の形式でデータを保存し、すばやく取得するために使用されます。 もともとは、2003年にLiveJournalブログサービスを高速化するために作成されました。
- Redis (「リモートディクショナリサーバー」、「リモートディクショナリサーバー」の略)は、高速データ処理に特化したネットワークジャーナルデータウェアハウスです。 この場合、WAL(緊急シャットダウンの場合はログを変更)をディスクにリセットせずに、RAMでのみ動作するように構成されます。
テストの目的:IMDTモードを使用し、NVMeを通常使用しない場合に、RAM内のストレージを使用する前述のDBMSのパフォーマンスを比較します。
仕事の準備
テストには、OS CentOS 7.4(64ビット)を実行するramspeed(RAM操作)、redis(Redisパフォーマンス)、mcperf(memcachedパフォーマンス)テストを選択しました。
どちらの場合も、テスト結果を歪めないように、OSはスワップファイルを使用しませんでした。
Phoronixテストスイート7.4パッケージ(およびそれに含まれるredis、mcperf)、およびramspeed 3.5パッケージを使用しました。
「IMDTモードのIntel Optane」(以降「IMDT」)の構成では、OSおよびアプリケーションには320GbのRAMが使用可能です。
Intel Optane(以下「RAM」と呼びます)を無効にした構成では、OSとアプリケーションに64GbのRAMがあります。
いずれの場合も、少なくとも3回テストを実行し、平均値を使用しました(算術平均)。 テストするすべてのサービスは、各テストの実行前に再起動されました。
測定、ケーススタディ、ユースケース
テストには、 memtestプログラムが使用されました 。 メモリは、テストの未使用領域の50〜75%の間隔からランダムに取得されました。
ramfsへの順次書き込み
最初のテストでは、ramfsとして接続されたRAMのパフォーマンスを測定し(順次記録)、次のコマンドを使用しました。
IMDT:
mkdir -p /mnt/ram mount -t ramfs -o size=300G ramfs /mnt/ram dd if=/dev/zero of=/mnt/ram/256gb.dat bs=4096 count=67108864
結果:
274877906944バイト(275 GB)コピー、184.756秒、1.5 GB /秒
RAM:
mkdir -p /mnt/ram mount -t ramfs -o size=62G ramfs /mnt/ram dd if=/dev/zero of=/mnt/ram/60gb.dat bs=4096 count=15728640
結果:
64424509440バイト(64 GB)コピー、18.0382 s、3.6 GB / s
ramfsファイルシステムは、残りのテストを実行する前にマウント解除されます。
Redisテスト
テストでは、1秒あたりに実行されるデータベースコマンド(SADD、LPUSH、SET、GET)の正確な数がチェックされました。
値が高いほど、パフォーマンスが向上します。
- IMDT-Intel Optane構成では、320GbのRAMがアプリケーションに使用可能です。
- RAM-Intel Optaneが無効になっている64 GBのRAM
Redis v3.2.10 | IMDT | RAM |
サッド | 1,748,516.67 | 1,727,879.00 |
LPUSH | 1 343 129.58 | 1,310,077.82 |
セット | 1,562,944.63 | 1 490 965.52 |
ゲット | 2,026,167.62 | 2 213 292,12 |
Mcperfテスト
テストでは、1つおよび5つの同時接続に対して実行される1秒あたりのコマンド数を確認しました(速度は各接続の1秒あたりのコマンド数で測定されます)。
Memcached v1.4.15 | IMDT | RAM | ||
1 | 5 | 1 | 5 | |
加える | 54 931.2 | 55 197.2 | 59 613.9 | 59 174.8 |
削除する | 85 361.3 | 83 259.4 | 89 181.6 | 88 235.4 |
追記 | 57 834.2 | 57 666.1 | 59 252.8 | 60 652.4 |
付け加える | 58,441.9 | 58 168.5 | 59 359.3 | 60 115.8 |
取り替える | 57 231.2 | 57 046.0 | 59 223.5 | 59 233.0 |
得る | 86 657.0 | 85 842.8 | 89 468.9 | 89 107.4 |
セット | 54 546.9 | 55 570.1 | 58 311.6 | 57 725.3 |
ラムスピード試験
テストは、同時に実行されている4つのスレッドに対して実施されました。 重要な場合、使用されるメモリブロックのサイズは4096バイトです。 値が高いほど(MB /秒)、パフォーマンスは向上します。
Ramspeed v3.5 (smp) | IMDT | RAM |
整数と読み取り | 104 548.28 | 112 535.63 |
整数と書き込み | 33,238.73 | 34 085.68 |
整数コピー | 30,063.08 | 30 105.97 |
整数スケール | 29 916.03 | 29,757.79 |
整数加算 | 33,356.14 | 33 192.47 |
整数トライアド | 33,235.32 | 33,184.95 |
浮動小数点と読み取り | 102 796.84 | 106 513.01 |
浮動小数点と書き込み | 33,826.04 | 34 037.25 |
浮動小数点コピー | 30,061.67 | 30,060.73 |
浮動小数点スケール | 30,094.47 | 29 964.92 |
浮動小数点加算 | 33 144.85 | 32 979.58 |
浮動小数点トライアド | 33 184.84 | 33,149.31 |
おわりに
テストにより、Intel OptaneをIMDTモードで使用する場合、ファイルへの書き込み速度の顕著な違い(標準のddコマンドを使用)にもかかわらず、一般に、メモリにデータを保存するDBMSのパフォーマンスは同等であることが示されました。
IMDTモードでのNVMeの利点は、技術的には、ほとんどのサーバーに適切な数のRAMモジュールをインストールして、同じ量の使用可能なRAMを取得できないことです。
コストパフォーマンスの観点から(Kingston DDR4 2133MHz RAM 8Gbモジュールの場合)、ボリュームで同等のIntel Optaneボリュームのコストは半分になります(これらのテストで使用されるOptaneはコストパフォーマンスの点で最適ではないことに注意してください)。
メモリドライブ(つまり、大量のRAM)を使用する両方のケースで、それほど多くのメモリをインストールする技術的な能力がない(そのようなマザーボードはありません)か、そのような構成の価格は少なくとも2倍高くなります(同等のRAMの量を計算する場合)。
メモリドライブをサポートするNVMEがより安くなる(現在では比較的希少であり、コストが高い)ため、コストパフォーマンスの面でのメリットがさらに明確になると想定できます。
IMDTモードでNMVeを使用することは、大量のRAMが必要な場合(Redis / memcachedなどの大規模データベース、同じホスト上の多数の仮想マシンなど)に有望です。
上記のテストでは、条件付きのパフォーマンスが考慮されました。 設計に近いテストを実行できる環境のシミュレーションの構築には時間がかかりすぎました。
記事の著者
Konstantin Boyandin、Provid Labs LLC、ノボシビルスク。
彼はソフトウェアの開発とシステム管理、およびセキュリティの問題に取り組んでいます。