NCache パフォーマンスベンチマーク

2万Ops/秒

(5ノードクラスター)

 

エグゼクティブサマリー

NCache 容易かつコスト効率よく、パフォーマンスを線形的に拡張・向上させるのに役立ちます。世界中のフォーチュン500企業が信頼を寄せています。 NCache 13 年以上にわたり、データ ストレージとデータベースに関連するパフォーマンスのボトルネックを解消し、.NET アプリケーションをエクストリーム トランザクション処理 (XTP) に拡張してきました。

この文書では NCache 5.0に最新のAPIといくつかの新機能を追加し、.NETアプリケーションで実現できる線形スケーラビリティと卓越したパフォーマンスを実証しました。この実験では、モデムをバンドルしました。 NCache パイプラインを有効にしたパーティションキャッシュトポロジを備えたAPI。データはすべてのキャッシュサーバーに完全に分散され、クライアントは読み取りおよび書き込みリクエストのためにすべてのサーバーに接続します。

このベンチマークでは、 NCache クラスターは線形にスケーリングでき、達成しました 2つのキャッシュサーバーノードのみを使用した5秒あたりXNUMX万トランザクション。 また、次のことを示します NCache 大規模なクラスターでもサブマイクロ秒の遅延を実現できます。 このホワイトペーパーでは、ベンチマーク設定、ベンチマークを実行するための手順、構成のテスト、構成のロード、および結果について説明します。 これで実際のベンチマーク実験を見ることができます ビデオ.

 

ベンチマーク設定の概要

ベンチマークの設定を確認しましょう。このテストではAWS m4.10xlargeサーバーを使用します。このサーバーはXNUMX台あります。 NCache キャッシュクラスターを構成するサーバーです。15台のクライアントサーバーがあり、そこからアプリケーションを実行してこのキャッシュクラスターに接続します。

オペレーティングシステムとしてWindows Server 2016(データセンターエディション、64ビット)を使用します。 NCache 使用しているバージョンは5.0 Enterpriseです。このベンチマーク設定では、 パーティションキャッシュトポロジパーティションキャッシュトポロジでは、すべてのデータがすべてのキャッシュサーバーのパーティションに完全に分散されます。また、すべてのクライアントはすべてのサーバーに接続して読み取りおよび書き込みリクエストを処理し、すべてのサーバーを同時に利用します。このトポロジではレプリケーションは有効になっていませんが、次のような他のトポロジもあります。 パーティション化されたレプリカトポロジ レプリケーション サポートが装備されています。

NCache ベンチマークの設定
図1- NCache ベンチマークの設定

私たちは パイプライン 有効にしたのは、 NCache 5.0。クライアント側で実行時に発生するすべてのリクエストを蓄積し、サーバー側でそれらのリクエストを一括適用するという仕組みです。蓄積はマイクロ秒単位で行われるため、非常に最適化されており、トランザクションの負荷要件が高い場合に推奨される構成です。

ここでは、ハードウェア、ソフトウェア、負荷構成を含むベンチマーク設定の概要を簡単に説明します。

ハードウェア構成:

クライアントとサーバーの詳細
(仮想マシン)
AWS m4.10xlarge: 40 コア、160 GB メモリ、ネットワーク - 10 Gbps イーサネット
サーバーノード数 5
クライアントノード数 15

ソフトウェア構成:

オペレーティングシステム Windows Serverの2016
データセンターエディション – x64
NCache 5.0
クラスタートポロジ パーティションキャッシュ構成

ロード設定:

キャッシュサイズ 4 GB
データサイズ サイズ100のバイト配列
Total Items 1,000,000
パイプライン 使用可能
取得/更新比率 80:20
スレッド 1280
アプリケーションインスタンス クライアントマシンごとに 2 つのインスタンス、合計 30 のインスタンス
 

データ入力

ベンチマーク環境のセットアップ後、キャッシュクラスターに1万アイテムのデータを配置します。クライアントアプリケーション(Cache Item Loader)を実行し、キャッシュに接続して1万アイテムを追加します。1つのクライアントがすべてのキャッシュサーバーに接続し、キャッシュクラスターにXNUMX万アイテムを追加します。その後、読み取りおよび書き込みリクエストを開始できます。

あなたはこれを使用することができます NuGet パッケージ – NCache SDK クライアント マシンに SDK をインストールし、クライアントとサーバー間のパイプラインを構成し、負荷生成アプリケーション (GitHub) をデプロイして、キャッシュ クラスターに 1 万個のキャッシュ項目を設定します。

 

トランザクションロードの構築

アプリケーションを実行して、このキャッシュクラスタに80%の読み取り操作と20%の書き込み操作でトランザクション負荷をかけます。Perfmonカウンタを使用して、すべてのアクティビティを監視できます。まず、各クラスタに10個のクライアントインスタンスを接続します。 NCache 1 秒あたりのフェッチと更新のアクティビティがあるサーバー。

 

ステージ1 1万オペレーション/秒のトランザクション負荷

ステージ 1 - 1 万オペレーション/秒のトランザクション負荷
図2 - ベンチマーク中に取得された実際のスナップショット - 5ノード、10クライアントインスタンス

スクリーンショットでは、10ノードのクラスタに5のクライアントインスタンスが接続している場合、180,000秒あたりのリクエスト数は190,000万から5万件であることがわかります。 NCache 並行して動作しているサーバーでこれらのリクエストを蓄積すると、このキャッシュ クラスターによるリクエスト数は 1 秒あたり XNUMX 万件に達します。

メモリとCPUの使用効率は高く、平均マイクロ秒/キャッシュ操作は10マイクロ秒弱です。ステージ1は完了し、キャッシュクラスターから毎秒XNUMX万回の操作を達成しました。

ステージ1 – 概要データシート
クラスター内のキャッシュサーバーの合計数 5
接続されたクライアントインスタンスの合計数 10
1秒あたりのリクエスト数 / ノード 180,0000〜190,000
合計リクエスト数 - キャッシュクラスター 950,000〜1,000,000
% プロセッサ時間(最大) 20%
システムメモリ 4.2 GB
レイテンシ(マイクロ秒/キャッシュ操作) 10マイクロ秒/操作
 

ステージ2 1.5万オペレーション/秒のトランザクション負荷

1万TPSを達成したので、次はアプリケーションインスタンスを増やしてトランザクション負荷を高めます。アプリケーションが実行されると同時に、20秒あたりのリクエスト数が増加します。クライアント数を300,000に増やします。この構成では、以下のスクリーンショットに示すように、インスタンスあたり1.5秒あたりXNUMX万リクエストに達しています。このキャッシュクラスターで、XNUMX秒あたりXNUMX万リクエストを達成しました。

ステージ 2 - 1.5 万オペレーション/秒のトランザクション負荷
図3 - ベンチマーク中に取得された実際のスナップショット - 5ノード、20クライアントインスタンス

各サーバーの300,000秒あたりのリクエスト数は200,000万件です。フェッチは50,000秒あたり100,000万件強、更新は4万~3万件程度で、キャッシュ操作あたりの平均マイクロ秒は4マイクロ秒未満です。これは、パイプラインの効果と合わせてレイテンシが非常に低いことを考えると驚くべきことです。クライアント側からのトランザクション負荷が高い場合、パイプラインは非常に有効で、レイテンシを削減し、スループットを向上させます。そのため、パイプラインを有効にすることを推奨しています。さらに、キャッシュ操作あたりの平均マイクロ秒は現在XNUMX~XNUMXマイクロ秒程度です。

ステージ2 – 概要データシート
クラスター内のキャッシュサーバーの合計数 5
接続されたクライアントインスタンスの合計数 20
1秒あたりの平均リクエスト数 / ノード 300,000
合計リクエスト数 - キャッシュクラスター 1,500,000
% プロセッサ時間(最大) 30%
システムメモリ 6 GB
レイテンシ(マイクロ秒/キャッシュ操作) 3~4マイクロ秒/操作
 

ステージ3 2万オペレーション/秒のトランザクション負荷

さらにアプリケーションインスタンスをいくつか実行して負荷を上げてみましょう。30秒あたりのリクエスト数もさらに増加し​​ます。XNUMXのクライアントインスタンスをすべて接続します。 NCache サーバー。

下のスクリーンショットを見ると、400,000秒あたりXNUMX万件のリクエストに成功していることがわかります。 NCache サーバーは5台あります NCache サーバーの数が増えるため、1秒あたり200万件のトランザクションが発生します。 NCache キャッシュクラスター。キャッシュ操作あたりの平均マイクロ秒数は3マイクロ秒未満です。また、システムメモリとプロセッサ時間はどちらも40~50%の使用率で、制限値をはるかに下回っています。

ステージ 3 - 2 万オペレーション/秒のトランザクション負荷
図4 - ベンチマーク中に取得された実際のスナップショット - 5ノード、30クライアントインスタンス

レイテンシは2~3マイクロ秒/オペレーションとなり、前回の結果から改善されました。フェッチと更新が混在し、CPUとメモリリソースが効率的に利用されていることがわかります。結論として、 NCache 線形に拡張可能です。では、スケーラビリティの数値を確認してみましょう。

ステージ3 – 概要データシート
クラスター内のキャッシュサーバーの合計数 5
接続されたクライアントインスタンスの合計数 30
1秒あたりの平均リクエスト数 / ノード 400,000
合計リクエスト数 - キャッシュクラスター 2,000,000
% プロセッサ時間(最大) 60%
システムメモリ 6 GB
レイテンシ(マイクロ秒/キャッシュ操作) 2~3マイクロ秒/操作
 

ベンチマーク結果

私たちはそれを実証することができました NCache 線形にスケーラブルであり、ベンチマークを実行した後に次の結果を達成できました。

図5- NCache 5.0 スループット(5秒あたりのトランザクション数)– XNUMXノードクラスター
図5- NCache 5.0 スループット(5秒あたりのトランザクション数)– XNUMXノードクラスター
図6 - ノードあたりのスループット - 5ノードクラスタ
図6 - ノードあたりのスループット - 5ノードクラスタ
図7 – キャッシュ操作あたりの平均レイテンシ(マイクロ秒)
図7 – キャッシュ操作あたりの平均レイテンシ(マイクロ秒)
図8 – 合計オペレーション数/秒 - 5ノードクラスタ
図8 – 合計オペレーション数/秒 - 5ノードクラスタ
 

結論

  1. 線形スケーラビリティ: 5で NCache サーバーを増設することで、2秒あたりXNUMX万リクエストの処理能力を達成できました。サーバーを増設することで、リクエスト処理能力が向上します。 NCache.
  2. 低レイテンシと高スループット: NCache 大規模なクラスター サイズでも、サブ マイクロ秒 (2.5 ~ 3 マイクロ秒) のレイテンシを実現します。 NCache 大規模環境でも低レイテンシと高スループットの要件を満たすのに役立ちます。パイプライン処理によってレイテンシが非常に低くなっています。クライアント側からのトランザクション負荷が高い場合、パイプライン処理は非常に有効で、レイテンシを低減し、スループットを向上させます。

次はどうする?

お問い合わせ

電話

+1 214-619-2601 (米国)

+44 20 7993 8327 (英国)

©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。